From cdd7b2d44b48159e8f48aaa560e48e2af2a137f2 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Mon, 22 May 2023 13:50:58 -0400 Subject: [PATCH 001/788] Enhanced glances widget (#1534) * Enhanced glances widget (resource match) * Make widget clickable + cleanup helperrs * Prevent unused glances API calls --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- public/locales/en/common.json | 6 +- src/components/widgets/glances/glances.jsx | 90 +++++++++++++++++++--- src/pages/api/widgets/glances.js | 28 +++++-- src/utils/config/widget-helpers.js | 24 +++--- 4 files changed, 115 insertions(+), 33 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index b725132a..7f1a86de 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -357,10 +357,14 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", + "load": "Load", "wait": "Please wait", "temp": "TEMP", + "warn": "Warn", "uptime": "UP", + "total": "Total", + "free": "Free", + "used": "Used", "days": "d", "hours": "h" }, diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index fc0d21ed..85dd44c0 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,11 +1,14 @@ import useSWR from "swr"; +import { useContext } from "react"; import { BiError } from "react-icons/bi"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; -import { FiCpu } from "react-icons/fi"; +import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; import UsageBar from "../resources/usage-bar"; +import { SettingsContext } from "utils/contexts/settings"; + const cpuSensorLabels = ["cpu_thermal", "Core", "Tctl"]; function convertToFahrenheit(t) { @@ -14,6 +17,7 @@ function convertToFahrenheit(t) { export default function Widget({ options }) { const { t, i18n } = useTranslation(); + const { settings } = useContext(SettingsContext); const { data, error } = useSWR( `/api/widgets/glances?${new URLSearchParams({ lang: i18n.language, ...options }).toString()}`, { @@ -88,8 +92,16 @@ export default function Widget({ options }) { } const tempPercent = Math.round((mainTemp / maxTemp) * 100); + let disks = []; + + if (options.disk) { + disks = Array.isArray(options.disk) + ? options.disk.map((disk) => data.fs.find((d) => d.mnt_point === disk)).filter((d) => d) + : [data.fs.find((d) => d.mnt_point === options.disk)].filter((d) => d); + } + return ( -
+
@@ -97,7 +109,7 @@ export default function Widget({ options }) {
{t("common.number", { - value: data.quicklook.cpu, + value: data.cpu.total, style: "unit", unit: "percent", maximumFractionDigits: 0, @@ -105,7 +117,20 @@ export default function Widget({ options }) {
{t("glances.cpu")}
- + {options.expanded && ( + +
+ {t("common.number", { + value: data.load.min15, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} +
+
{t("glances.load")}
+
+ )} +
@@ -113,18 +138,46 @@ export default function Widget({ options }) {
- {t("common.number", { - value: data.quicklook.mem, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, + {t("common.bytes", { + value: data.mem.free, + maximumFractionDigits: 1, + binary: true, })}
-
{t("glances.mem")}
+
{t("glances.free")}
- + {options.expanded && ( + +
+ {t("common.bytes", { + value: data.mem.total, + maximumFractionDigits: 1, + binary: true, + })} +
+
{t("glances.total")}
+
+ )} +
+ {disks.map((disk) => ( +
+ +
+ +
{t("common.bytes", { value: disk.free })}
+
{t("glances.free")}
+
+ {options.expanded && ( + +
{t("common.bytes", { value: disk.size })}
+
{t("glances.total")}
+
+ )} + +
+
))} {options.cputemp && mainTemp > 0 && (
@@ -140,6 +193,19 @@ export default function Widget({ options }) {
{t("glances.temp")}
+ {options.expanded && ( + +
+ {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
+
{t("glances.warn")}
+
+ )}
)} @@ -160,6 +226,6 @@ export default function Widget({ options }) { {options.label && (
{options.label}
)} - +
); } diff --git a/src/pages/api/widgets/glances.js b/src/pages/api/widgets/glances.js index 46be14a0..7605144d 100644 --- a/src/pages/api/widgets/glances.js +++ b/src/pages/api/widgets/glances.js @@ -40,20 +40,32 @@ async function retrieveFromGlancesAPI(privateWidgetOptions, endpoint) { } export default async function handler(req, res) { - const { index } = req.query; + const { index, cputemp: includeCpuTemp, uptime: includeUptime, disk: includeDisks } = req.query; const privateWidgetOptions = await getPrivateWidgetOptions("glances", index); try { - const quicklookData = await retrieveFromGlancesAPI(privateWidgetOptions, "quicklook"); - + const cpuData = await retrieveFromGlancesAPI(privateWidgetOptions, "cpu"); + const loadData = await retrieveFromGlancesAPI(privateWidgetOptions, "load"); + const memoryData = await retrieveFromGlancesAPI(privateWidgetOptions, "mem"); const data = { - quicklook: quicklookData + cpu: cpuData, + load: loadData, + mem: memoryData, + } + + // Disabled by default, dont call unless needed + if (includeUptime) { + data.uptime = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime"); + } + + if (includeCpuTemp) { + data.sensors = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors"); + } + + if (includeDisks) { + data.fs = await retrieveFromGlancesAPI(privateWidgetOptions, "fs"); } - - data.uptime = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime"); - - data.sensors = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors"); return res.status(200).send(data); } catch (e) { diff --git a/src/utils/config/widget-helpers.js b/src/utils/config/widget-helpers.js index c03bd906..6f61b7e2 100644 --- a/src/utils/config/widget-helpers.js +++ b/src/utils/config/widget-helpers.js @@ -5,8 +5,6 @@ import yaml from "js-yaml"; import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config"; -const exemptWidgets = ["search"]; - export async function widgetsFromConfig() { checkAndCopyConfig("widgets.yaml"); @@ -32,15 +30,17 @@ export async function cleanWidgetGroups(widgets) { return widgets.map((widget, index) => { const sanitizedOptions = widget.options; const optionKeys = Object.keys(sanitizedOptions); - if (!exemptWidgets.includes(widget.type)) { - ["url", "username", "password", "key"].forEach((pO) => { - if (optionKeys.includes(pO)) { - // allow URL in search - if (widget.type !== "search" && pO !== "key") { - delete sanitizedOptions[pO]; - } - } - }); + + // delete private options from the sanitized options + ["username", "password", "key"].forEach((pO) => { + if (optionKeys.includes(pO)) { + delete sanitizedOptions[pO]; + } + }); + + // delete url from the sanitized options if the widget is not a search or glances widgeth + if (widget.type !== "search" && widget.type !== "glances" && optionKeys.includes("url")) { + delete sanitizedOptions.url; } return { @@ -78,4 +78,4 @@ export async function getPrivateWidgetOptions(type, widgetIndex) { }); return (type !== undefined && widgetIndex !== undefined) ? privateOptions.find(o => o.type === type && o.options.index === parseInt(widgetIndex, 10))?.options : privateOptions; -} \ No newline at end of file +} From 1291707e2fbe895e0bd07dc046c77b3434316250 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Mon, 22 May 2023 10:44:56 +0000 Subject: [PATCH 002/788] Translated using Weblate (Spanish) Currently translated at 100.0% (457 of 457 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 0d093bd8..1acbaf1c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -605,8 +605,8 @@ "memUsage": "Uso de la memoria", "systemTempC": "Temperatura del sistema", "poolUsage": "Comprobación del uso del grupo de memoria", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Volumen utilizado", + "invalid": "No válido" }, "pfsense": { "load": "Promedio de carga", @@ -626,15 +626,15 @@ "evcc": { "pv_power": "Producción", "battery_soc": "Batería", - "grid_power": "Grid", + "grid_power": "Red", "home_power": "Consumo", "charge_power": "Cargador", "watt_hour": "vatio-hora (Wh)" }, "pialert": { "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "connected": "Conectado", + "new_devices": "Nuevos dispositivos", + "down_alerts": "Alertas" } } From e97bdb9ec4fd93b22455a39f97b6a9f7c5a7aac7 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Sun, 21 May 2023 16:38:40 +0000 Subject: [PATCH 003/788] Translated using Weblate (French) Currently translated at 100.0% (457 of 457 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 487418a8..032c15b1 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -605,8 +605,8 @@ "memUsage": "Mém", "systemTempC": "Temp", "poolUsage": "Pool", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Volume", + "invalid": "Invalide" }, "pfsense": { "load": "Charge moy.", @@ -633,8 +633,8 @@ }, "pialert": { "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "connected": "Connecté", + "new_devices": "Nouvel Appareil", + "down_alerts": "Alertes" } } From f29b137a9ee83b5de869c420e528a5698e7b0be3 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Mon, 22 May 2023 19:51:09 +0200 Subject: [PATCH 004/788] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ --- public/locales/ar/common.json | 1 - public/locales/bg/common.json | 1 - public/locales/ca/common.json | 1 - public/locales/cs/common.json | 1 - public/locales/da/common.json | 1 - public/locales/de/common.json | 1 - public/locales/el/common.json | 1 - public/locales/eo/common.json | 1 - public/locales/es/common.json | 1 - public/locales/fi/common.json | 1 - public/locales/fr/common.json | 1 - public/locales/he/common.json | 1 - public/locales/hi/common.json | 1 - public/locales/hr/common.json | 1 - public/locales/hu/common.json | 1 - public/locales/it/common.json | 1 - public/locales/ja/common.json | 1 - public/locales/ko/common.json | 1 - public/locales/lv/common.json | 1 - public/locales/ms/common.json | 1 - public/locales/nb-NO/common.json | 1 - public/locales/nl/common.json | 1 - public/locales/pl/common.json | 1 - public/locales/pt-BR/common.json | 1 - public/locales/pt/common.json | 1 - public/locales/ro/common.json | 1 - public/locales/ru/common.json | 1 - public/locales/sk/common.json | 1 - public/locales/sl/common.json | 1 - public/locales/sr/common.json | 1 - public/locales/sv/common.json | 1 - public/locales/te/common.json | 1 - public/locales/th/common.json | 1 - public/locales/tr/common.json | 1 - public/locales/uk/common.json | 1 - public/locales/vi/common.json | 1 - public/locales/yue/common.json | 1 - public/locales/zh-CN/common.json | 1 - public/locales/zh-Hant/common.json | 1 - 39 files changed, 39 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 478dfe42..1833f88c 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -296,7 +296,6 @@ }, "glances": { "cpu": "معالج", - "mem": "الذاكرة", "wait": "الرجاء الإنتظار", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 35d01983..7f320edc 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 499b2b0e..f114f044 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Processador", - "mem": "Memòria", "wait": "Si us plau, espereu", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 89271833..271b8592 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -308,7 +308,6 @@ }, "glances": { "cpu": "CPU", - "mem": "RAM", "wait": "Prosím počkejte", "temp": "TEPLOTA", "uptime": "BĚŽÍ", diff --git a/public/locales/da/common.json b/public/locales/da/common.json index aaac31dd..e7132c98 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -68,7 +68,6 @@ }, "glances": { "cpu": "CPU", - "mem": "RAM", "wait": "Vent venligst", "uptime": "UP", "days": "d", diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 8cbac652..cc8c80e1 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Prozessor", - "mem": "RAM", "wait": "Bitte warten", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 1602c965..659e414a 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -355,7 +355,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 2161b212..08f2832c 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -252,7 +252,6 @@ }, "glances": { "cpu": "Ĉefprocesoro", - "mem": "Memoro", "wait": "Bonvolu atendi", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 1acbaf1c..48ddffb5 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Procesador", - "mem": "Memoria", "wait": "Espera por favor", "temp": "TEMPORAL", "uptime": "ARRIBA", diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 45719978..5bc381e4 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -235,7 +235,6 @@ "glances": { "wait": "Please wait", "cpu": "CPU", - "mem": "MEM", "temp": "TEMP", "uptime": "UP", "days": "d", diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 032c15b1..1c460109 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Cpu", - "mem": "Mém", "wait": "Merci de patienter", "temp": "Temp", "uptime": "Up", diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 9745ab75..4e7bbdbc 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 11b35e81..21133e18 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -242,7 +242,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index f904c711..afd06911 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Pričekaj", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index be32d8e0..604e21bd 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 7dd6df29..7d1c08b0 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Attendere prego", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 400c1dc6..0b35cdb7 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -15,7 +15,6 @@ "transferRate": "レート" }, "glances": { - "mem": "MEM", "cpu": "CPU", "wait": "お待ちください", "temp": "温度", diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 36b9d108..7479a0b8 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -301,7 +301,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 29ae3fcd..457081e3 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -290,7 +290,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "uptime": "UP", "days": "d", diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 53e2b526..c928c7a2 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -66,7 +66,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Sila tunggu", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index e43a41b4..2ec5dcf7 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 24e8ebc2..51a5faa7 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 6f8606cc..7a116508 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Procesor", - "mem": "Pamięć", "wait": "Proszę czekać", "temp": "TEMP", "uptime": "CZAS", diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index fb62b2b2..c932fbb5 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Por favor aguarde", "temp": "TEMP", "uptime": "LIGADO", diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 0db2c0ce..01ce9b8e 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -247,7 +247,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Por favor, aguarde", "temp": "TEMP", "uptime": "Cima", diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 6fa17522..6cd83816 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Procesor", - "mem": "Memorie", "wait": "Te rugam sa astepti", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index dae0187b..3d809526 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "Процессор", - "mem": "Память", "wait": "Пожалуйста, подождите", "temp": "Температура", "uptime": "Работает", diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 7a2963c7..522c9c99 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -398,7 +398,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 2f3915bc..15ac8468 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -350,7 +350,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Prosim počakajte", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index e918f149..8e3ec601 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index a426a57e..af796268 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Vänligen vänta", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 4d3d362f..4a6009f1 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "సీపియూ", - "mem": "MEM", "wait": "దయచేసి వేచి ఉండండి", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 9d3e0302..db609749 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -310,7 +310,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 1807b97f..f1c96c05 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "İşlemci", - "mem": "Bellek", "wait": "Lütfen bekleyiniz", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 7f8e06a4..4dc8bc70 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -358,7 +358,6 @@ }, "glances": { "cpu": "CPU", - "mem": "Пам'ять", "wait": "Будь ласка, зачекайте", "temp": "TEMP", "uptime": "Відправка", diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 3e1f37d3..c6c9950a 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 0d66d550..627c44de 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", "wait": "Please wait", "temp": "TEMP", "uptime": "UP", diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 38ef2867..a2afca79 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "处理器", - "mem": "内存", "wait": "请稍等", "temp": "温度", "uptime": "运行时间", diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 66db7069..2d276bbb 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -234,7 +234,6 @@ }, "glances": { "cpu": "CPU", - "mem": "記憶體", "wait": "請稍後", "temp": "溫度", "uptime": "運行時間", From 7b8c84df5a2e8108410c3fadf47b854b8ffab25f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:33 +0000 Subject: [PATCH 005/788] Translated using Weblate (German) Currently translated at 96.3% (444 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index cc8c80e1..f4c018bf 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "T", - "hours": "S" + "hours": "S", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Gesamt beobachtet", From 891f770d1ea19beda46e0f2dd56bede37189fb57 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:34 +0000 Subject: [PATCH 006/788] Translated using Weblate (Spanish) Currently translated at 98.9% (456 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 48ddffb5..ecf933fc 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -238,7 +238,12 @@ "temp": "TEMPORAL", "uptime": "ARRIBA", "days": "Días", - "hours": "Horas" + "hours": "Horas", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observados", From 200706d6127e5d90f8ecd30914882c9d80323178 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:35 +0000 Subject: [PATCH 007/788] Translated using Weblate (French) Currently translated at 98.9% (456 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 1c460109..f99e4733 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -238,7 +238,12 @@ "temp": "Temp", "uptime": "Up", "days": "j", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observé", From 33bd39301e746eb9cf6ffbc75e9d9354f33555c7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:35 +0000 Subject: [PATCH 008/788] Translated using Weblate (Portuguese) Currently translated at 87.8% (405 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 01ce9b8e..b0df5367 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -251,7 +251,12 @@ "temp": "TEMP", "uptime": "Cima", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observado", From 55732ccac6b43999afde678c8bc2eff038368ddb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:25 +0000 Subject: [PATCH 009/788] Translated using Weblate (Russian) Currently translated at 89.8% (414 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 3d809526..454bfdfe 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -238,7 +238,12 @@ "temp": "Температура", "uptime": "Работает", "days": "д", - "hours": "ч" + "hours": "ч", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Всего наблюдаемых", From 8cf783bf43c85778e7c0697d725f162efed81fbd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:26 +0000 Subject: [PATCH 010/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 96.3% (444 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index a2afca79..e3a181bf 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -238,7 +238,12 @@ "temp": "温度", "uptime": "运行时间", "days": "天", - "hours": "时" + "hours": "时", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "观察到的总数", From 4c6cf7da18db03b62346a2ba20bcc47718eb4450 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:22 +0000 Subject: [PATCH 011/788] Translated using Weblate (Italian) Currently translated at 62.2% (287 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 7d1c08b0..8dc065d4 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Totale Osservato", From a0c29cdd053835928c17f81d92cfb95b8a91ff80 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:22 +0000 Subject: [PATCH 012/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 17.1% (79 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 2ec5dcf7..e7a2dd5c 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From 8261a504e4b681b25f26ae739febbcf7e91982c5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:24 +0000 Subject: [PATCH 013/788] Translated using Weblate (Vietnamese) Currently translated at 9.5% (44 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index c6c9950a..54431b3c 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From 43a3a71f722f23b0439e955228a7e50f3a5e300c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:23 +0000 Subject: [PATCH 014/788] Translated using Weblate (Dutch) Currently translated at 52.4% (242 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 51a5faa7..0be39980 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Totaal waargenomen", From 2f9bec85440d04faf735f06da1732a12292f5df1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:29 +0000 Subject: [PATCH 015/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 95.6% (441 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 2d276bbb..f9745303 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -238,7 +238,12 @@ "temp": "溫度", "uptime": "運行時間", "days": "天", - "hours": "時" + "hours": "時", + "free": "Free", + "used": "Used", + "load": "Load", + "warn": "Warn", + "total": "Total" }, "changedetectionio": { "totalObserved": "總監測數", From 06b24907b9d856e9520501fb4e2ca3a557cff55d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:24 +0000 Subject: [PATCH 016/788] Translated using Weblate (Catalan) Currently translated at 56.6% (261 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index f114f044..33fe5338 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total d'observats", From fa5b4f9ebef084108222377a0e605982961155bc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:18 +0000 Subject: [PATCH 017/788] Translated using Weblate (Polish) Currently translated at 81.3% (375 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 7a116508..a900de72 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "CZAS", "days": "dni", - "hours": "godz" + "hours": "godz", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "diffsDetected": "Wykryto różnic", From 98e5ceb93ac6c13c6b4306367e4b794c8ef3d3e2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:25 +0000 Subject: [PATCH 018/788] Translated using Weblate (Swedish) Currently translated at 28.4% (131 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index af796268..37b38a71 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From abb9a6f66f201ecd99e9eec89a8daa31f55841b0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:27 +0000 Subject: [PATCH 019/788] Translated using Weblate (Croatian) Currently translated at 93.9% (433 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index afd06911..db20a999 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "used": "Used", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free" }, "changedetectionio": { "totalObserved": "Ukupno promatrano", From 4539ef7bb0581d10f7614433cf94c1d0d308b4df Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:31 +0000 Subject: [PATCH 020/788] Translated using Weblate (Hungarian) Currently translated at 23.4% (108 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 604e21bd..b417692d 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From bccef494d76a861215e2d1e1569949aee7fe9120 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:31 +0000 Subject: [PATCH 021/788] Translated using Weblate (Hebrew) Currently translated at 21.9% (101 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 4e7bbdbc..50f61ae5 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "warn": "Warn", + "load": "Load", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From 60c423f7cf788214c841db6c8516bb7a88898de8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:28 +0000 Subject: [PATCH 022/788] Translated using Weblate (Romanian) Currently translated at 32.7% (151 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 6cd83816..a1f62db2 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From 618b006350bc788ca271d51b15bc72f775837bef Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:27 +0000 Subject: [PATCH 023/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 87.8% (405 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index c932fbb5..bc405db0 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "LIGADO", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Observados", From 678ddf9c115c592cde2f2219194502fabcaaa58e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:38 +0000 Subject: [PATCH 024/788] Translated using Weblate (Yue (Traditional)) Currently translated at 25.5% (118 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 627c44de..5ab69f88 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From 07cb004ecb430f85f95e2ef24bfdc943c97a26f7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:36 +0000 Subject: [PATCH 025/788] Translated using Weblate (Finnish) Currently translated at 38.6% (178 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 5bc381e4..aad674a1 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From c9a69c0c77faf3c0c0590c35c2898e19dc833e17 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:36 +0000 Subject: [PATCH 026/788] Translated using Weblate (Telugu) Currently translated at 46.8% (216 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 4a6009f1..e357b266 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "మొత్తం గమనించబడింది", From fa3a438d308f523268ed82fa902b963376c1c80b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:37 +0000 Subject: [PATCH 027/788] Translated using Weblate (Bulgarian) Currently translated at 9.9% (46 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 7f320edc..3fec6dbd 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From d59dce8a36c269da46ba3f5ab5d6b5c3f51aa963 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:38 +0000 Subject: [PATCH 028/788] Translated using Weblate (Turkish) Currently translated at 68.5% (316 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index f1c96c05..d5be780e 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Toplam Gözlenen", From ae55441f44a38e6b7338dd85897366dbbd1d41c8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:30 +0000 Subject: [PATCH 029/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 8e3ec601..b30db3fe 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -238,7 +238,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "changedetectionio": { "totalObserved": "Total Observed", From c893a6e82952d343956c0fe742a686920a2ef76f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:30 +0000 Subject: [PATCH 030/788] Translated using Weblate (Arabic) Currently translated at 56.6% (261 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 1833f88c..39b77411 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -300,7 +300,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "مفضلة", From d633f70c45d4d3fe1718064fdebfb77ef08120a9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:16 +0000 Subject: [PATCH 031/788] Translated using Weblate (Czech) Currently translated at 96.5% (445 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 271b8592..6088851b 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -312,7 +312,12 @@ "temp": "TEPLOTA", "uptime": "BĚŽÍ", "days": "d", - "hours": "h" + "hours": "h", + "total": "Total", + "free": "Free", + "used": "Used", + "load": "Load", + "warn": "Warn" }, "quicklaunch": { "bookmark": "Záložka", From f3f946a649455f9826dfe536c7e3d265b7f83a4c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:19 +0000 Subject: [PATCH 032/788] Translated using Weblate (Danish) Currently translated at 42.7% (197 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index e7132c98..3769da6f 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -72,7 +72,12 @@ "uptime": "UP", "days": "d", "hours": "h", - "temp": "TEMP" + "temp": "TEMP", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "wmo": { "1-day": "Hovedsageligt solrigt", From 4f53c1e4e4dacf1964446beaa3c849ac8487c7b1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:19 +0000 Subject: [PATCH 033/788] Translated using Weblate (Malay) Currently translated at 54.6% (252 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index c928c7a2..da42ff44 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -70,7 +70,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Tandabuku", From 4b915467f232fb7fce5514b8f00ab8b644fe130a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:20 +0000 Subject: [PATCH 034/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 21133e18..6736caf0 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -246,7 +246,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From c3168df04ba84883e13fa756ffc6451e168be7c1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:16 +0000 Subject: [PATCH 035/788] Translated using Weblate (Esperanto) Currently translated at 31.6% (146 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 08f2832c..50d305ac 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -256,7 +256,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From 8e548fb249e12ca6c633aa6d8a687adb0a7e3b9a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:17 +0000 Subject: [PATCH 036/788] Translated using Weblate (Ukrainian) Currently translated at 97.6% (450 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 4dc8bc70..4e0a2b9b 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -362,7 +362,12 @@ "temp": "TEMP", "uptime": "Відправка", "days": "д", - "hours": "г" + "hours": "г", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Закладка", From 0e83953ac711f8225915878b0feff9039ed9eb75 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:21 +0000 Subject: [PATCH 037/788] Translated using Weblate (Japanese) Currently translated at 81.1% (374 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 0b35cdb7..bcca3d2a 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -20,7 +20,12 @@ "temp": "温度", "uptime": "UP", "days": "日", - "hours": "時間" + "hours": "時間", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "autobrr": { "filters": "フィルター", From e4a3570a77932126d669d2f94c00c1214a4a8f38 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:18 +0000 Subject: [PATCH 038/788] Translated using Weblate (Latvian) Currently translated at 25.8% (119 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 457081e3..fa73f2c7 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -294,7 +294,12 @@ "uptime": "UP", "days": "d", "hours": "h", - "temp": "TEMP" + "temp": "TEMP", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From 1de449f925e600de6ca3f132e03bafb84efa9a4d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:14 +0000 Subject: [PATCH 039/788] Translated using Weblate (Thai) Currently translated at 10.1% (47 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index db609749..65c1b90a 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -314,7 +314,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From 7da1fd3a4198a39599407371cc985e9a98538016 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:32 +0000 Subject: [PATCH 040/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 522c9c99..a66ef5e6 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -402,7 +402,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From 42681d8884f620f524c0db5d8f3c05816f63098d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:33 +0000 Subject: [PATCH 041/788] Translated using Weblate (Korean) Currently translated at 37.7% (174 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 7479a0b8..4e5e6298 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -305,7 +305,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "load": "Load", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used" }, "quicklaunch": { "bookmark": "Bookmark", From d6363d46368bd9482be2d13601ae599904328676 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:15 +0000 Subject: [PATCH 042/788] Translated using Weblate (Greek) Currently translated at 31.2% (144 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 659e414a..d42fdfe5 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -359,7 +359,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "h" + "hours": "h", + "warn": "Warn", + "total": "Total", + "free": "Free", + "used": "Used", + "load": "Load" }, "quicklaunch": { "bookmark": "Bookmark", From b960813ed94f733c8a8d4ea4882d0d6f79993029 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Mon, 22 May 2023 17:52:21 +0000 Subject: [PATCH 043/788] Translated using Weblate (Slovenian) Currently translated at 97.6% (450 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 15ac8468..afca8429 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -354,7 +354,12 @@ "temp": "TEMP", "uptime": "UP", "days": "d", - "hours": "u" + "hours": "u", + "free": "Free", + "load": "Load", + "warn": "Warn", + "total": "Total", + "used": "Used" }, "authentik": { "users": "Uporabniki", From 1b984abd919dc4c4b3f8e20705c40deff35e4f09 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 23 May 2023 03:37:56 -0700 Subject: [PATCH 044/788] Fix error port display, again --- src/utils/proxy/handlers/generic.js | 4 ++-- src/utils/proxy/http.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/proxy/handlers/generic.js b/src/utils/proxy/handlers/generic.js index a2077b91..91e0fa94 100644 --- a/src/utils/proxy/handlers/generic.js +++ b/src/utils/proxy/handlers/generic.js @@ -58,11 +58,11 @@ export default async function genericProxyHandler(req, res, map) { if (status >= 400) { logger.debug( - "HTTP Error %d calling %s//%s:%s%s...", + "HTTP Error %d calling %s//%s%s%s...", status, url.protocol, url.hostname, - url.port, + url.port ? `:${url.port}` : '', url.pathname ); return res.status(status).json({error: {message: "HTTP Error", url: sanitizeErrorURL(url), resultData}}); diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index 1df0f577..e022fb46 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -82,10 +82,10 @@ export async function httpProxy(url, params = {}) { } catch (err) { logger.error( - "Error calling %s//%s:%s%s...", + "Error calling %s//%s%s%s...", constructedUrl.protocol, constructedUrl.hostname, - constructedUrl.port, + constructedUrl.port ? `:${constructedUrl.port}` : '', constructedUrl.pathname ); logger.error(err); From 864470b53c903de780cb426347eb5d020684faba Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Tue, 23 May 2023 04:27:10 +0000 Subject: [PATCH 045/788] Translated using Weblate (French) Currently translated at 100.0% (461 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index f99e4733..2e9e0e0d 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -239,11 +239,11 @@ "uptime": "Up", "days": "j", "hours": "h", - "load": "Load", - "warn": "Warn", + "load": "Charge", + "warn": "Alerte", "total": "Total", - "free": "Free", - "used": "Used" + "free": "Libre", + "used": "Utilisé" }, "changedetectionio": { "totalObserved": "Total Observé", From 73db271c8707c2303ce56e2330f5f874269e3455 Mon Sep 17 00:00:00 2001 From: libook Date: Tue, 23 May 2023 03:39:45 +0000 Subject: [PATCH 046/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 96.3% (444 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index e3a181bf..0d6f427e 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -554,7 +554,7 @@ "targets_total": "总目标" }, "minecraft": { - "players": "播放中", + "players": "玩家", "version": "版本", "status": "状态", "up": "在线的", From 5ee9f46a5a041929470b26d5402addd9e66a2129 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 22 May 2023 22:05:28 +0000 Subject: [PATCH 047/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (461 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 4e0a2b9b..37320dfd 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -127,7 +127,7 @@ "total": "Всього", "free": "Вільно", "used": "Використано", - "load": "Навантаження", + "load": "Завантаження", "mem": "Пам'ять", "temp": "TEMP", "max": "Max", @@ -363,11 +363,11 @@ "uptime": "Відправка", "days": "д", "hours": "г", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free", - "used": "Used" + "load": "Завантаження", + "warn": "Увага", + "total": "Всього", + "free": "Вільний", + "used": "Використовується" }, "quicklaunch": { "bookmark": "Закладка", @@ -609,8 +609,8 @@ "memUsage": "Використання пам'яті", "systemTempC": "Температура системи", "poolUsage": "Використання пулу", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Гучність", + "invalid": "Недійсний" }, "pfsense": { "load": "Середнє завантаження", @@ -636,9 +636,9 @@ "watt_hour": "Вт/год" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Всього", + "connected": "Підключено", + "new_devices": "Нові пристрої", + "down_alerts": "Сповіщення про збій" } } From cd14dbde58d7cd1ec5f2d53b4d2198d824a49047 Mon Sep 17 00:00:00 2001 From: theshaun Date: Wed, 24 May 2023 20:59:34 +1000 Subject: [PATCH 048/788] Correctly use sys_tempc instead of cpu_tempc --- src/widgets/qnap/component.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/qnap/component.jsx b/src/widgets/qnap/component.jsx index 1012fb65..b34ba7fb 100644 --- a/src/widgets/qnap/component.jsx +++ b/src/widgets/qnap/component.jsx @@ -31,7 +31,7 @@ export default function Component({ service }) { const cpuUsage = statusData.system.cpu_usage._cdata.replace(' %',''); const totalMemory = statusData.system.total_memory._cdata; const freeMemory = statusData.system.free_memory._cdata; - const systemTempC = statusData.system.cpu_tempc._text; + const systemTempC = statusData.system.sys_tempc._text; let volumeTotalSize = 0; let volumeFreeSize = 0; let validVolume = true; From fc668aa9d0054adabfb2e31bebfd5e70490698f1 Mon Sep 17 00:00:00 2001 From: Julian Ortlieb Date: Wed, 24 May 2023 08:55:44 +0000 Subject: [PATCH 049/788] Translated using Weblate (German) Currently translated at 99.3% (458 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index f4c018bf..b62c5e6a 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -239,11 +239,11 @@ "uptime": "UP", "days": "T", "hours": "S", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free", - "used": "Used" + "load": "Auslastung", + "warn": "Warnung", + "total": "Gesamt", + "free": "Frei", + "used": "Verwendet" }, "changedetectionio": { "totalObserved": "Gesamt beobachtet", @@ -610,7 +610,7 @@ "systemTempC": "System Temp", "poolUsage": "Pool Nutzung", "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "invalid": "Ungültig" }, "pfsense": { "load": "Durchschnittliche Last", @@ -629,16 +629,16 @@ }, "evcc": { "watt_hour": "Wh", - "pv_power": "Production", - "battery_soc": "Battery", + "pv_power": "Produktion", + "battery_soc": "Batterie", "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger" + "home_power": "Verbrauch", + "charge_power": "Ladegerät" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Gesamt", + "connected": "Verbunden", + "new_devices": "Neue Geräte", + "down_alerts": "Down Alarme" } } From 4948485c50fb64b186f65fb7c1c875f553a389c4 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 25 May 2023 23:15:45 -0700 Subject: [PATCH 050/788] Support using docker labels for HASS widget custom --- src/widgets/homeassistant/proxy.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/widgets/homeassistant/proxy.js b/src/widgets/homeassistant/proxy.js index 648525ef..944d14d9 100644 --- a/src/widgets/homeassistant/proxy.js +++ b/src/widgets/homeassistant/proxy.js @@ -71,6 +71,14 @@ export default async function homeassistantProxyHandler(req, res) { let queries = defaultQueries; if (!widget.fields && widget.custom) { + if (typeof widget.custom === 'string') { + try { + widget.custom = JSON.parse(widget.custom) + } catch (error) { + logger.debug("Error parsing HASS widget custom label: %s", JSON.stringify(error)); + return res.status(400).json({ error: "Error parsing widget custom label" }); + } + } queries = widget.custom.slice(0, 4); } From 5850a48ec95fc7b1af5026ce85323c23259be4ed Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 26 May 2023 08:21:02 -0700 Subject: [PATCH 051/788] Include right margin on greeting widget Closes #224 Co-Authored-By: David Moor --- src/components/widgets/greeting/greeting.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/widgets/greeting/greeting.jsx b/src/components/widgets/greeting/greeting.jsx index b4607b4d..da0f063d 100644 --- a/src/components/widgets/greeting/greeting.jsx +++ b/src/components/widgets/greeting/greeting.jsx @@ -13,7 +13,7 @@ export default function Greeting({ options }) { if (options.text) { return (
- + {options.text}
From 37d36750de65f27c888a7884259690d517ffe625 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 26 May 2023 09:44:34 +0000 Subject: [PATCH 052/788] Translated using Weblate (Spanish) Currently translated at 100.0% (461 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index ecf933fc..1ca5a62f 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -239,11 +239,11 @@ "uptime": "ARRIBA", "days": "Días", "hours": "Horas", - "load": "Load", - "warn": "Warn", + "load": "Cargar", + "warn": "Advertir", "total": "Total", - "free": "Free", - "used": "Used" + "free": "Libre", + "used": "Utilizado" }, "changedetectionio": { "totalObserved": "Total Observados", From 665ff66217d49f2143984b9fcc0799d29fe7a69a Mon Sep 17 00:00:00 2001 From: liimee Date: Sun, 28 May 2023 08:24:37 +0200 Subject: [PATCH 053/788] Added translation using Weblate (Indonesian) --- public/locales/id/common.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/locales/id/common.json diff --git a/public/locales/id/common.json b/public/locales/id/common.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/public/locales/id/common.json @@ -0,0 +1 @@ +{} From 7dfa7412ef3c1a23b8644f3939b6d3fc98c9dcd0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 28 May 2023 06:25:18 +0000 Subject: [PATCH 054/788] Translated using Weblate (Indonesian) Currently translated at 100.0% (0 of 0 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 645 +++++++++++++++++++++++++++++++++- 1 file changed, 644 insertions(+), 1 deletion(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 0967ef42..95e4bf45 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -1 +1,644 @@ -{} +{ + "nzbget": { + "downloaded": "Downloaded", + "rate": "Rate", + "remaining": "Remaining" + }, + "plex": { + "streams": "Active Streams", + "albums": "Albums", + "movies": "Movies", + "tv": "TV Shows" + }, + "sabnzbd": { + "rate": "Rate", + "queue": "Queue", + "timeleft": "Time Left" + }, + "rutorrent": { + "active": "Active", + "upload": "Upload", + "download": "Download" + }, + "transmission": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "qbittorrent": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "qnap": { + "cpuUsage": "CPU Usage", + "memUsage": "MEM Usage", + "poolUsage": "Pool Usage", + "volumeUsage": "Volume Usage", + "systemTempC": "System Temp", + "invalid": "Invalid" + }, + "deluge": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "downloadstation": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "sonarr": { + "wanted": "Wanted", + "queued": "Queued", + "series": "Series" + }, + "radarr": { + "wanted": "Wanted", + "missing": "Missing", + "queued": "Queued", + "movies": "Movies" + }, + "lidarr": { + "wanted": "Wanted", + "queued": "Queued", + "albums": "Albums" + }, + "readarr": { + "wanted": "Wanted", + "queued": "Queued", + "books": "Books" + }, + "bazarr": { + "missingEpisodes": "Missing Episodes", + "missingMovies": "Missing Movies" + }, + "ombi": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "jellyseerr": { + "approved": "Approved", + "pending": "Pending", + "available": "Available" + }, + "overseerr": { + "approved": "Approved", + "available": "Available", + "pending": "Pending", + "processing": "Processing" + }, + "pialert": { + "total": "Total", + "connected": "Connected", + "new_devices": "New Devices", + "down_alerts": "Down Alerts" + }, + "pihole": { + "queries": "Queries", + "blocked": "Blocked", + "blocked_percent": "Blocked %", + "gravity": "Gravity" + }, + "adguard": { + "queries": "Queries", + "blocked": "Blocked", + "filtered": "Filtered", + "latency": "Latency" + }, + "speedtest": { + "upload": "Upload", + "download": "Download", + "ping": "Ping" + }, + "tailscale": { + "address": "Address", + "expires": "Expires", + "never": "Never", + "last_seen": "Last Seen", + "now": "Now", + "years": "{{number}}y", + "weeks": "{{number}}w", + "days": "{{number}}d", + "hours": "{{number}}h", + "minutes": "{{number}}m", + "seconds": "{{number}}s", + "ago": "{{value}} Ago" + }, + "tdarr": { + "queue": "Queue", + "processed": "Processed", + "errored": "Errored", + "saved": "Saved" + }, + "traefik": { + "routers": "Routers", + "services": "Services", + "middleware": "Middleware" + }, + "npm": { + "disabled": "Disabled", + "enabled": "Enabled", + "total": "Total" + }, + "navidrome": { + "nothing_streaming": "No Active Streams", + "please_wait": "Please Wait" + }, + "coinmarketcap": { + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" + }, + "prowlarr": { + "numberOfGrabs": "Grabs", + "numberOfQueries": "Queries", + "enableIndexers": "Indexers", + "numberOfFailGrabs": "Fail Grabs", + "numberOfFailQueries": "Fail Queries" + }, + "gotify": { + "apps": "Applications", + "clients": "Clients", + "messages": "Messages" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" + }, + "medusa": { + "wanted": "Wanted", + "queued": "Queued", + "series": "Series" + }, + "minecraft": { + "players": "Players", + "version": "Version", + "status": "Status", + "up": "Online", + "down": "Offline" + }, + "authentik": { + "loginsLast24H": "Logins (24h)", + "failedLoginsLast24H": "Failed Logins (24h)", + "users": "Users" + }, + "proxmox": { + "cpu": "CPU", + "lxc": "LXC", + "vms": "VMs", + "mem": "MEM" + }, + "glances": { + "temp": "TEMP", + "warn": "Warn", + "uptime": "UP", + "total": "Total", + "free": "Free", + "cpu": "CPU", + "load": "Load", + "wait": "Please wait", + "used": "Used", + "days": "d", + "hours": "h" + }, + "quicklaunch": { + "bookmark": "Bookmark", + "service": "Service", + "search": "Search", + "custom": "Custom", + "visit": "Visit", + "url": "URL" + }, + "wmo": { + "0-night": "Clear", + "0-day": "Sunny", + "1-day": "Mainly Sunny", + "1-night": "Mainly Clear", + "2-day": "Partly Cloudy", + "2-night": "Partly Cloudy", + "56-day": "Light Freezing Drizzle", + "56-night": "Light Freezing Drizzle", + "3-day": "Cloudy", + "3-night": "Cloudy", + "45-day": "Foggy", + "45-night": "Foggy", + "48-day": "Foggy", + "48-night": "Foggy", + "51-day": "Light Drizzle", + "51-night": "Light Drizzle", + "53-day": "Drizzle", + "53-night": "Drizzle", + "55-day": "Heavy Drizzle", + "55-night": "Heavy Drizzle", + "57-day": "Freezing Drizzle", + "57-night": "Freezing Drizzle", + "61-day": "Light Rain", + "61-night": "Light Rain", + "63-day": "Rain", + "63-night": "Rain", + "71-day": "Light Snow", + "71-night": "Light Snow", + "73-day": "Snow", + "73-night": "Snow", + "65-day": "Heavy Rain", + "65-night": "Heavy Rain", + "66-day": "Freezing Rain", + "66-night": "Freezing Rain", + "67-day": "Freezing Rain", + "67-night": "Freezing Rain", + "75-day": "Heavy Snow", + "75-night": "Heavy Snow", + "77-day": "Snow Grains", + "77-night": "Snow Grains", + "80-day": "Light Showers", + "82-day": "Heavy Showers", + "82-night": "Heavy Showers", + "85-day": "Snow Showers", + "85-night": "Snow Showers", + "86-day": "Snow Showers", + "86-night": "Snow Showers", + "99-day": "Thunderstorm With Hail", + "99-night": "Thunderstorm With Hail", + "80-night": "Light Showers", + "81-day": "Showers", + "81-night": "Showers", + "95-day": "Thunderstorm", + "95-night": "Thunderstorm", + "96-day": "Thunderstorm With Hail", + "96-night": "Thunderstorm With Hail" + }, + "homebridge": { + "available_update": "System", + "updates": "Updates", + "update_available": "Update Available", + "up_to_date": "Up to Date", + "child_bridges": "Child Bridges", + "child_bridges_status": "{{ok}}/{{total}}", + "up": "Up", + "pending": "Pending", + "down": "Down" + }, + "healthchecks": { + "grace": "In Grace Period", + "down": "Offline", + "paused": "Paused", + "status": "Status", + "last_ping": "Last Ping", + "never": "No pings yet", + "new": "New", + "up": "Online" + }, + "watchtower": { + "containers_scanned": "Scanned", + "containers_updated": "Updated", + "containers_failed": "Failed" + }, + "autobrr": { + "approvedPushes": "Approved", + "rejectedPushes": "Rejected", + "filters": "Filters", + "indexers": "Indexers" + }, + "tubearchivist": { + "downloads": "Queue", + "videos": "Videos", + "channels": "Channels", + "playlists": "Playlists" + }, + "truenas": { + "load": "System Load", + "uptime": "Uptime", + "alerts": "Alerts", + "time": "{{value, number(style: unit; unitDisplay: long;)}}" + }, + "pyload": { + "speed": "Speed", + "active": "Active", + "queue": "Queue", + "total": "Total" + }, + "gluetun": { + "public_ip": "Public IP", + "region": "Region", + "country": "Country" + }, + "hdhomerun": { + "channels": "Channels", + "hd": "HD" + }, + "paperlessngx": { + "inbox": "Inbox", + "total": "Total" + }, + "nextdns": { + "wait": "Please Wait", + "no_devices": "No Device Data Received" + }, + "mikrotik": { + "cpuLoad": "CPU Load", + "memoryUsed": "Memory Used", + "uptime": "Uptime", + "numberOfLeases": "Leases" + }, + "xteve": { + "streams_all": "All Streams", + "streams_active": "Active Streams", + "streams_xepg": "XEPG Channels" + }, + "opnsense": { + "cpu": "CPU Load", + "memory": "Active Memory", + "wanUpload": "WAN Upload", + "wanDownload": "WAN Download" + }, + "moonraker": { + "print_status": "Print Status", + "printer_state": "Printer State", + "print_progress": "Progress", + "layers": "Layers" + }, + "octoprint": { + "printer_state": "Status", + "temp_bed": "Bed temp", + "job_completion": "Completion", + "temp_tool": "Tool temp" + }, + "cloudflared": { + "origin_ip": "Origin IP", + "status": "Status" + }, + "pfsense": { + "load": "Load Avg", + "memory": "Mem Usage", + "wanStatus": "WAN Status", + "up": "Up", + "down": "Down", + "temp": "Temp", + "disk": "Disk Usage", + "wanIP": "WAN IP" + }, + "proxmoxbackupserver": { + "datastore_usage": "Datastore", + "failed_tasks_24h": "Failed Tasks 24h", + "cpu_usage": "CPU", + "memory_usage": "Memory" + }, + "immich": { + "videos": "Videos", + "storage": "Storage", + "users": "Users", + "photos": "Photos" + }, + "uptimekuma": { + "up": "Sites Up", + "down": "Sites Down", + "uptime": "Uptime", + "incident": "Incident", + "m": "m" + }, + "komga": { + "libraries": "Libraries", + "series": "Series", + "books": "Books" + }, + "diskstation": { + "days": "Days", + "uptime": "Uptime", + "volumeAvailable": "Available" + }, + "mylar": { + "series": "Series", + "issues": "Issues", + "wanted": "Wanted" + }, + "photoprism": { + "people": "People", + "albums": "Albums", + "photos": "Photos", + "videos": "Videos" + }, + "fileflows": { + "queue": "Queue", + "processing": "Processing", + "processed": "Processed", + "time": "Time" + }, + "grafana": { + "dashboards": "Dashboards", + "datasources": "Data Sources", + "totalalerts": "Total Alerts", + "alertstriggered": "Alerts Triggered" + }, + "nextcloud": { + "cpuload": "Cpu Load", + "memoryusage": "Memory Usage", + "freespace": "Free Space", + "activeusers": "Active Users", + "numfiles": "Files", + "numshares": "Shared Items" + }, + "kopia": { + "status": "Status", + "nextrun": "Next Run", + "size": "Size", + "failed": "Failed", + "lastrun": "Last Run" + }, + "unmanic": { + "active_workers": "Active Workers", + "total_workers": "Total Workers", + "records_total": "Queue Length" + }, + "ghostfolio": { + "gross_percent_max": "All time", + "gross_percent_today": "Today", + "gross_percent_1y": "One year" + }, + "audiobookshelf": { + "podcasts": "Podcasts", + "podcastsDuration": "Duration", + "books": "Books", + "booksDuration": "Duration" + }, + "homeassistant": { + "people_home": "People Home", + "lights_on": "Lights On", + "switches_on": "Switches On" + }, + "whatsupdocker": { + "monitoring": "Monitoring", + "updates": "Updates" + }, + "weather": { + "wait": "Please wait", + "current": "Current Location", + "allow": "Click to allow", + "updating": "Updating" + }, + "search": { + "placeholder": "Search…" + }, + "unifi": { + "lan_devices": "LAN Devices", + "wlan_devices": "WLAN Devices", + "lan_users": "LAN Users", + "users": "Users", + "uptime": "System Uptime", + "days": "Days", + "wan": "WAN", + "lan": "LAN", + "wlan": "WLAN", + "devices": "Devices", + "wlan_users": "WLAN Users", + "up": "UP", + "down": "DOWN", + "wait": "Please wait", + "empty_data": "Subsystem status unknown" + }, + "docker": { + "rx": "RX", + "tx": "TX", + "mem": "MEM", + "cpu": "CPU", + "running": "Running", + "offline": "Offline", + "error": "Error", + "unknown": "Unknown", + "healthy": "Healthy", + "starting": "Starting", + "unhealthy": "Unhealthy", + "not_found": "Not Found", + "exited": "Exited", + "partial": "Partial" + }, + "freshrss": { + "unread": "Unread", + "subscriptions": "Subscriptions" + }, + "caddy": { + "upstreams": "Upstreams", + "requests": "Current requests", + "requests_failed": "Failed requests" + }, + "omada": { + "connectedAp": "Connected APs", + "activeUser": "Active devices", + "alerts": "Alerts", + "connectedGateway": "Connected gateways", + "connectedSwitches": "Connected switches" + }, + "portainer": { + "running": "Running", + "stopped": "Stopped", + "total": "Total" + }, + "miniflux": { + "read": "Read", + "unread": "Unread" + }, + "scrutiny": { + "passed": "Passed", + "failed": "Failed", + "unknown": "Unknown" + }, + "pterodactyl": { + "servers": "Servers", + "nodes": "Nodes" + }, + "prometheus": { + "targets_up": "Targets Up", + "targets_down": "Targets Down", + "targets_total": "Total Targets" + }, + "common": { + "bibyterate": "{{value, rate(bits: false; binary: true)}}", + "bibitrate": "{{value, rate(bits: true; binary: true)}}" + }, + "widget": { + "missing_type": "Missing Widget Type: {{type}}", + "api_error": "API Error", + "information": "Information", + "status": "Status", + "url": "URL", + "raw_error": "Raw Error", + "response_data": "Response Data" + }, + "resources": { + "cpu": "CPU", + "mem": "MEM", + "total": "Total", + "free": "Free", + "used": "Used", + "load": "Load", + "temp": "TEMP", + "max": "Max", + "uptime": "UP", + "months": "mo", + "hours": "h", + "days": "d", + "minutes": "m" + }, + "ping": { + "error": "Error", + "ping": "Ping" + }, + "emby": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams", + "movies": "Movies", + "series": "Series", + "episodes": "Episodes", + "songs": "Songs" + }, + "evcc": { + "pv_power": "Production", + "home_power": "Consumption", + "charge_power": "Charger", + "battery_soc": "Battery", + "grid_power": "Grid", + "watt_hour": "Wh" + }, + "flood": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "changedetectionio": { + "totalObserved": "Total Observed", + "diffsDetected": "Diffs Detected" + }, + "channelsdvrserver": { + "shows": "Shows", + "recordings": "Recordings", + "scheduled": "Scheduled", + "passes": "Passes" + }, + "tautulli": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams" + } +} From febb4cc6d55380fe12e2f1d8fde4032e0039f8e4 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 28 May 2023 09:42:13 -0700 Subject: [PATCH 055/788] Support settings layout as a list --- src/utils/config/config.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/utils/config/config.js b/src/utils/config/config.js index f312560d..6c5f4ee7 100644 --- a/src/utils/config/config.js +++ b/src/utils/config/config.js @@ -65,5 +65,20 @@ export function getSettings() { const settingsYaml = join(process.cwd(), "config", "settings.yaml"); const rawFileContents = readFileSync(settingsYaml, "utf8"); const fileContents = substituteEnvironmentVars(rawFileContents); - return yaml.load(fileContents) ?? {}; + const initialSettings = yaml.load(fileContents) ?? {}; + + if (initialSettings.layout) { + // support yaml list but old spec was object so convert to that + // see https://github.com/benphelps/homepage/issues/1546 + if (Array.isArray(initialSettings.layout)) { + const layoutItems = initialSettings.layout + initialSettings.layout = {} + layoutItems.forEach(i => { + const name = Object.keys(i)[0] + initialSettings.layout[name] = i[name] + }) + } + } + + return initialSettings } From 0a5eb1ae7525712c616208d55bed78680f0d3e71 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 28 May 2023 19:46:28 -0700 Subject: [PATCH 056/788] Properly encode qbittorrent credentials --- src/widgets/qbittorrent/proxy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/qbittorrent/proxy.js b/src/widgets/qbittorrent/proxy.js index e1ea7f90..f130c868 100644 --- a/src/widgets/qbittorrent/proxy.js +++ b/src/widgets/qbittorrent/proxy.js @@ -8,7 +8,7 @@ const logger = createLogger("qbittorrentProxyHandler"); async function login(widget) { logger.debug("qBittorrent is rejecting the request, logging in."); const loginUrl = new URL(`${widget.url}/api/v2/auth/login`).toString(); - const loginBody = `username=${encodeURI(widget.username)}&password=${encodeURI(widget.password)}`; + const loginBody = `username=${encodeURIComponent(widget.username)}&password=${encodeURIComponent(widget.password)}`; const loginParams = { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, From 2bbe5b04c7eefb7a28292305f9a90eb275f06bd0 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 28 May 2023 19:49:02 -0700 Subject: [PATCH 057/788] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 34ea7b2a..9b39aa24 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,7 +1,7 @@ name: Bug report description: Create a report to help us improve title: "[Bug] " -labels: ["bug"] +labels: ["bug, unconfirmed"] body: - type: markdown attributes: From bd5c10e907669a01e4a372f590086d174e1cf7f8 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 28 May 2023 19:56:51 -0700 Subject: [PATCH 058/788] Handle k8s widget metrics call fails --- src/pages/api/widgets/kubernetes.js | 31 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/pages/api/widgets/kubernetes.js b/src/pages/api/widgets/kubernetes.js index b0d7f553..35202ce5 100644 --- a/src/pages/api/widgets/kubernetes.js +++ b/src/pages/api/widgets/kubernetes.js @@ -52,18 +52,25 @@ export default async function handler(req, res) { memTotal += mem; }); - const nodeMetrics = await metricsApi.getNodeMetrics(); - nodeMetrics.items.forEach((nodeMetric) => { - const cpu = parseCpu(nodeMetric.usage.cpu); - const mem = parseMemory(nodeMetric.usage.memory); - cpuUsage += cpu; - memUsage += mem; - nodeMap[nodeMetric.metadata.name].cpu.load = cpu; - nodeMap[nodeMetric.metadata.name].cpu.percent = (cpu / nodeMap[nodeMetric.metadata.name].cpu.total) * 100; - nodeMap[nodeMetric.metadata.name].memory.used = mem; - nodeMap[nodeMetric.metadata.name].memory.free = nodeMap[nodeMetric.metadata.name].memory.total - mem; - nodeMap[nodeMetric.metadata.name].memory.percent = (mem / nodeMap[nodeMetric.metadata.name].memory.total) * 100; - }); + try { + const nodeMetrics = await metricsApi.getNodeMetrics(); + nodeMetrics.items.forEach((nodeMetric) => { + const cpu = parseCpu(nodeMetric.usage.cpu); + const mem = parseMemory(nodeMetric.usage.memory); + cpuUsage += cpu; + memUsage += mem; + nodeMap[nodeMetric.metadata.name].cpu.load = cpu; + nodeMap[nodeMetric.metadata.name].cpu.percent = (cpu / nodeMap[nodeMetric.metadata.name].cpu.total) * 100; + nodeMap[nodeMetric.metadata.name].memory.used = mem; + nodeMap[nodeMetric.metadata.name].memory.free = nodeMap[nodeMetric.metadata.name].memory.total - mem; + nodeMap[nodeMetric.metadata.name].memory.percent = (mem / nodeMap[nodeMetric.metadata.name].memory.total) * 100; + }); + } catch (error) { + logger.error("Error getting metrics, ensure you have metrics-server installed: s", JSON.stringify(error)); + return res.status(500).send({ + error: "Error getting metrics, check logs for more details" + }); + } const cluster = { cpu: { From e6d95e29ee8eae89877379b0d67810cafee75165 Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 29 May 2023 01:14:03 -0400 Subject: [PATCH 059/788] Translate environment vars in labels --- src/utils/config/service-helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 8b7317d0..1423e016 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -86,7 +86,7 @@ export async function servicesFromDocker() { type: 'service' }; } - shvl.set(constructedService, label.replace("homepage.", ""), container.Labels[label]); + shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(container.Labels[label])); } }); From 56644ac487babbe13efd72c61dd365c1f6d92119 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 28 May 2023 22:23:11 -0700 Subject: [PATCH 060/788] Support env substitution for k8s --- src/utils/config/service-helpers.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 1423e016..7f9d45e4 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -175,7 +175,7 @@ export async function servicesFromKubernetes() { const services = ingressList.items .filter((ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/enabled`] === 'true') .map((ingress) => { - const constructedService = { + let constructedService = { app: ingress.metadata.name, namespace: ingress.metadata.namespace, href: ingress.metadata.annotations[`${ANNOTATION_BASE}/href`] || getUrlFromIngress(ingress), @@ -202,6 +202,12 @@ export async function servicesFromKubernetes() { } }); + try { + constructedService = JSON.parse(substituteEnvironmentVars(JSON.stringify(constructedService))); + } catch (e) { + logger.error("Error attempting k8s environment variable substitution."); + } + return constructedService; }); From f3b5d735333299714162323f3eb6726759dcd5ec Mon Sep 17 00:00:00 2001 From: liimee Date: Sun, 28 May 2023 06:26:50 +0000 Subject: [PATCH 061/788] Translated using Weblate (Indonesian) Currently translated at 3.2% (15 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 95e4bf45..e9169cbd 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -489,13 +489,13 @@ "updates": "Updates" }, "weather": { - "wait": "Please wait", + "wait": "Harap tunggu", "current": "Current Location", "allow": "Click to allow", "updating": "Updating" }, "search": { - "placeholder": "Search…" + "placeholder": "Telusuri…" }, "unifi": { "lan_devices": "LAN Devices", @@ -576,7 +576,7 @@ "widget": { "missing_type": "Missing Widget Type: {{type}}", "api_error": "API Error", - "information": "Information", + "information": "Informasi", "status": "Status", "url": "URL", "raw_error": "Raw Error", From 967fd6817aea57819cc3218674706ae1a501f8f9 Mon Sep 17 00:00:00 2001 From: KaiYi Chang Date: Tue, 30 May 2023 03:06:01 +0000 Subject: [PATCH 062/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (461 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 68 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index f9745303..75674709 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -21,14 +21,14 @@ "mem": "記憶體", "cpu": "處理器", "error": "錯誤", - "unknown": "未知的", + "unknown": "未知", "running": "執行中", "starting": "啟動中", "unhealthy": "不健康的", "not_found": "未找到", "exited": "已退出", "partial": "部分", - "healthy": "健康的" + "healthy": "健康" }, "emby": { "playing": "正在播放", @@ -123,8 +123,8 @@ "ping": "Ping" }, "portainer": { - "running": "運行中", - "stopped": "未運行", + "running": "運作中", + "stopped": "已停止", "total": "全部" }, "traefik": { @@ -163,7 +163,7 @@ "seed": "已完成下載" }, "jackett": { - "configured": "已配置", + "configured": "已設置", "errored": "發生錯誤" }, "bazarr": { @@ -200,8 +200,8 @@ }, "authentik": { "users": "使用者", - "loginsLast24H": "登錄(24h)", - "failedLoginsLast24H": "登錄失敗(24h)" + "loginsLast24H": "登入 (過去 24 小時)", + "failedLoginsLast24H": "登入失敗 (過去 24 小時)" }, "proxmox": { "mem": "記憶體", @@ -211,7 +211,7 @@ }, "unifi": { "users": "使用者", - "uptime": "系統運行時間", + "uptime": "系統運作時間", "days": "天", "wan": "WAN", "lan_users": "有線使用者", @@ -222,7 +222,7 @@ "lan": "LAN", "wlan": "WLAN", "devices": "設備", - "lan_devices": "LAN設備", + "lan_devices": "有線設備", "wlan_devices": "無線設備", "empty_data": "子系統狀態未知" }, @@ -239,18 +239,18 @@ "uptime": "運行時間", "days": "天", "hours": "時", - "free": "Free", - "used": "Used", - "load": "Load", - "warn": "Warn", - "total": "Total" + "free": "未使用", + "used": "已使用", + "load": "負載量", + "warn": "警告", + "total": "總共" }, "changedetectionio": { "totalObserved": "總監測數", "diffsDetected": "偵測到的變更" }, "wmo": { - "0-day": "晴", + "0-day": "晴天", "0-night": "晴朗", "71-day": "小雪", "71-night": "小雪", @@ -312,7 +312,7 @@ "service": "服務", "search": "搜尋", "custom": "自訂", - "visit": "訪問", + "visit": "造訪", "url": "網址" }, "homebridge": { @@ -355,7 +355,7 @@ }, "pyload": { "speed": "速度", - "active": "運行中", + "active": "執行中", "queue": "佇列", "total": "全部" }, @@ -525,8 +525,8 @@ "kopia": { "status": "狀態", "size": "檔案大小", - "lastrun": "上次運行", - "nextrun": "下次運行", + "lastrun": "上次執行", + "nextrun": "下次執行", "failed": "失敗" }, "unmanic": { @@ -591,11 +591,11 @@ "updates": "可更新" }, "tailscale": { - "address": "Address", - "expires": "Expires", - "never": "Never", + "address": "位址", + "expires": "已失效", + "never": "未曾", "last_seen": "上次連線", - "now": "Now", + "now": "現在", "years": "{{number}} 年", "hours": "{{number}} 小時", "minutes": "{{number}} 分鐘", @@ -609,23 +609,23 @@ "memUsage": "記憶體使用率", "systemTempC": "系統溫度", "poolUsage": "儲存池使用率", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "儲存區用量", + "invalid": "無效的" }, "pfsense": { "load": "平均負載量", "memory": "記憶體使用率", "wanStatus": "網際網路狀態", - "up": "Up", - "down": "Down", + "up": "已連線", + "down": "已離線", "temp": "溫度", "disk": "硬碟使用率", - "wanIP": "WAN IP" + "wanIP": "網際網路 IP" }, "caddy": { "upstreams": "上行", - "requests": "Current requests", - "requests_failed": "Failed requests" + "requests": "目前請求數", + "requests_failed": "失敗請求" }, "evcc": { "grid_power": "電網", @@ -636,9 +636,9 @@ "watt_hour": "瓦時 (Wh)" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "全部", + "connected": "已連線", + "new_devices": "新裝置", + "down_alerts": "離線警告" } } From caa1b94fd6c435ddc486d216cfc0f15ffdde9805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Y=C4=B1ld=C4=B1r=C4=B1m=20Manisal=C4=B1?= Date: Wed, 31 May 2023 11:17:39 +0000 Subject: [PATCH 063/788] Translated using Weblate (Turkish) Currently translated at 85.4% (394 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 158 +++++++++++++++++----------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index d5be780e..a2a872f4 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -24,13 +24,13 @@ "used": "Kullanımda", "load": "Yük", "mem": "MEM", - "temp": "TEMP", - "max": "Max", - "uptime": "UP", - "months": "mo", - "days": "d", - "hours": "h", - "minutes": "m" + "temp": "Geçici", + "max": "En Yüksek", + "uptime": "Çalışma Süresi", + "months": "Ay", + "days": "Gün", + "hours": "Saat", + "minutes": "Dakika" }, "unifi": { "users": "Kullanıcılar", @@ -57,23 +57,23 @@ "offline": "Çevrimdışı", "error": "Hata", "unknown": "Bilinmiyor", - "running": "Running", - "starting": "Starting", - "unhealthy": "Unhealthy", - "not_found": "Not Found", - "exited": "Exited", - "partial": "Partial", - "healthy": "Healthy" + "running": "Çalışan", + "starting": "Başlatılıyor", + "unhealthy": "Sağlıksız", + "not_found": "Bulunamadı", + "exited": "Durduruldu", + "partial": "Parçalı", + "healthy": "Sağlık" }, "emby": { "playing": "Oynatılıyor", "transcoding": "Dönüştürülüyor", "bitrate": "Bit Oranı", "no_active": "Aktif akış yok", - "movies": "Movies", - "series": "Series", - "episodes": "Episodes", - "songs": "Songs" + "movies": "Filmler", + "series": "Diziler", + "episodes": "Bölümler", + "songs": "Şarkılar" }, "tautulli": { "playing": "Oynatılıyor", @@ -90,7 +90,7 @@ "streams": "Aktif Akış", "movies": "Filmler", "tv": "TV Showları", - "albums": "Albums" + "albums": "Albümler" }, "sabnzbd": { "rate": "Oran", @@ -159,7 +159,7 @@ "queries": "Sorgular", "blocked": "Engellenen", "gravity": "Yer Çekimi", - "blocked_percent": "Blocked %" + "blocked_percent": "Engellenen %" }, "adguard": { "queries": "Sorgular", @@ -235,15 +235,15 @@ "glances": { "cpu": "İşlemci", "wait": "Lütfen bekleyiniz", - "temp": "TEMP", - "uptime": "UP", - "days": "d", - "hours": "h", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free", - "used": "Used" + "temp": "Sıcaklık", + "uptime": "Çalışma Süresi", + "days": "Gün", + "hours": "Saat", + "load": "Yük", + "warn": "Uyarı", + "total": "Toplam", + "free": "Boş", + "used": "Kullanım" }, "changedetectionio": { "totalObserved": "Toplam Gözlenen", @@ -311,9 +311,9 @@ "bookmark": "Yer İmi", "service": "Hizmet", "search": "Ara", - "custom": "Custom", - "visit": "Visit", - "url": "URL" + "custom": "Özel", + "visit": "Ziyaret", + "url": "Link" }, "homebridge": { "available_update": "Sistem", @@ -384,14 +384,14 @@ "deluge": { "download": "İndir", "upload": "Yükle", - "leech": "Leech", + "leech": "Tüketici", "seed": "Tohum" }, "flood": { "download": "İndir", "upload": "Yükle", - "leech": "Leech", - "seed": "Tohum" + "leech": "Tüketici", + "seed": "Sağlayıcı" }, "tdarr": { "queue": "Sıra", @@ -421,7 +421,7 @@ "downloadstation": { "download": "İndir", "upload": "Yükle", - "leech": "Leech", + "leech": "Tüketici", "seed": "Tohum" }, "mikrotik": { @@ -448,7 +448,7 @@ "layers": "Katmanlar" }, "medusa": { - "wanted": "Wanted", + "wanted": "Aranan", "queued": "Kuyrukta", "series": "Seri" }, @@ -554,11 +554,11 @@ "targets_total": "Total Targets" }, "minecraft": { - "players": "Players", - "version": "Version", - "status": "Status", - "up": "Online", - "down": "Offline" + "players": "Oyuncular", + "version": "Versiyon", + "status": "Durum", + "up": "Çevrimiçi", + "down": "Çevrimdışı" }, "ghostfolio": { "gross_percent_today": "Today", @@ -577,40 +577,40 @@ "switches_on": "Switches On" }, "freshrss": { - "subscriptions": "Subscriptions", - "unread": "Unread" + "subscriptions": "Abonelikler", + "unread": "Okunmamış" }, "channelsdvrserver": { - "shows": "Shows", - "recordings": "Recordings", - "scheduled": "Scheduled", - "passes": "Passes" + "shows": "Diziler", + "recordings": "Kayıtlar", + "scheduled": "Planlanmış", + "passes": "Geçilenler" }, "whatsupdocker": { "monitoring": "Monitoring", "updates": "Updates" }, "tailscale": { - "never": "Never", - "last_seen": "Last Seen", - "now": "Now", - "years": "{{number}}y", - "weeks": "{{number}}w", - "days": "{{number}}d", - "hours": "{{number}}h", - "minutes": "{{number}}m", - "seconds": "{{number}}s", - "ago": "{{value}} Ago", - "address": "Address", - "expires": "Expires" + "never": "Asla", + "last_seen": "Son Görülme", + "now": "Şimdi", + "years": "{{number}} Yıl", + "weeks": "{{number}} Hafta", + "days": "{{number}} Gün", + "hours": "{{number}} Saat", + "minutes": "{{number}} Dakika", + "seconds": "{{number}} Saniye", + "ago": "{{value}} Önce", + "address": "Adres", + "expires": "Geciken" }, "qnap": { - "cpuUsage": "CPU Usage", - "memUsage": "MEM Usage", - "systemTempC": "System Temp", - "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "cpuUsage": "İşlemci Kullanımı", + "memUsage": "Bellek Kullanımı", + "systemTempC": "Sistem Sıcaklığı", + "poolUsage": "Havuz Kullanımı", + "volumeUsage": "Alan Kullanımı", + "invalid": "Geçersiz" }, "pfsense": { "load": "Load Avg", @@ -623,22 +623,22 @@ "wanIP": "WAN IP" }, "caddy": { - "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "upstreams": "Akış", + "requests": "Anlık İstekler", + "requests_failed": "Başarısız İstekler" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", - "watt_hour": "Wh" + "pv_power": "Üretim", + "battery_soc": "Batarya", + "grid_power": "Güç", + "home_power": "Tüketim", + "charge_power": "Şarj", + "watt_hour": "Watt/Saat" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Toplam", + "connected": "Bağlandı", + "new_devices": "Yeni Cihazlar", + "down_alerts": "Düşme Uyarıları" } } From 28e39e46ae949f0fb57872575bdbeee9aba8f40e Mon Sep 17 00:00:00 2001 From: Matteo Bossi Date: Fri, 2 Jun 2023 14:57:27 +0200 Subject: [PATCH 064/788] Add queue list --- src/components/services/widget/block-list.jsx | 31 ++++++++ src/components/services/widget/container.jsx | 6 +- src/widgets/radarr/component.jsx | 79 +++++++++++++++---- src/widgets/radarr/widget.js | 33 +++++++- src/widgets/sonarr/component.jsx | 75 +++++++++++++++--- src/widgets/sonarr/widget.js | 39 ++++++++- tailwind.config.js | 3 + 7 files changed, 232 insertions(+), 34 deletions(-) create mode 100644 src/components/services/widget/block-list.jsx diff --git a/src/components/services/widget/block-list.jsx b/src/components/services/widget/block-list.jsx new file mode 100644 index 00000000..138576bc --- /dev/null +++ b/src/components/services/widget/block-list.jsx @@ -0,0 +1,31 @@ +import { useTranslation } from "next-i18next"; +import { useCallback, useState } from 'react'; +import classNames from "classnames"; + +import ResolvedIcon from '../../resolvedicon'; + + +export default function BlockList({ label, children, childHeight }) { + const { t } = useTranslation(); + const [isOpen, setOpen] = useState(false); + + const changeState = useCallback(() => setOpen(!isOpen), [isOpen, setOpen]); + + return ( +
+ +
+ {children} +
+
+ ); +} diff --git a/src/components/services/widget/container.jsx b/src/components/services/widget/container.jsx index f4d8c13e..4b8a06ca 100644 --- a/src/components/services/widget/container.jsx +++ b/src/components/services/widget/container.jsx @@ -15,7 +15,9 @@ export default function Container({ error = false, children, service }) { return } - let visibleChildren = children; + const childrenArray = Array.isArray(children) ? children : [children]; + + let visibleChildren = childrenArray; const fields = service?.widget?.fields; const type = service?.widget?.type; if (fields && type) { @@ -24,7 +26,7 @@ export default function Container({ error = false, children, service }) { // fields: [ "resources.cpu", "resources.mem", "field"] // or even // fields: [ "resources.cpu", "widget_type.field" ] - visibleChildren = children?.filter(child => fields.some(field => { + visibleChildren = childrenArray?.filter(child => fields.some(field => { let fullField = field; if (!field.includes(".")) { fullField = `${type}.${field}`; diff --git a/src/widgets/radarr/component.jsx b/src/widgets/radarr/component.jsx index f8a932ea..4e53ef9a 100644 --- a/src/widgets/radarr/component.jsx +++ b/src/widgets/radarr/component.jsx @@ -1,7 +1,10 @@ import { useTranslation } from "next-i18next"; +import { useCallback } from 'react'; +import classNames from 'classnames'; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; +import BlockList from "components/services/widget/block-list"; import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { @@ -10,29 +13,75 @@ export default function Component({ service }) { const { data: moviesData, error: moviesError } = useWidgetAPI(widget, "movie"); const { data: queuedData, error: queuedError } = useWidgetAPI(widget, "queue/status"); + const { data: queueDetailsData, error: queueDetailsError } = useWidgetAPI(widget, "queue/details"); - if (moviesError || queuedError) { - const finalError = moviesError ?? queuedError; + // information taken from the Radarr docs: https://radarr.video/docs/api/ + const formatDownloadState = useCallback((downloadState) => { + switch (downloadState) { + case "importPending": + return "import pending"; + case "failedPending": + return "failed pending"; + default: + return downloadState; + } + }, []); + + if (moviesError || queuedError || queueDetailsError) { + const finalError = moviesError ?? queuedError ?? queueDetailsError; return ; } - if (!moviesData || !queuedData) { + if (!moviesData || !queuedData || !queueDetailsData) { return ( - - - - - - + <> + + + + + + + + + + ); } return ( - - - - - - + <> + + + + + + + + + {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( +
+
+
{moviesData.all.find((entry) => entry.id === queueEntry.movieId)?.title}
+
{formatDownloadState(queueEntry.trackedDownloadState)}
+
+
+
+
+
+
{queueEntry.timeLeft}
+
+
+ )) : undefined} + + + ); } diff --git a/src/widgets/radarr/widget.js b/src/widgets/radarr/widget.js index 78054219..0f53ab14 100644 --- a/src/widgets/radarr/widget.js +++ b/src/widgets/radarr/widget.js @@ -1,5 +1,5 @@ import genericProxyHandler from "utils/proxy/handlers/generic"; -import { jsonArrayFilter } from "utils/proxy/api-helpers"; +import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers"; const widget = { api: "{url}/api/v3/{endpoint}?apikey={key}", @@ -12,6 +12,7 @@ const widget = { wanted: jsonArrayFilter(data, (item) => item.monitored && !item.hasFile && item.isAvailable).length, have: jsonArrayFilter(data, (item) => item.hasFile).length, missing: jsonArrayFilter(data, (item) => item.monitored && !item.hasFile).length, + all: asJson(data), }), }, "queue/status": { @@ -20,6 +21,36 @@ const widget = { "totalCount" ] }, + "queue/details": { + endpoint: "queue/details", + map: (data) => asJson(data).map((entry) => ({ + trackedDownloadState: entry.trackedDownloadState, + trackedDownloadStatus: entry.trackedDownloadStatus, + timeLeft: entry.timeleft, + size: entry.size, + sizeLeft: entry.sizeleft, + movieId: entry.movieId + })).sort((a, b) => { + const downloadingA = a.trackedDownloadState === "downloading" + const downloadingB = b.trackedDownloadState === "downloading" + if (downloadingA && !downloadingB) { + return -1; + } + if (downloadingB && !downloadingA) { + return 1; + } + + const percentA = a.sizeLeft / a.size; + const percentB = b.sizeLeft / b.size; + if (percentA < percentB) { + return -1; + } + if (percentA > percentB) { + return 1; + } + return 0; + }) + }, }, }; diff --git a/src/widgets/sonarr/component.jsx b/src/widgets/sonarr/component.jsx index adbb8c30..9a0f98ae 100644 --- a/src/widgets/sonarr/component.jsx +++ b/src/widgets/sonarr/component.jsx @@ -1,8 +1,11 @@ import { useTranslation } from "next-i18next"; +import classNames from 'classnames'; +import { useCallback } from 'react'; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; +import BlockList from 'components/services/widget/block-list'; export default function Component({ service }) { const { t } = useTranslation(); @@ -11,27 +14,73 @@ export default function Component({ service }) { const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing"); const { data: queuedData, error: queuedError } = useWidgetAPI(widget, "queue"); const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series"); + const { data: queueDetailsData, error: queueDetailsError } = useWidgetAPI(widget, "queue/details"); - if (wantedError || queuedError || seriesError) { - const finalError = wantedError ?? queuedError ?? seriesError; + // information taken from the Sonarr docs: https://sonarr.tv/docs/api/ + const formatDownloadState = useCallback((downloadState) => { + switch (downloadState) { + case "importPending": + return "import pending"; + case "failedPending": + return "failed pending"; + default: + return downloadState; + } + }, []); + + if (wantedError || queuedError || seriesError || queueDetailsError) { + const finalError = wantedError ?? queuedError ?? seriesError ?? queueDetailsError; return ; } - if (!wantedData || !queuedData || !seriesData) { + if (!wantedData || !queuedData || !seriesData || !queueDetailsData) { return ( - - - - - + <> + + + + + + + + + ); } return ( - - - - - + <> + + + + + + + + {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( +
+
+
{seriesData.find((entry) => entry.id === queueEntry.seriesId).title} • {queueEntry.episodeTitle}
+
{formatDownloadState(queueEntry.trackedDownloadState)}
+
+
+
+
+
+
{queueEntry.timeLeft}
+
+
+ )) : undefined} + + + ); } diff --git a/src/widgets/sonarr/widget.js b/src/widgets/sonarr/widget.js index c1413975..80afdb99 100644 --- a/src/widgets/sonarr/widget.js +++ b/src/widgets/sonarr/widget.js @@ -8,9 +8,10 @@ const widget = { mappings: { series: { endpoint: "series", - map: (data) => ({ - total: asJson(data).length, - }) + map: (data) => asJson(data).map((entry) => ({ + title: entry.title, + id: entry.id + })) }, queue: { endpoint: "queue", @@ -24,6 +25,38 @@ const widget = { "totalRecords" ] }, + "queue/details": { + endpoint: "queue/details", + map: (data) => asJson(data).map((entry) => ({ + trackedDownloadState: entry.trackedDownloadState, + trackedDownloadStatus: entry.trackedDownloadStatus, + timeLeft: entry.timeleft, + size: entry.size, + sizeLeft: entry.sizeleft, + seriesId: entry.seriesId, + episodeTitle: entry.episode?.title, + episodeId: entry.episodeId + })).sort((a, b) => { + const downloadingA = a.trackedDownloadState === "downloading" + const downloadingB = b.trackedDownloadState === "downloading" + if (downloadingA && !downloadingB) { + return -1; + } + if (downloadingB && !downloadingA) { + return 1; + } + + const percentA = a.sizeLeft / a.size; + const percentB = b.sizeLeft / b.size; + if (percentA < percentB) { + return -1; + } + if (percentA > percentB) { + return 1; + } + return 0; + }) + } }, }; diff --git a/tailwind.config.js b/tailwind.config.js index b981051b..96c9e641 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -29,6 +29,9 @@ module.exports = { '3xl': '1800px', // => @media (min-width: 1800px) { ... } }, + transitionProperty: { + 'height': 'height' + }, }, }, plugins: [tailwindForms, tailwindScrollbars], From 0eab4e79437e61d3f0a12cbd2bab415d5f856df0 Mon Sep 17 00:00:00 2001 From: Matteo Bossi Date: Fri, 2 Jun 2023 15:46:43 +0200 Subject: [PATCH 065/788] Fix Mobile view --- src/widgets/radarr/component.jsx | 4 +++- src/widgets/sonarr/component.jsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/widgets/radarr/component.jsx b/src/widgets/radarr/component.jsx index 4e53ef9a..2e58bf9d 100644 --- a/src/widgets/radarr/component.jsx +++ b/src/widgets/radarr/component.jsx @@ -61,7 +61,9 @@ export default function Component({ service }) { {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => (
-
{moviesData.all.find((entry) => entry.id === queueEntry.movieId)?.title}
+
+
{moviesData.all.find((entry) => entry.id === queueEntry.movieId)?.title}
+
{formatDownloadState(queueEntry.trackedDownloadState)}
diff --git a/src/widgets/sonarr/component.jsx b/src/widgets/sonarr/component.jsx index 9a0f98ae..ee548b58 100644 --- a/src/widgets/sonarr/component.jsx +++ b/src/widgets/sonarr/component.jsx @@ -60,7 +60,9 @@ export default function Component({ service }) { {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => (
-
{seriesData.find((entry) => entry.id === queueEntry.seriesId).title} • {queueEntry.episodeTitle}
+
+
{seriesData.find((entry) => entry.id === queueEntry.seriesId).title} • {queueEntry.episodeTitle}
+
{formatDownloadState(queueEntry.trackedDownloadState)}
From c79d45f91e775b0d2eed070263021d0cffe695c9 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Sun, 16 Apr 2023 00:05:50 +0100 Subject: [PATCH 066/788] Add optional boxed styling and error component to information widgets Signed-off-by: Denis Papec --- src/components/widgets/datetime/datetime.jsx | 8 +++-- src/components/widgets/error.jsx | 23 +++++++++++++ src/components/widgets/glances/glances.jsx | 30 +++++++--------- src/components/widgets/greeting/greeting.jsx | 7 +++- .../widgets/kubernetes/kubernetes.jsx | 29 +++++++--------- src/components/widgets/logo/logo.jsx | 7 +++- src/components/widgets/longhorn/longhorn.jsx | 25 +++++++------- .../widgets/openmeteo/openmeteo.jsx | 34 +++++++++---------- .../widgets/openweathermap/weather.jsx | 33 +++++++++--------- .../widgets/resources/resources.jsx | 7 +++- src/components/widgets/search/search.jsx | 11 +++--- .../widgets/unifi_console/unifi_console.jsx | 26 +++++++------- src/components/widgets/weather/weather.jsx | 33 +++++++++--------- src/pages/api/widgets/longhorn.js | 2 +- 14 files changed, 153 insertions(+), 122 deletions(-) create mode 100644 src/components/widgets/error.jsx diff --git a/src/components/widgets/datetime/datetime.jsx b/src/components/widgets/datetime/datetime.jsx index 86983473..fc883ec3 100644 --- a/src/components/widgets/datetime/datetime.jsx +++ b/src/components/widgets/datetime/datetime.jsx @@ -1,5 +1,6 @@ import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; const textSizes = { "4xl": "text-4xl", @@ -17,7 +18,7 @@ export default function DateTime({ options }) { const { i18n } = useTranslation(); const [date, setDate] = useState(""); const dateLocale = locale ?? i18n.language; - + useEffect(() => { const dateFormat = new Intl.DateTimeFormat(dateLocale, { ...format }); const interval = setInterval(() => { @@ -27,7 +28,10 @@ export default function DateTime({ options }) { }, [date, setDate, dateLocale, format]); return ( -
+
{date} diff --git a/src/components/widgets/error.jsx b/src/components/widgets/error.jsx new file mode 100644 index 00000000..92e0076a --- /dev/null +++ b/src/components/widgets/error.jsx @@ -0,0 +1,23 @@ +import { useTranslation } from "react-i18next"; +import { BiError } from "react-icons/bi"; +import classNames from "classnames"; + +export default function Error({ options }) { + const { t } = useTranslation(); + + return ( +
+
+
+ +
+ {t("widget.api_error")} +
+
+
+
+ ); +} diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index 85dd44c0..b6daba7b 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,11 +1,12 @@ import useSWR from "swr"; import { useContext } from "react"; -import { BiError } from "react-icons/bi"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; import UsageBar from "../resources/usage-bar"; +import Error from "../error"; import { SettingsContext } from "utils/contexts/settings"; @@ -26,23 +27,15 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return ( -
-
-
- -
- {t("widget.api_error")} -
-
-
-
- ); + return } if (!data) { return ( -
+
@@ -101,7 +94,10 @@ export default function Widget({ options }) { } return ( - +
@@ -184,7 +180,7 @@ export default function Widget({ options }) {
- {t("common.number", { + {t("common.number", { value: mainTemp, maximumFractionDigits: 1, style: "unit", @@ -196,7 +192,7 @@ export default function Widget({ options }) { {options.expanded && (
- {t("common.number", { + {t("common.number", { value: maxTemp, maximumFractionDigits: 1, style: "unit", diff --git a/src/components/widgets/greeting/greeting.jsx b/src/components/widgets/greeting/greeting.jsx index da0f063d..2e129560 100644 --- a/src/components/widgets/greeting/greeting.jsx +++ b/src/components/widgets/greeting/greeting.jsx @@ -1,3 +1,5 @@ +import classNames from "classnames"; + const textSizes = { "4xl": "text-4xl", "3xl": "text-3xl", @@ -12,7 +14,10 @@ const textSizes = { export default function Greeting({ options }) { if (options.text) { return ( -
+
{options.text} diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx index 78c4caaf..514993da 100644 --- a/src/components/widgets/kubernetes/kubernetes.jsx +++ b/src/components/widgets/kubernetes/kubernetes.jsx @@ -1,12 +1,14 @@ import useSWR from "swr"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Node from "./node"; export default function Widget({ options }) { const { cluster, nodes } = options; - const { t, i18n } = useTranslation(); + const { i18n } = useTranslation(); const defaultData = { cpu: { @@ -29,23 +31,15 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return ( -
-
-
- -
- {t("widget.api_error")} -
-
-
-
- ); + return } if (!data) { return ( -
+
{cluster.show && @@ -59,7 +53,10 @@ export default function Widget({ options }) { } return ( -
+
{cluster.show && diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx index 96e8569f..6cba17bf 100644 --- a/src/components/widgets/logo/logo.jsx +++ b/src/components/widgets/logo/logo.jsx @@ -1,8 +1,13 @@ +import classNames from "classnames"; + import ResolvedIcon from "components/resolvedicon" export default function Logo({ options }) { return ( -
+
{options.icon ? : // fallback to homepage logo diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index 9fcb21b4..5139f00a 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -1,37 +1,36 @@ import useSWR from "swr"; -import { BiError } from "react-icons/bi"; -import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Node from "./node"; export default function Longhorn({ options }) { const { expanded, total, labels, include, nodes } = options; - const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/longhorn`, { refreshInterval: 1500 }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data) { return ( -
+
); } return ( -
+
{data.nodes .filter((node) => { diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index 0d29aef5..1381cc55 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -1,9 +1,11 @@ import useSWR from "swr"; import { useState } from "react"; -import { BiError } from "react-icons/bi"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Icon from "./icon"; @@ -15,24 +17,15 @@ function Widget({ options }) { ); if (error || data?.error) { - return ( -
-
-
- -
- {t("widget.api_error")} - - -
-
-
-
- ); + return } if (!data) { return ( -
+
@@ -50,7 +43,10 @@ function Widget({ options }) { const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"; return ( -
+
@@ -107,8 +103,10 @@ export default function OpenMeteo({ options }) { - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index b404039f..30531513 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -3,12 +3,17 @@ import { useState } from "react"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import ContainerButton from "../widget/container_button"; +import PrimaryText from "../widget/primary_text"; +import SecondaryText from "../widget/secondary_text"; +import WidgetIcon from "../widget/widget_icon"; import Icon from "./icon"; + function Widget({ options }) { const { t, i18n } = useTranslation(); @@ -21,48 +26,26 @@ function Widget({ options }) { } if (!data) { - return ( -
-
-
- -
-
- {t("weather.updating")} - {t("weather.wait")} -
-
-
- ); + return + {t("weather.updating")} + {t("weather.wait")} + + ; } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - return ( -
-
-
- data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"} - /> -
-
- - {options.label && `${options.label}, `} - {t("common.number", { value: data.main.temp, style: "unit", unit })} - - {data.weather[0].description} -
-
-
- ); + const weatherInfo = { + condition: data.weather[0].id, + timeOfDay: data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night" + }; + + return + {options.label && `${options.label}, `} + {t("common.number", { value: data.main.temp, style: "unit", unit })} + {data.weather[0].description} + + ; } export default function OpenWeatherMap({ options }) { @@ -94,33 +77,12 @@ export default function OpenWeatherMap({ options }) { } }; - // if (!requesting && !location) requestLocation(); - if (!location) { - return ( - - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 7069e3c4..242e7a3d 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FiCpu } from "react-icons/fi"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Cpu({ expanded }) { @@ -13,67 +18,38 @@ export default function Cpu({ expanded }) { }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data) { - return ( -
- -
-
-
-
-
{t("resources.cpu")}
-
- {expanded && ( -
-
-
-
{t("resources.load")}
-
- )} - -
-
- ); + return + + - + {t("resources.cpu")} + - + {t("resources.load")} + + } - const percent = data.cpu.usage; - - return ( -
- -
-
-
- {t("common.number", { - value: data.cpu.usage, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} -
-
{t("resources.cpu")}
-
- {expanded && ( -
-
- {t("common.number", { - value: data.cpu.load, - maximumFractionDigits: 2, - })} -
-
{t("resources.load")}
-
- )} - -
-
- ); + return + + + {t("common.number", { + value: data.cpu.usage, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} + + {t("resources.cpu")} + + {t("common.number", { + value: data.cpu.load, + maximumFractionDigits: 2, + })} + + {t("resources.load")} + + } diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index 571e6c8a..1a62aa31 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaThermometerHalf } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; function convertToFahrenheit(t) { @@ -17,34 +22,17 @@ export default function CpuTemp({ expanded, units }) { }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data || !data.cputemp) { - return ( -
- -
- -
-
-
{t("resources.temp")}
-
- {expanded && ( - -
-
-
{t("resources.max")}
-
- )} -
-
- ); + return + + - + {t("resources.temp")} + - + {t("resources.max")} + } let mainTemp = data.cputemp.main; @@ -54,38 +42,27 @@ export default function CpuTemp({ expanded, units }) { const unit = units === "imperial" ? "fahrenheit" : "celsius"; mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp); const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max); - const percent = Math.round((mainTemp / maxTemp) * 100); - return ( -
- -
- -
- {t("common.number", { - value: mainTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} -
-
{t("resources.temp")}
-
- {expanded && ( - -
- {t("common.number", { - value: maxTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} -
-
{t("resources.max")}
-
- )} - -
-
- ); + return + + + {t("common.number", { + value: mainTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} + + {t("resources.temp")} + + {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} + + {t("resources.max")} + + ; } diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index ca09c095..742ff9d7 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FiHardDrive } from "react-icons/fi"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Disk({ options, expanded }) { @@ -13,56 +18,29 @@ export default function Disk({ options, expanded }) { }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data) { - return ( -
- -
- -
-
-
{t("resources.free")}
-
- {expanded && ( - -
-
-
{t("resources.total")}
-
- )} - -
-
- ); + return + + - + {t("resources.free")} + - + {t("resources.total")} + + ; } // data.drive.used not accurate? const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100); - return ( -
- -
- -
{t("common.bytes", { value: data.drive.available })}
-
{t("resources.free")}
-
- {expanded && ( - -
{t("common.bytes", { value: data.drive.size })}
-
{t("resources.total")}
-
- )} - -
-
- ); + return + + {t("common.bytes", { value: data.drive.available })} + {t("resources.free")} + {t("common.bytes", { value: data.drive.size })} + {t("resources.total")} + + ; } diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 30b7c8eb..97c74acc 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaMemory } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Memory({ expanded }) { @@ -13,63 +18,34 @@ export default function Memory({ expanded }) { }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data) { - return ( -
- -
- -
-
-
{t("resources.free")}
-
- {expanded && ( - -
-
-
{t("resources.total")}
-
- )} - -
-
- ); + return + + - + {t("resources.free")} + - + {t("resources.total")} + + ; } const percent = Math.round((data.memory.active / data.memory.total) * 100); - return ( -
- -
- -
- {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} -
-
{t("resources.free")}
-
- {expanded && ( - -
- {t("common.bytes", { - value: data.memory.total, - maximumFractionDigits: 1, - binary: true, - })} -
-
{t("resources.total")}
-
- )} - -
-
- ); + return + + {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} + {t("resources.free")} + + {t("common.bytes", { + value: data.memory.total, + maximumFractionDigits: 1, + binary: true, + })} + + {t("resources.total")} + + ; } diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 5727a2a0..0cc2c301 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -1,4 +1,5 @@ -import classNames from "classnames"; +import Container from "../widget/container"; +import Raw from "../widget/raw"; import Disk from "./disk"; import Cpu from "./cpu"; @@ -8,11 +9,8 @@ import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units } = options; - return ( -
+ return +
{options.cpu && } {options.memory && } @@ -25,6 +23,6 @@ export default function Resources({ options }) { {options.label && (
{options.label}
)} -
- ); +
+
; } diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 3bf785b1..6cc2b8c5 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaRegClock } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Uptime() { @@ -13,35 +18,22 @@ export default function Uptime() { }); if (error || data?.error) { - return ( -
- -
- {t("widget.api_error")} -
-
- ); + return } if (!data) { - return ( -
- -
- -
-
-
{t("resources.temp")}
-
-
-
- ); + return + + - + {t("resources.uptime")} + ; } const mo = Math.floor(data.uptime / (3600 * 24 * 31)); const d = Math.floor(data.uptime % (3600 * 24 * 31) / (3600 * 24)); const h = Math.floor(data.uptime % (3600 * 24) / 3600); const m = Math.floor(data.uptime % 3600 / 60); - + let uptime; if (mo > 0) uptime = `${mo}${t("resources.months")} ${d}${t("resources.days")}`; else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`; @@ -49,18 +41,10 @@ export default function Uptime() { const percent = Math.round((new Date().getSeconds() / 60) * 100); - return ( -
- -
- -
- {uptime} -
-
{t("resources.uptime")}
-
- -
-
- ); + return + + {uptime} + {t("resources.uptime")} + + ; } diff --git a/src/components/widgets/search/search.jsx b/src/components/widgets/search/search.jsx index bca3eb58..1bac4a61 100644 --- a/src/components/widgets/search/search.jsx +++ b/src/components/widgets/search/search.jsx @@ -1,10 +1,13 @@ -import { useState, useEffect, Fragment } from "react"; +import { useState, useEffect, useCallback, Fragment } from "react"; import { useTranslation } from "next-i18next"; import { FiSearch } from "react-icons/fi"; import { SiDuckduckgo, SiMicrosoftbing, SiGoogle, SiBaidu, SiBrave } from "react-icons/si"; import { Listbox, Transition } from "@headlessui/react"; import classNames from "classnames"; +import ContainerForm from "../widget/container_form"; +import Raw from "../widget/raw"; + export const searchProviders = { google: { name: "Google", @@ -77,13 +80,8 @@ export default function Search({ options }) { } }, [availableProviderIds]); - if (!availableProviderIds) { - return null; - } - - function handleSubmit(event) { + const submitCallback = useCallback(event => { const q = encodeURIComponent(query); - const { url } = selectedProvider; if (url) { window.open(`${url}${q}`, options.target || "_blank"); @@ -94,6 +92,10 @@ export default function Search({ options }) { event.preventDefault(); event.target.reset(); setQuery(""); + }, [options.target, options.url, query, selectedProvider]); + + if (!availableProviderIds) { + return null; } const onChangeProvider = (provider) => { @@ -101,80 +103,79 @@ export default function Search({ options }) { localStorage.setItem(localStorageKey, provider.name); } - return ( - -
- setQuery(s.currentTarget.value)} - required - autoCapitalize="off" - autoCorrect="off" - autoComplete="off" - // eslint-disable-next-line jsx-a11y/no-autofocus - autoFocus={options.focus} - /> - -
- + +
+
+ setQuery(s.currentTarget.value)} + required + autoCapitalize="off" + autoCorrect="off" + autoComplete="off" + // eslint-disable-next-line jsx-a11y/no-autofocus + autoFocus={options.focus} + /> + +
+ + + {t("search.search")} + +
+ - - {t("search.search")} - -
- - -
- {availableProviderIds.map((providerId) => { - const p = searchProviders[providerId]; - return ( - - {({ active }) => ( -
  • - -
  • - )} -
    - ); - })} -
    -
    -
    - - - ); + +
    + {availableProviderIds.map((providerId) => { + const p = searchProviders[providerId]; + return ( + + {({ active }) => ( +
  • + +
  • + )} +
    + ); + })} +
    +
    + + +
    +
    + ; } diff --git a/src/components/widgets/unifi_console/unifi_console.jsx b/src/components/widgets/unifi_console/unifi_console.jsx index 1896771f..dad92cc7 100644 --- a/src/components/widgets/unifi_console/unifi_console.jsx +++ b/src/components/widgets/unifi_console/unifi_console.jsx @@ -2,9 +2,12 @@ import { BiError, BiWifi, BiCheckCircle, BiXCircle, BiNetworkChart } from "react import { MdSettingsEthernet } from "react-icons/md"; import { useTranslation } from "next-i18next"; import { SiUbiquiti } from "react-icons/si"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import Raw from "../widget/raw"; +import WidgetIcon from "../widget/widget_icon"; +import PrimaryText from "../widget/primary_text"; import useWidgetAPI from "utils/proxy/use-widget-api"; @@ -22,21 +25,10 @@ export default function Widget({ options }) { const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default"); if (!defaultSite) { - return ( -
    -
    -
    - -
    -
    - {t("unifi.wait")} -
    -
    -
    - ); + return + {t("unifi.wait")} + + ; } const wan = defaultSite.health.find(h => h.subsystem === "wan"); @@ -51,11 +43,9 @@ export default function Widget({ options }) { const dataEmpty = !(wan.show || lan.show || wlan.show || uptime); - return ( -
    + return + +
    @@ -139,6 +129,7 @@ export default function Widget({ options }) {
    }
    -
    - ); +
    + + } diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 51801455..702ea669 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -3,9 +3,13 @@ import { useState } from "react"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import PrimaryText from "../widget/primary_text"; +import SecondaryText from "../widget/secondary_text"; +import WidgetIcon from "../widget/widget_icon"; +import ContainerButton from "../widget/container_button"; import Icon from "./icon"; @@ -21,49 +25,31 @@ function Widget({ options }) { } if (!data) { - return ( -
    -
    -
    - -
    -
    - {t("weather.updating")} - {t("weather.wait")} -
    -
    -
    - ); + return + {t("weather.updating")} + {t("weather.wait")} + + ; } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; + const weatherInfo = { + condition: data.current.condition.code, + timeOfDay: data.current.is_day ? "day" : "night", + }; - return ( -
    -
    -
    - -
    -
    - - {options.label && `${options.label}, `} - {t("common.number", { - value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, - style: "unit", - unit, - })} - - {data.current.condition.text} -
    -
    -
    - ); + return + + {options.label && `${options.label}, `} + {t("common.number", { + value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, + style: "unit", + unit, + })} + + {data.current.condition.text} + + ; } export default function WeatherApi({ options }) { @@ -95,33 +81,12 @@ export default function WeatherApi({ options }) { } }; - // if (!requesting && !location) requestLocation(); - if (!location) { - return ( - - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/widget.jsx b/src/components/widgets/widget.jsx index 47141887..b4fdb143 100644 --- a/src/components/widgets/widget.jsx +++ b/src/components/widgets/widget.jsx @@ -17,13 +17,13 @@ const widgetMappings = { kubernetes: dynamic(() => import("components/widgets/kubernetes/kubernetes")), }; -export default function Widget({ widget }) { +export default function Widget({ widget, style }) { const InfoWidget = widgetMappings[widget.type]; if (InfoWidget) { return ( - + ); } diff --git a/src/components/widgets/widget/container.jsx b/src/components/widgets/widget/container.jsx new file mode 100644 index 00000000..3a4a9f57 --- /dev/null +++ b/src/components/widgets/widget/container.jsx @@ -0,0 +1,42 @@ +import classNames from "classnames"; + +import WidgetIcon from "./widget_icon"; +import PrimaryText from "./primary_text"; +import SecondaryText from "./secondary_text"; +import Raw from "./raw"; + +export function getAllClasses(options, additionalClassNames = '') { + return classNames( + "flex flex-col justify-center first:ml-0 ml-4 mr-2", + additionalClassNames, + options?.style === "boxedWidgets" && " ml-4 mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3", + ); +} + +export function getInnerBlock(children) { + // children won't be an array if it's Raw component + return Array.isArray(children) &&
    +
    {children.find(child => child.type === WidgetIcon)}
    +
    + {children.find(child => child.type === PrimaryText)} + {children.find(child => child.type === SecondaryText)} +
    +
    ; +} + +export function getBottomBlock(children) { + if (children.type !== Raw) { + return children.find(child => child.type === Raw) || []; + } + + return [children]; +} + +export default function Container({ children = [], options, additionalClassNames = '' }) { + return ( +
    + {getInnerBlock(children)} + {getBottomBlock(children)} +
    + ); +} diff --git a/src/components/widgets/widget/container_button.jsx b/src/components/widgets/widget/container_button.jsx new file mode 100644 index 00000000..92d8a416 --- /dev/null +++ b/src/components/widgets/widget/container_button.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerButton ({ children = [], options, additionalClassNames = '', callback }) { + return ( + + ); +} diff --git a/src/components/widgets/widget/container_form.jsx b/src/components/widgets/widget/container_form.jsx new file mode 100644 index 00000000..7d28a1bb --- /dev/null +++ b/src/components/widgets/widget/container_form.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerForm ({ children = [], options, additionalClassNames = '', callback }) { + return ( +
    + {getInnerBlock(children)} + {getBottomBlock(children)} +
    + ); +} diff --git a/src/components/widgets/widget/container_link.jsx b/src/components/widgets/widget/container_link.jsx new file mode 100644 index 00000000..8ef0e80a --- /dev/null +++ b/src/components/widgets/widget/container_link.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerLink ({ children = [], options, additionalClassNames = '', target }) { + return ( + + {getInnerBlock(children)} + {getBottomBlock(children)} + + ); +} diff --git a/src/components/widgets/widget/error.jsx b/src/components/widgets/widget/error.jsx new file mode 100644 index 00000000..a3dbab85 --- /dev/null +++ b/src/components/widgets/widget/error.jsx @@ -0,0 +1,15 @@ +import { useTranslation } from "react-i18next"; +import { BiError } from "react-icons/bi"; + +import Container from "./container"; +import PrimaryText from "./primary_text"; +import WidgetIcon from "./widget_icon"; + +export default function Error({ options }) { + const { t } = useTranslation(); + + return + {t("widget.api_error")} + + ; +} diff --git a/src/components/widgets/widget/primary_text.jsx b/src/components/widgets/widget/primary_text.jsx new file mode 100644 index 00000000..3418b92c --- /dev/null +++ b/src/components/widgets/widget/primary_text.jsx @@ -0,0 +1,5 @@ +export default function PrimaryText({ children }) { + return ( + {children} + ); +} diff --git a/src/components/widgets/widget/raw.jsx b/src/components/widgets/widget/raw.jsx new file mode 100644 index 00000000..44e3dddc --- /dev/null +++ b/src/components/widgets/widget/raw.jsx @@ -0,0 +1,7 @@ +export default function Raw({ children }) { + if (children.type === Raw) { + return [children]; + } + + return children; +} diff --git a/src/components/widgets/widget/resource_label.jsx b/src/components/widgets/widget/resource_label.jsx new file mode 100644 index 00000000..87f2ad22 --- /dev/null +++ b/src/components/widgets/widget/resource_label.jsx @@ -0,0 +1,5 @@ +export default function ResourceLabel({ children }) { + return ( +
    {children}
    + ); +} diff --git a/src/components/widgets/widget/resource_value.jsx b/src/components/widgets/widget/resource_value.jsx new file mode 100644 index 00000000..8971c748 --- /dev/null +++ b/src/components/widgets/widget/resource_value.jsx @@ -0,0 +1,5 @@ +export default function ResourceValue({ children }) { + return ( +
    {children}
    + ); +} diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx new file mode 100644 index 00000000..0771ec5e --- /dev/null +++ b/src/components/widgets/widget/resources.jsx @@ -0,0 +1,15 @@ +import ContainerLink from "./container_link"; +import SingleResource from "./single_resource"; +import Raw from "./raw"; +import WidgetLabel from "./widget_label"; + +export default function Resources({ options, children, target }) { + return + +
    + {children.filter(child => child && child.type === SingleResource)} +
    + {children.filter(child => child && child.type === WidgetLabel)} +
    +
    ; +} diff --git a/src/components/widgets/widget/secondary_text.jsx b/src/components/widgets/widget/secondary_text.jsx new file mode 100644 index 00000000..363d1bd0 --- /dev/null +++ b/src/components/widgets/widget/secondary_text.jsx @@ -0,0 +1,5 @@ +export default function SecondaryText({ children }) { + return ( + {children} + ); +} diff --git a/src/components/widgets/widget/single_resource.jsx b/src/components/widgets/widget/single_resource.jsx new file mode 100644 index 00000000..7a83d8be --- /dev/null +++ b/src/components/widgets/widget/single_resource.jsx @@ -0,0 +1,28 @@ +import UsageBar from "../resources/usage-bar"; + +import WidgetIcon from "./widget_icon"; +import ResourceValue from "./resource_value"; +import ResourceLabel from "./resource_label"; +import Raw from "./raw"; + +export default function SingleResource({ children, key, expanded = false }) { + const values = children.filter(child => child.type === ResourceValue); + const labels = children.filter(child => child.type === ResourceLabel); + + return
    + {children.find(child => child.type === WidgetIcon)} +
    +
    + {values.pop()} + {labels.pop()} +
    + { expanded &&
    + {values.pop()} + {labels.pop()} +
    + } + {children.find(child => child.type === UsageBar)} +
    + {children.find(child => child.type === Raw)} +
    ; +} diff --git a/src/components/widgets/widget/widget_icon.jsx b/src/components/widgets/widget/widget_icon.jsx new file mode 100644 index 00000000..9766a879 --- /dev/null +++ b/src/components/widgets/widget/widget_icon.jsx @@ -0,0 +1,18 @@ +export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInfo = {} }) { + const Icon = icon; + const { condition, timeOfDay } = weatherInfo; + let additionalClasses = "text-theme-800 dark:text-theme-200 "; + + switch (size) { + case "m": additionalClasses += "w-6 h-6 "; break; + case "l": additionalClasses += "w-8 h-8 "; break; + case "xl": additionalClasses += "w-10 h-10 "; break; + default: additionalClasses += "w-5 h-5 "; + } + + if (pulse) { + additionalClasses += "animate-pulse "; + } + + return ; +} diff --git a/src/components/widgets/widget/widget_label.jsx b/src/components/widgets/widget/widget_label.jsx new file mode 100644 index 00000000..dcb9b9e9 --- /dev/null +++ b/src/components/widgets/widget/widget_label.jsx @@ -0,0 +1,3 @@ +export default function WidgetLabel({ label = "" }) { + return
    {label}
    +} diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 06e55010..902c79df 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -160,6 +160,7 @@ const headerStyles = { "m-4 mb-0 sm:m-8 sm:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-3", underlined: "m-4 mb-0 sm:m-8 sm:mb-1 border-b-2 pb-4 border-theme-800 dark:border-theme-200/50", clean: "m-4 mb-0 sm:m-8 sm:mb-0", + boxedWidgets: "m-4 mb-0 sm:m-8 sm:mb-0 sm:mt-1", }; function Home({ initialSettings }) { @@ -208,6 +209,7 @@ function Home({ initialSettings }) { searchProvider = searchProviders[searchWidget.options?.provider]; } } + const headerStyle = initialSettings?.headerStyle || "underlined"; useEffect(() => { function handleKeyDown(e) { @@ -256,7 +258,7 @@ function Home({ initialSettings }) {
    !rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))} -
    +
    {widgets .filter((widget) => rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))}
    From 7e54b80d73547d6cd338c5ced05f763df0986a5c Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Sat, 3 Jun 2023 15:29:24 +0000 Subject: [PATCH 068/788] Translated using Weblate (French) Currently translated at 100.0% (461 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 2e9e0e0d..a85eb438 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -397,7 +397,7 @@ "queue": "À traiter", "processed": "Traité", "errored": "En erreur", - "saved": "Economisé" + "saved": "Gagné" }, "miniflux": { "read": "Lu", From f05ac3247d438b19ea0d53cc99018332339c1fb5 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Fri, 2 Jun 2023 21:49:58 +0000 Subject: [PATCH 069/788] Translated using Weblate (Croatian) Currently translated at 99.5% (459 of 461 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 50 +++++++++++++++++------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index db20a999..268a1f89 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -239,11 +239,11 @@ "uptime": "UP", "days": "d", "hours": "h", - "used": "Used", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free" + "used": "Korišteno", + "load": "Opterećenje", + "warn": "Upozori", + "total": "Ukupno", + "free": "Slobodno" }, "changedetectionio": { "totalObserved": "Ukupno promatrano", @@ -478,7 +478,7 @@ "up": "Aktivne stranice", "down": "Neaktivne stranice", "uptime": "Radno vrijeme", - "incident": "Incident", + "incident": "Slučaj", "m": "min" }, "komga": { @@ -609,36 +609,36 @@ "poolUsage": "Korištenje memorijskog skupa", "cpuUsage": "Korištenje procesora", "memUsage": "Korištenje memorije", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Korištenje jedinice memorije", + "invalid": "Neispravno" }, "pfsense": { - "load": "Load Avg", - "memory": "Mem Usage", - "wanStatus": "WAN Status", + "load": "Prosječno opterećenje", + "memory": "Korištenje memorije", + "wanStatus": "Stanje WAN-a", "up": "Up", "down": "Down", - "temp": "Temp", - "disk": "Disk Usage", + "temp": "Temperatura", + "disk": "Korištenje diska", "wanIP": "WAN IP" }, "caddy": { - "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "upstreams": "Glavne grane", + "requests": "Aktualni zahtjevi", + "requests_failed": "Neuspjeli zahtjevi" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", + "pv_power": "Proizvodnja", + "battery_soc": "Baterija", + "grid_power": "Raspored", + "home_power": "Potrošnja", + "charge_power": "Punjač", "watt_hour": "Wh" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Ukupno", + "connected": "Povezano", + "new_devices": "Novi uređaji", + "down_alerts": "Obavijest o rušenju" } } From f656c2b46d5940a0ccdadb7bff73f4ba29e7030b Mon Sep 17 00:00:00 2001 From: RoyK Date: Mon, 5 Jun 2023 16:06:14 +0200 Subject: [PATCH 070/788] fix(service-helper): service detection with Docker Swarm The current implementation of service detection focusses on containers. However when using Docker Swarm this limits automatic service detection to the containers running on the same node as homepage (or docker-proxy). Detecting other services in the docker swarm is with the current implementation not possible. This commit fixes this by getting the appropriate labels from services when Docker swarm is configured in the config file. This ensures that the appropriate labels are gathered from the service definition instead of the container definiation, thus allowing for automatic service detection for the entire Docker swarm. Please note that in order for this to function the homepage (or dockerproxy) should be running on a manager node. Only the manager node is able to gather all the relevant service labels. Fixes: #752, #970, #955, #1255, #1045, #1496 --- src/utils/config/service-helpers.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 7f9d45e4..00c236eb 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -62,11 +62,14 @@ export async function servicesFromDocker() { const serviceServers = await Promise.all( Object.keys(servers).map(async (serverName) => { + const isSwarm = servers[serverName].swarm ?? false; + try { + const listProperties = { all: true }; + const labelProperty = (isSwarm) ? 'Spec.Labels' : 'Labels'; + const nameProperty = (isSwarm) ? 'Spec.Name' : 'Name[0]'; const docker = new Docker(getDockerArguments(serverName).conn); - const containers = await docker.listContainers({ - all: true, - }); + const containers = await ((isSwarm) ? docker.listServices(listProperties) : docker.listContainers(listProperties)); // bad docker connections can result in a object? // in any case, this ensures the result is the expected array @@ -76,17 +79,18 @@ export async function servicesFromDocker() { const discovered = containers.map((container) => { let constructedService = null; + const labels = shvl.get(container, labelProperty); - Object.keys(container.Labels).forEach((label) => { + Object.keys(labels).forEach((label) => { if (label.startsWith("homepage.")) { if (!constructedService) { constructedService = { - container: container.Names[0].replace(/^\//, ""), + container: shvl.get(container, nameProperty).replace(/^\//, ""), server: serverName, type: 'service' }; } - shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(container.Labels[label])); + shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(labels[label])); } }); From 8f0cd7e088bd0ec2a630ebcbb5eab4f790c5188e Mon Sep 17 00:00:00 2001 From: Cyb3rzombie Date: Mon, 5 Jun 2023 16:23:37 +0200 Subject: [PATCH 071/788] Add support for auth token --- src/utils/proxy/handlers/credentialed.js | 6 ++++++ src/widgets/paperlessngx/widget.js | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 5d4b7e3b..8fa975d0 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -55,6 +55,12 @@ export default async function credentialedProxyHandler(req, res, map) { } else { headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; } + } else if (widget.type === "paperlessngx") { + if (widget.key) { + headers.Authorization = `Token ${widget.key}`; + } else { + headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; + } } else { headers["X-API-Key"] = `${widget.key}`; } diff --git a/src/widgets/paperlessngx/widget.js b/src/widgets/paperlessngx/widget.js index 8af8079d..de37f595 100644 --- a/src/widgets/paperlessngx/widget.js +++ b/src/widgets/paperlessngx/widget.js @@ -1,8 +1,8 @@ -import genericProxyHandler from "utils/proxy/handlers/generic"; +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; const widget = { api: "{url}/api/{endpoint}", - proxyHandler: genericProxyHandler, + proxyHandler: credentialedProxyHandler, mappings: { "statistics": { From a55fe939cbbc32dc636d2e61127acda30333aa81 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Mon, 5 Jun 2023 23:18:18 +0100 Subject: [PATCH 072/788] Further improvements to simplify information widgets Signed-off-by: Denis Papec --- src/components/widgets/glances/glances.jsx | 130 ++++++++---------- src/components/widgets/longhorn/node.jsx | 25 ++-- src/components/widgets/resources/cpu.jsx | 54 +++----- src/components/widgets/resources/cputemp.jsx | 63 ++++----- src/components/widgets/resources/disk.jsx | 41 +++--- src/components/widgets/resources/memory.jsx | 47 +++---- src/components/widgets/resources/uptime.jsx | 22 +-- src/components/widgets/widget/resource.jsx | 22 +++ .../widgets/widget/resource_label.jsx | 5 - .../widgets/widget/resource_value.jsx | 5 - src/components/widgets/widget/resources.jsx | 6 +- .../widgets/widget/single_resource.jsx | 28 ---- 12 files changed, 181 insertions(+), 267 deletions(-) create mode 100644 src/components/widgets/widget/resource.jsx delete mode 100644 src/components/widgets/widget/resource_label.jsx delete mode 100644 src/components/widgets/widget/resource_value.jsx delete mode 100644 src/components/widgets/widget/single_resource.jsx diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index debb09c7..b45dfefe 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -4,12 +4,8 @@ import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import UsageBar from "../resources/usage-bar"; import Error from "../widget/error"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Resources from "../widget/resources"; import WidgetLabel from "../widget/widget_label"; @@ -37,31 +33,11 @@ export default function Widget({ options }) { if (!data) { return - - - {t("glances.wait")} - - - - - {t("glances.wait")} - - - {options.cputemp && - - - {t("glances.wait")} - - - } - {options.uptime && - - - {t("glances.wait")} - - - } - {options.label && } + + + { options.cputemp && } + { options.uptime && } + { options.label && } ; } @@ -93,77 +69,81 @@ export default function Widget({ options }) { return ( - - - {t("common.number", { + - {t("glances.cpu")} - {t("common.number", { + })} + label={t("glances.cpu")} + expandedValue={t("common.number", { value: data.load.min15, style: "unit", unit: "percent", - maximumFractionDigits: 0, - })} - {t("glances.load")} - - - - - {t("common.bytes", { + maximumFractionDigits: 0 + })} + expandedLabel={t("glances.load")} + percentage={data.cpu.total} + expanded={options.expanded} + /> + - {t("glances.free")} - {t("common.bytes", { + })} + label={t("glances.free")} + expandedValue={t("common.bytes", { value: data.mem.total, maximumFractionDigits: 1, binary: true, - })} - {t("glances.total")} - - + })} + expandedLabel={t("glances.total")} + percentage={data.mem.percent} + expanded={options.expanded} + /> {disks.map((disk) => ( - - - {t("common.bytes", { value: disk.free })} - {t("glances.free")} - {t("common.bytes", { value: disk.size })} - {t("glances.total")} - - + ))} {options.cputemp && mainTemp > 0 && - - - {t("common.number", { + - {t("glances.temp")} - {t("common.number", { + })} + label={t("glances.temp")} + expandedValue={t("common.number", { value: maxTemp, maximumFractionDigits: 1, style: "unit", unit - })} - {t("glances.warn")} - - + })} + expandedLabel={t("glances.warn")} + percentage={tempPercent} + expanded={options.expanded} + /> } {options.uptime && data.uptime && - - - {data.uptime.replace(" days,", t("glances.days")).replace(/:\d\d:\d\d$/g, t("glances.hours"))} - {t("glances.uptime")} - - + } {options.label && } diff --git a/src/components/widgets/longhorn/node.jsx b/src/components/widgets/longhorn/node.jsx index 9983486e..5235698a 100644 --- a/src/components/widgets/longhorn/node.jsx +++ b/src/components/widgets/longhorn/node.jsx @@ -1,23 +1,20 @@ import { useTranslation } from "next-i18next"; import { FaThermometerHalf } from "react-icons/fa"; -import UsageBar from "../resources/usage-bar"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import WidgetLabel from "../widget/widget_label"; export default function Node({ data, expanded, labels }) { const { t } = useTranslation(); - return - - {t("common.bytes", { value: data.node.available })} - {t("resources.free")} - {t("common.bytes", { value: data.node.maximum })} - {t("resources.total")} - - { labels && } - + return { labels && } + } diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 242e7a3d..12972fe8 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FiCpu } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Cpu({ expanded }) { const { t } = useTranslation(); @@ -22,34 +17,25 @@ export default function Cpu({ expanded }) { } if (!data) { - return - - - - {t("resources.cpu")} - - - {t("resources.load")} - - + return } - return - - - {t("common.number", { - value: data.cpu.usage, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} - - {t("resources.cpu")} - - {t("common.number", { - value: data.cpu.load, - maximumFractionDigits: 2, - })} - - {t("resources.load")} - - + return } diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index 1a62aa31..ba6d9b73 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaThermometerHalf } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - function convertToFahrenheit(t) { return t * 9/5 + 32 } @@ -26,13 +21,14 @@ export default function CpuTemp({ expanded, units }) { } if (!data || !data.cputemp) { - return - - - - {t("resources.temp")} - - - {t("resources.max")} - + return ; } let mainTemp = data.cputemp.main; @@ -43,26 +39,23 @@ export default function CpuTemp({ expanded, units }) { mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp); const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max); - return - - - {t("common.number", { - value: mainTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} - - {t("resources.temp")} - - {t("common.number", { - value: maxTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} - - {t("resources.max")} - - ; + return ; } diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index 742ff9d7..ab56624d 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Disk({ options, expanded }) { const { t } = useTranslation(); @@ -22,25 +17,27 @@ export default function Disk({ options, expanded }) { } if (!data) { - return - - - - {t("resources.free")} - - - {t("resources.total")} - - ; + return ; } // data.drive.used not accurate? const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100); - return - - {t("common.bytes", { value: data.drive.available })} - {t("resources.free")} - {t("common.bytes", { value: data.drive.size })} - {t("resources.total")} - - ; + return ; } diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 97c74acc..19ae8687 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaMemory } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Memory({ expanded }) { const { t } = useTranslation(); @@ -22,30 +17,26 @@ export default function Memory({ expanded }) { } if (!data) { - return - - - - {t("resources.free")} - - - {t("resources.total")} - - ; + return ; } const percent = Math.round((data.memory.active / data.memory.total) * 100); - return - - {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} - {t("resources.free")} - - {t("common.bytes", { - value: data.memory.total, - maximumFractionDigits: 1, - binary: true, - })} - - {t("resources.total")} - - ; + return ; } diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 6cc2b8c5..3984975f 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaRegClock } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Uptime() { const { t } = useTranslation(); @@ -22,11 +17,7 @@ export default function Uptime() { } if (!data) { - return - - - - {t("resources.uptime")} - ; + return ; } const mo = Math.floor(data.uptime / (3600 * 24 * 31)); @@ -39,12 +30,7 @@ export default function Uptime() { else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`; else uptime = `${h}${t("resources.hours")} ${m}${t("resources.minutes")}`; - const percent = Math.round((new Date().getSeconds() / 60) * 100); + const percent = Math.round((new Date().getSeconds() / 60) * 100).toString(); - return - - {uptime} - {t("resources.uptime")} - - ; + return ; } diff --git a/src/components/widgets/widget/resource.jsx b/src/components/widgets/widget/resource.jsx new file mode 100644 index 00000000..e77bcb5a --- /dev/null +++ b/src/components/widgets/widget/resource.jsx @@ -0,0 +1,22 @@ +import UsageBar from "../resources/usage-bar"; + +export default function Resource({ children, icon, value, label, expandedValue, expandedLabel, percentage, key, expanded = false }) { + const Icon = icon; + + return
    + +
    +
    +
    {value}
    +
    {label}
    +
    + { expanded &&
    +
    {expandedValue}
    +
    {expandedLabel}
    +
    + } + { percentage && } + { children } +
    +
    ; +} diff --git a/src/components/widgets/widget/resource_label.jsx b/src/components/widgets/widget/resource_label.jsx deleted file mode 100644 index 87f2ad22..00000000 --- a/src/components/widgets/widget/resource_label.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function ResourceLabel({ children }) { - return ( -
    {children}
    - ); -} diff --git a/src/components/widgets/widget/resource_value.jsx b/src/components/widgets/widget/resource_value.jsx deleted file mode 100644 index 8971c748..00000000 --- a/src/components/widgets/widget/resource_value.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function ResourceValue({ children }) { - return ( -
    {children}
    - ); -} diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx index 0771ec5e..19fb021d 100644 --- a/src/components/widgets/widget/resources.jsx +++ b/src/components/widgets/widget/resources.jsx @@ -1,5 +1,5 @@ import ContainerLink from "./container_link"; -import SingleResource from "./single_resource"; +import Resource from "./resource"; import Raw from "./raw"; import WidgetLabel from "./widget_label"; @@ -7,9 +7,9 @@ export default function Resources({ options, children, target }) { return
    - {children.filter(child => child && child.type === SingleResource)} + { children.filter(child => child && child.type === Resource) }
    - {children.filter(child => child && child.type === WidgetLabel)} + { children.filter(child => child && child.type === WidgetLabel) }
    ; } diff --git a/src/components/widgets/widget/single_resource.jsx b/src/components/widgets/widget/single_resource.jsx deleted file mode 100644 index 7a83d8be..00000000 --- a/src/components/widgets/widget/single_resource.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import UsageBar from "../resources/usage-bar"; - -import WidgetIcon from "./widget_icon"; -import ResourceValue from "./resource_value"; -import ResourceLabel from "./resource_label"; -import Raw from "./raw"; - -export default function SingleResource({ children, key, expanded = false }) { - const values = children.filter(child => child.type === ResourceValue); - const labels = children.filter(child => child.type === ResourceLabel); - - return
    - {children.find(child => child.type === WidgetIcon)} -
    -
    - {values.pop()} - {labels.pop()} -
    - { expanded &&
    - {values.pop()} - {labels.pop()} -
    - } - {children.find(child => child.type === UsageBar)} -
    - {children.find(child => child.type === Raw)} -
    ; -} From 5b3d1cc6e06ef71d2d9bf8fe4d396c7383c57370 Mon Sep 17 00:00:00 2001 From: Matteo Bossi Date: Tue, 6 Jun 2023 01:14:10 +0200 Subject: [PATCH 073/788] Make styling more consistent and add toggle to opt-in instead of opting out --- public/locales/en/common.json | 6 ++- src/components/widgets/queue/queueEntry.jsx | 28 ++++++++++ src/utils/config/service-helpers.js | 8 ++- src/widgets/radarr/component.jsx | 57 +++++++++------------ src/widgets/radarr/widget.js | 3 +- src/widgets/sonarr/component.jsx | 57 +++++++++------------ src/widgets/sonarr/widget.js | 3 +- 7 files changed, 92 insertions(+), 70 deletions(-) create mode 100644 src/components/widgets/queue/queueEntry.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 7f1a86de..a3d74aee 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -194,13 +194,15 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Movies" + "movies": "Movies", + "queue": "Queue" }, "lidarr": { "wanted": "Wanted", diff --git a/src/components/widgets/queue/queueEntry.jsx b/src/components/widgets/queue/queueEntry.jsx new file mode 100644 index 00000000..0d0625e9 --- /dev/null +++ b/src/components/widgets/queue/queueEntry.jsx @@ -0,0 +1,28 @@ +import {BsFillPlayFill, BsPauseFill} from "react-icons/bs"; + +export default function QueueEntry({ status, title, activity, timeLeft, progress}) { + return ( +
    +
    +
    + {status === "paused" && ( + + )} + {status !== "paused" && ( + + )} +
    +
    +
    {title}
    +
    +
    + {timeLeft ? `${activity} - ${timeLeft}` : activity} +
    +
    + ); +} diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 7f9d45e4..41fe263a 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -168,7 +168,7 @@ export async function servicesFromKubernetes() { .filter((ingress) => ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/href`]) ingressList.items.push(...traefikServices); } - + if (!ingressList) { return []; } @@ -276,7 +276,8 @@ export function cleanServiceGroups(groups) { wan, // opnsense widget, pfsense widget enableBlocks, // emby/jellyfin enableNowPlaying, - volume, // diskstation widget + volume, // diskstation widget, + enableQueue, // sonarr/radarr } = cleanedService.widget; const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields; @@ -312,6 +313,9 @@ export function cleanServiceGroups(groups) { if (enableBlocks !== undefined) cleanedService.widget.enableBlocks = JSON.parse(enableBlocks); if (enableNowPlaying !== undefined) cleanedService.widget.enableNowPlaying = JSON.parse(enableNowPlaying); } + if (["sonarr", "radarr"].includes(type)) { + if (enableQueue !== undefined) cleanedService.widget.enableQueue = JSON.parse(enableQueue); + } if (["diskstation", "qnap"].includes(type)) { if (volume) cleanedService.widget.volume = volume; } diff --git a/src/widgets/radarr/component.jsx b/src/widgets/radarr/component.jsx index 2e58bf9d..0212eaa7 100644 --- a/src/widgets/radarr/component.jsx +++ b/src/widgets/radarr/component.jsx @@ -1,6 +1,7 @@ import { useTranslation } from "next-i18next"; import { useCallback } from 'react'; -import classNames from 'classnames'; + +import QueueEntry from "../../components/widgets/queue/queueEntry"; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; @@ -32,6 +33,8 @@ export default function Component({ service }) { return ; } + const enableQueue = widget?.enableQueue; + if (!moviesData || !queuedData || !queueDetailsData) { return ( <> @@ -41,9 +44,11 @@ export default function Component({ service }) { - - - + { enableQueue && + + + + } ); } @@ -56,34 +61,22 @@ export default function Component({ service }) { - - - {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( -
    -
    -
    -
    {moviesData.all.find((entry) => entry.id === queueEntry.movieId)?.title}
    -
    -
    {formatDownloadState(queueEntry.trackedDownloadState)}
    -
    -
    -
    -
    -
    -
    {queueEntry.timeLeft}
    -
    -
    - )) : undefined} - - + { enableQueue && + + + {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( + entry.id === queueEntry.movieId)?.title} + activity={formatDownloadState(queueEntry.trackedDownloadState)} + key={queueEntry.movieId} + /> + )) : undefined} + + + } ); } diff --git a/src/widgets/radarr/widget.js b/src/widgets/radarr/widget.js index 0f53ab14..8d70192f 100644 --- a/src/widgets/radarr/widget.js +++ b/src/widgets/radarr/widget.js @@ -29,7 +29,8 @@ const widget = { timeLeft: entry.timeleft, size: entry.size, sizeLeft: entry.sizeleft, - movieId: entry.movieId + movieId: entry.movieId, + status: entry.status })).sort((a, b) => { const downloadingA = a.trackedDownloadState === "downloading" const downloadingB = b.trackedDownloadState === "downloading" diff --git a/src/widgets/sonarr/component.jsx b/src/widgets/sonarr/component.jsx index ee548b58..0f87b975 100644 --- a/src/widgets/sonarr/component.jsx +++ b/src/widgets/sonarr/component.jsx @@ -1,7 +1,8 @@ import { useTranslation } from "next-i18next"; -import classNames from 'classnames'; import { useCallback } from 'react'; +import QueueEntry from "../../components/widgets/queue/queueEntry"; + import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; @@ -33,6 +34,8 @@ export default function Component({ service }) { return ; } + const enableQueue = widget?.enableQueue; + if (!wantedData || !queuedData || !seriesData || !queueDetailsData) { return ( <> @@ -41,9 +44,11 @@ export default function Component({ service }) { - - - + { enableQueue && + + + + } ); } @@ -55,34 +60,22 @@ export default function Component({ service }) { - - - {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( -
    -
    -
    -
    {seriesData.find((entry) => entry.id === queueEntry.seriesId).title} • {queueEntry.episodeTitle}
    -
    -
    {formatDownloadState(queueEntry.trackedDownloadState)}
    -
    -
    -
    -
    -
    -
    {queueEntry.timeLeft}
    -
    -
    - )) : undefined} - - + { enableQueue && + + + {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( + entry.id === queueEntry.seriesId)?.title } • ${ queueEntry.episodeTitle}`} + activity={formatDownloadState(queueEntry.trackedDownloadState)} + key={queueEntry.episodeId} + /> + )) : undefined} + + + } ); } diff --git a/src/widgets/sonarr/widget.js b/src/widgets/sonarr/widget.js index 80afdb99..c0fae806 100644 --- a/src/widgets/sonarr/widget.js +++ b/src/widgets/sonarr/widget.js @@ -35,7 +35,8 @@ const widget = { sizeLeft: entry.sizeleft, seriesId: entry.seriesId, episodeTitle: entry.episode?.title, - episodeId: entry.episodeId + episodeId: entry.episodeId, + status: entry.status })).sort((a, b) => { const downloadingA = a.trackedDownloadState === "downloading" const downloadingB = b.trackedDownloadState === "downloading" From 3a2926225616f4e1fead3fa98d5b5d99cad530e0 Mon Sep 17 00:00:00 2001 From: nsankbeil Date: Mon, 5 Jun 2023 21:43:49 -0400 Subject: [PATCH 074/788] feat: support compressed responses --- src/utils/proxy/http.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index e022fb46..f869cd0b 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -1,5 +1,7 @@ /* eslint-disable prefer-promise-reject-errors */ /* eslint-disable no-param-reassign */ +import { createUnzip } from "node:zlib"; + import { http, https } from "follow-redirects"; import { addCookieToJar, setCookieHeader } from "./cookie-jar"; @@ -28,12 +30,19 @@ function handleRequest(requestor, url, params) { const request = requestor.request(url, params, (response) => { const data = []; + const contentEncoding = response.headers['content-encoding']?.trim().toLowerCase(); - response.on("data", (chunk) => { + let responseContent = response; + if (contentEncoding === 'gzip' || contentEncoding === 'deflate') { + responseContent = createUnzip(); + response.pipe(responseContent); + } + + responseContent.on("data", (chunk) => { data.push(chunk); }); - response.on("end", () => { + responseContent.on("end", () => { addCookieToJar(url, response.headers); resolve([response.statusCode, response.headers["content-type"], Buffer.concat(data), response.headers]); }); From dd4ee443029ce79e6a8ac600ca8debdcbb1fae38 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 5 Jun 2023 22:21:26 -0700 Subject: [PATCH 075/788] Simplify sonarr / radarr queues, better handle some errors --- public/locales/en/common.json | 6 +- src/components/services/widget/block-list.jsx | 31 ---------- src/components/widgets/queue/queueEntry.jsx | 16 +---- src/widgets/radarr/component.jsx | 54 +++++++--------- src/widgets/radarr/widget.js | 2 +- src/widgets/sonarr/component.jsx | 62 +++++++++---------- src/widgets/sonarr/widget.js | 6 +- tailwind.config.js | 3 - 8 files changed, 64 insertions(+), 116 deletions(-) delete mode 100644 src/components/services/widget/block-list.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index a3d74aee..e20e1908 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -195,14 +195,16 @@ "wanted": "Wanted", "queued": "Queued", "series": "Series", - "queue": "Queue" + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", "movies": "Movies", - "queue": "Queue" + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", diff --git a/src/components/services/widget/block-list.jsx b/src/components/services/widget/block-list.jsx deleted file mode 100644 index 138576bc..00000000 --- a/src/components/services/widget/block-list.jsx +++ /dev/null @@ -1,31 +0,0 @@ -import { useTranslation } from "next-i18next"; -import { useCallback, useState } from 'react'; -import classNames from "classnames"; - -import ResolvedIcon from '../../resolvedicon'; - - -export default function BlockList({ label, children, childHeight }) { - const { t } = useTranslation(); - const [isOpen, setOpen] = useState(false); - - const changeState = useCallback(() => setOpen(!isOpen), [isOpen, setOpen]); - - return ( -
    - -
    - {children} -
    -
    - ); -} diff --git a/src/components/widgets/queue/queueEntry.jsx b/src/components/widgets/queue/queueEntry.jsx index 0d0625e9..adea45ad 100644 --- a/src/components/widgets/queue/queueEntry.jsx +++ b/src/components/widgets/queue/queueEntry.jsx @@ -1,22 +1,12 @@ -import {BsFillPlayFill, BsPauseFill} from "react-icons/bs"; - -export default function QueueEntry({ status, title, activity, timeLeft, progress}) { +export default function QueueEntry({ title, activity, timeLeft, progress}) { return ( -
    +
    -
    - {status === "paused" && ( - - )} - {status !== "paused" && ( - - )} -
    {title}
    diff --git a/src/widgets/radarr/component.jsx b/src/widgets/radarr/component.jsx index 0212eaa7..6ce2f599 100644 --- a/src/widgets/radarr/component.jsx +++ b/src/widgets/radarr/component.jsx @@ -5,9 +5,12 @@ import QueueEntry from "../../components/widgets/queue/queueEntry"; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; -import BlockList from "components/services/widget/block-list"; import useWidgetAPI from "utils/proxy/use-widget-api"; +function getProgress(sizeLeft, size) { + return sizeLeft === 0 ? 100 : (1 - sizeLeft / size) * 100 +} + export default function Component({ service }) { const { t } = useTranslation(); const { widget } = service; @@ -16,7 +19,6 @@ export default function Component({ service }) { const { data: queuedData, error: queuedError } = useWidgetAPI(widget, "queue/status"); const { data: queueDetailsData, error: queueDetailsError } = useWidgetAPI(widget, "queue/details"); - // information taken from the Radarr docs: https://radarr.video/docs/api/ const formatDownloadState = useCallback((downloadState) => { switch (downloadState) { case "importPending": @@ -33,26 +35,19 @@ export default function Component({ service }) { return ; } - const enableQueue = widget?.enableQueue; - if (!moviesData || !queuedData || !queueDetailsData) { return ( - <> - - - - - - - { enableQueue && - - - - } - + + + + + + ); } + const enableQueue = widget?.enableQueue && Array.isArray(queueDetailsData) && queueDetailsData.length > 0; + return ( <> @@ -61,21 +56,16 @@ export default function Component({ service }) { - { enableQueue && - - - {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( - entry.id === queueEntry.movieId)?.title} - activity={formatDownloadState(queueEntry.trackedDownloadState)} - key={queueEntry.movieId} - /> - )) : undefined} - - + {enableQueue && + queueDetailsData.map((queueEntry) => ( + entry.id === queueEntry.movieId)?.title ?? t("radarr.unknown")} + activity={formatDownloadState(queueEntry.trackedDownloadState)} + key={`${queueEntry.movieId}-${queueEntry.sizeLeft}`} + /> + )) } ); diff --git a/src/widgets/radarr/widget.js b/src/widgets/radarr/widget.js index 8d70192f..3373975e 100644 --- a/src/widgets/radarr/widget.js +++ b/src/widgets/radarr/widget.js @@ -29,7 +29,7 @@ const widget = { timeLeft: entry.timeleft, size: entry.size, sizeLeft: entry.sizeleft, - movieId: entry.movieId, + movieId: entry.movieId ?? entry.id, status: entry.status })).sort((a, b) => { const downloadingA = a.trackedDownloadState === "downloading" diff --git a/src/widgets/sonarr/component.jsx b/src/widgets/sonarr/component.jsx index 0f87b975..27b1ab03 100644 --- a/src/widgets/sonarr/component.jsx +++ b/src/widgets/sonarr/component.jsx @@ -6,7 +6,20 @@ import QueueEntry from "../../components/widgets/queue/queueEntry"; import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; -import BlockList from 'components/services/widget/block-list'; + +function getProgress(sizeLeft, size) { + return sizeLeft === 0 ? 100 : (1 - sizeLeft / size) * 100 +} + +function getTitle(queueEntry, seriesData) { + let title = '' + const seriesTitle = seriesData.find((entry) => entry.id === queueEntry.seriesId)?.title; + if (seriesTitle) title += `${seriesTitle}: `; + const { episodeTitle } = queueEntry; + if (episodeTitle) title += episodeTitle; + if (title === '') return null; + return title; +} export default function Component({ service }) { const { t } = useTranslation(); @@ -17,7 +30,6 @@ export default function Component({ service }) { const { data: seriesData, error: seriesError } = useWidgetAPI(widget, "series"); const { data: queueDetailsData, error: queueDetailsError } = useWidgetAPI(widget, "queue/details"); - // information taken from the Sonarr docs: https://sonarr.tv/docs/api/ const formatDownloadState = useCallback((downloadState) => { switch (downloadState) { case "importPending": @@ -34,25 +46,18 @@ export default function Component({ service }) { return ; } - const enableQueue = widget?.enableQueue; - if (!wantedData || !queuedData || !seriesData || !queueDetailsData) { return ( - <> - - - - - - { enableQueue && - - - - } - + + + + + ); } + const enableQueue = widget?.enableQueue && Array.isArray(queueDetailsData) && queueDetailsData.length > 0; + return ( <> @@ -60,21 +65,16 @@ export default function Component({ service }) { - { enableQueue && - - - {Array.isArray(queueDetailsData) ? queueDetailsData.map((queueEntry) => ( - entry.id === queueEntry.seriesId)?.title } • ${ queueEntry.episodeTitle}`} - activity={formatDownloadState(queueEntry.trackedDownloadState)} - key={queueEntry.episodeId} - /> - )) : undefined} - - + {enableQueue && + queueDetailsData.map((queueEntry) => ( + + )) } ); diff --git a/src/widgets/sonarr/widget.js b/src/widgets/sonarr/widget.js index c0fae806..7f658eb1 100644 --- a/src/widgets/sonarr/widget.js +++ b/src/widgets/sonarr/widget.js @@ -34,9 +34,9 @@ const widget = { size: entry.size, sizeLeft: entry.sizeleft, seriesId: entry.seriesId, - episodeTitle: entry.episode?.title, - episodeId: entry.episodeId, - status: entry.status + episodeTitle: entry.episode?.title ?? entry.title, + episodeId: entry.episodeId ?? entry.id, + status: entry.status, })).sort((a, b) => { const downloadingA = a.trackedDownloadState === "downloading" const downloadingB = b.trackedDownloadState === "downloading" diff --git a/tailwind.config.js b/tailwind.config.js index 96c9e641..b981051b 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -29,9 +29,6 @@ module.exports = { '3xl': '1800px', // => @media (min-width: 1800px) { ... } }, - transitionProperty: { - 'height': 'height' - }, }, }, plugins: [tailwindForms, tailwindScrollbars], From a05474728520ac33b400b4ef72ae2c92c55db9eb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:13 +0000 Subject: [PATCH 076/788] Translated using Weblate (German) Currently translated at 98.4% (458 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index b62c5e6a..0d664d99 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Gesucht", "queued": "In Warteschlange", - "series": "Serien" + "series": "Serien", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Gesucht", "queued": "In Warteschlange", "movies": "Filme", - "missing": "Fehlt" + "missing": "Fehlt", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Gesucht", From fd0d644474f5db1883da534e3d46bba29afb977b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:14 +0000 Subject: [PATCH 077/788] Translated using Weblate (Spanish) Currently translated at 99.1% (461 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 1ca5a62f..5d528e64 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Buscando", "queued": "En cola", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Buscando", "queued": "En cola", "movies": "Películas", - "missing": "Faltan" + "missing": "Faltan", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Buscando", From 7367bd4a1ff1e5d4fa79036bd6fb53dfbc75bc94 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:14 +0000 Subject: [PATCH 078/788] Translated using Weblate (French) Currently translated at 99.1% (461 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index a85eb438..12f2098c 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Demande", "queued": "Attente", - "series": "Séries" + "series": "Séries", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Demande", "queued": "Attente", "movies": "Films", - "missing": "Manquant" + "missing": "Manquant", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Demande", From bcdbcb2cb7b9650a2b9564724a2d7ebaaba98a53 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:15 +0000 Subject: [PATCH 079/788] Translated using Weblate (Portuguese) Currently translated at 87.0% (405 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index b0df5367..ef5f7cd8 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Desejada", "queued": "Em fila", - "series": "Séries" + "series": "Séries", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Desejado", "queued": "Fila", "movies": "Filmes", - "missing": "Faltando" + "missing": "Faltando", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Desejados", From 3061654eeb7e118449e44e64f7ca9402125838b1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:06 +0000 Subject: [PATCH 080/788] Translated using Weblate (Russian) Currently translated at 89.0% (414 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 454bfdfe..5e16f154 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Хотел", "queued": "В очереди", - "series": "Серии" + "series": "Серии", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Хотел", "queued": "В очереди", "movies": "Фильмы", - "missing": "Пропущено" + "missing": "Пропущено", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Хотел", From 4c55eee55bb24f0b6a1641076ac76f91b7267879 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:07 +0000 Subject: [PATCH 081/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 95.4% (444 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 0d6f427e..1b6a7ea2 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "想看", "queued": "排队", - "series": "系列" + "series": "系列", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "想看", "queued": "队列", "movies": "电影", - "missing": "丢失" + "missing": "丢失", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "订阅", From 86cb124894d7eda1a4a1a2f34b01fb964d085437 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:02 +0000 Subject: [PATCH 082/788] Translated using Weblate (Italian) Currently translated at 61.7% (287 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 8dc065d4..5eed8b41 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -81,13 +81,17 @@ "sonarr": { "series": "Serie", "wanted": "Richiesti", - "queued": "In coda" + "queued": "In coda", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Richiesti", "queued": "In coda", "movies": "Film", - "missing": "Mancanti" + "missing": "Mancanti", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Richiesti", From ece83fd53100125f7169273c01a3ce174ba61abd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:03 +0000 Subject: [PATCH 083/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.9% (79 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index e7a2dd5c..5761e333 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Ønsket", "queued": "I kø", - "series": "Serie" + "series": "Serie", + "unknown": "Unknown", + "queue": "Queue" }, "radarr": { "wanted": "Ønsket", "queued": "I kø", "movies": "Filmer", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Wanted", From 51a1562ea93d565e31d7286cc39763127ad67d9d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:04 +0000 Subject: [PATCH 084/788] Translated using Weblate (Vietnamese) Currently translated at 9.4% (44 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 54431b3c..2b551546 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -66,13 +66,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "queued": "Queued", "movies": "Phim", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Đang tìm", From 63247f3a9f245f2f6c1509ebeac83cd19db629f5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:03 +0000 Subject: [PATCH 085/788] Translated using Weblate (Dutch) Currently translated at 52.0% (242 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 0be39980..fad081f6 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -82,13 +82,17 @@ "sonarr": { "wanted": "Gezocht", "queued": "In de wachtrij", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "movies": "Films", "wanted": "Gezocht", "queued": "In de wachtrij", - "missing": "Missend" + "missing": "Missend", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Gezocht", From 4cf8302d4f3de317c084a9b8e7b7c49067440847 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:09 +0000 Subject: [PATCH 086/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 99.1% (461 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 75674709..7ea7c835 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -88,12 +88,16 @@ "movies": "電影", "wanted": "關注中", "queued": "已加入佇列", - "missing": "缺少" + "missing": "缺少", + "queue": "Queue", + "unknown": "Unknown" }, "sonarr": { "wanted": "關注中", "queued": "已加入佇列", - "series": "影集" + "series": "影集", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "關注中", From a2204a3de9aa890f624f9d9370cedc211f83ea05 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:05 +0000 Subject: [PATCH 087/788] Translated using Weblate (Catalan) Currently translated at 56.1% (261 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 33fe5338..b133c24f 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -26,7 +26,9 @@ "sonarr": { "wanted": "Volgut", "queued": "En cua", - "series": "Sèries" + "series": "Sèries", + "queue": "Queue", + "unknown": "Unknown" }, "speedtest": { "ping": "Ping", @@ -99,7 +101,9 @@ "wanted": "Volgut", "queued": "En cua", "movies": "Pel·lícules", - "missing": "Faltant" + "missing": "Faltant", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Volgut", From f66dc86e245332fc2635c0b299bdcdbf550ba28d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:59 +0000 Subject: [PATCH 088/788] Translated using Weblate (Polish) Currently translated at 80.6% (375 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index a900de72..18a57078 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -110,13 +110,17 @@ "sonarr": { "wanted": "Poszukiwane", "queued": "W kolejce", - "series": "Seriale" + "series": "Seriale", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Poszukiwane", "queued": "W kolejce", "movies": "Filmy", - "missing": "Brakujące" + "missing": "Brakujące", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Poszukiwane", From ff7ee3149705e6f5b5189e2e0bbe56f8cfd6652a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:05 +0000 Subject: [PATCH 089/788] Translated using Weblate (Swedish) Currently translated at 28.1% (131 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 37b38a71..0da6efb3 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -88,13 +88,17 @@ "sonarr": { "wanted": "Eftersöker", "queued": "I kö", - "series": "Serier" + "series": "Serier", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Eftersöker", "queued": "I kö", "movies": "Filmer", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Eftersöker", From e2c8b2000f7af5172d6e6ec2f5594edf8fa6306b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:07 +0000 Subject: [PATCH 090/788] Translated using Weblate (Croatian) Currently translated at 98.7% (459 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 268a1f89..fce370ce 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -125,13 +125,17 @@ "sonarr": { "wanted": "Zatraženo", "queued": "U redu čekanja", - "series": "Serije" + "series": "Serije", + "unknown": "Unknown", + "queue": "Queue" }, "radarr": { "wanted": "Zatraženo", "queued": "U redu čekanja", "movies": "Filmovi", - "missing": "Nedostaje" + "missing": "Nedostaje", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Zatraženo", From 4682b5a9a2d6cd6037edc443eaf4ebf4270f738c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:11 +0000 Subject: [PATCH 091/788] Translated using Weblate (Hungarian) Currently translated at 23.2% (108 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index b417692d..98687d9f 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -108,13 +108,17 @@ "sonarr": { "wanted": "Keresett", "queued": "Sorban áll", - "series": "Sorozat" + "series": "Sorozat", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Keresett", "queued": "Sorban áll", "movies": "Filmek", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "ombi": { "pending": "Függőben", From 46b988eeea1fe7b814566c410482bd44ced6c4e6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:11 +0000 Subject: [PATCH 092/788] Translated using Weblate (Hebrew) Currently translated at 21.7% (101 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 50f61ae5..9e682c20 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -94,13 +94,17 @@ "sonarr": { "wanted": "מבוקש", "queued": "בתור", - "series": "סדרות" + "series": "סדרות", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "מבוקש", "queued": "בתור", "movies": "סרטים", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "מבוקש", From 26d17e9a3a95b5b84823fdde4785b5f06b8af811 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:08 +0000 Subject: [PATCH 093/788] Translated using Weblate (Romanian) Currently translated at 32.4% (151 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index a1f62db2..535ecb7d 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -134,13 +134,17 @@ "sonarr": { "wanted": "Dorite", "queued": "În coadă", - "series": "Seriale" + "series": "Seriale", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "queued": "În coadă", "wanted": "Dorite", "movies": "Filme", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Dorite", From a2a6cd150ff1e11c88eb4b311d491de005b68c6a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:08 +0000 Subject: [PATCH 094/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 87.0% (405 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index bc405db0..d4392e18 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -112,13 +112,17 @@ "sonarr": { "wanted": "Desejado", "queued": "Na fila", - "series": "Séries" + "series": "Séries", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Desejado", "queued": "Na fila", "movies": "Filmes", - "missing": "Faltando" + "missing": "Faltando", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Desejado", From db7fdd2a4f9045eda6522934df5f4c084668f9fe Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:18 +0000 Subject: [PATCH 095/788] Translated using Weblate (Yue (Traditional)) Currently translated at 25.3% (118 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 5ab69f88..ce9af7e4 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -94,13 +94,17 @@ "sonarr": { "wanted": "想睇", "queued": "排緊隊", - "series": "電視劇" + "series": "電視劇", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "想睇", "queued": "排緊隊", "movies": "電影", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "想睇", From 95ecc5546777c7fd4dd266883fd0256de3679122 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:16 +0000 Subject: [PATCH 096/788] Translated using Weblate (Finnish) Currently translated at 38.2% (178 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index aad674a1..07dbb8e5 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -94,13 +94,17 @@ "sonarr": { "wanted": "Haluttu", "queued": "Jonossa", - "series": "Sarja" + "series": "Sarja", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Haluttu", "queued": "Jonossa", "movies": "Elokuvia", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Haluttu", From a00ef03ce52b668e75dbb2ea7ad7d71c719a12ca Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:17 +0000 Subject: [PATCH 097/788] Translated using Weblate (Telugu) Currently translated at 46.4% (216 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index e357b266..867baeae 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -111,13 +111,17 @@ "sonarr": { "wanted": "కావలెను", "queued": "క్యూయూఎడ్", - "series": "సిరీస్" + "series": "సిరీస్", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "కావలెను", "queued": "క్యూయూఎడ్", "movies": "సినిమాలు", - "missing": "మిస్సింగ్" + "missing": "మిస్సింగ్", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "కావలెను", From 3ab5862bf1f403cd772ce22201d4439d7cfc5345 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:17 +0000 Subject: [PATCH 098/788] Translated using Weblate (Bulgarian) Currently translated at 9.8% (46 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 3fec6dbd..e567de17 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -117,13 +117,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "queued": "Queued", "movies": "Movies", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From 7bcd405f77cd9d8a62094c90b44173b28931e641 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:18 +0000 Subject: [PATCH 099/788] Translated using Weblate (Turkish) Currently translated at 84.7% (394 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index a2a872f4..d2f9667d 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -117,13 +117,17 @@ "sonarr": { "wanted": "Aranan", "queued": "Kuyrukta", - "series": "Seriler" + "series": "Seriler", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Aranan", "queued": "Kuyrukta", "movies": "Filmler", - "missing": "Kayıp" + "missing": "Kayıp", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Aranan", From 9523f72c979a91971a740767b7c087ab51f27139 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:10 +0000 Subject: [PATCH 100/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index b30db3fe..5c6e0b2e 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -117,13 +117,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "queued": "Queued", "movies": "Movies", - "missing": "Missing" + "missing": "Missing", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From 577f8fecfdae364f58b371111c892c60ca8a408b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:10 +0000 Subject: [PATCH 101/788] Translated using Weblate (Arabic) Currently translated at 56.1% (261 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 39b77411..cecfb771 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -179,13 +179,17 @@ "sonarr": { "wanted": "مطلوب", "queued": "في الإنتظار", - "series": "سلسلة" + "series": "سلسلة", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "مطلوب", "missing": "مفقود", "queued": "في الإنتظار", - "movies": "أفلام" + "movies": "أفلام", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "مطلوب", From 0447bb04131199e9d89400e8bc0fcd871061b6e6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:56 +0000 Subject: [PATCH 102/788] Translated using Weblate (Czech) Currently translated at 95.6% (445 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 6088851b..e4699e86 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -133,13 +133,17 @@ "sonarr": { "wanted": "Hledané", "queued": "Ve frontě", - "series": "Seriály" + "series": "Seriály", + "unknown": "Unknown", + "queue": "Queue" }, "radarr": { "wanted": "Hledané", "missing": "Chybějící", "queued": "Ve frontě", - "movies": "Filmy" + "movies": "Filmy", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Hledané", From e398e4acc55b9380b82975d281f2b4ba20bf9ba2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:59 +0000 Subject: [PATCH 103/788] Translated using Weblate (Danish) Currently translated at 42.3% (197 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 3769da6f..ccaa5d52 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -9,7 +9,9 @@ "queued": "I Kø", "movies": "Film", "wanted": "Ønskede", - "missing": "Mangler" + "missing": "Mangler", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Ønsket", @@ -264,7 +266,9 @@ "sonarr": { "wanted": "Ønsket", "queued": "I Kø", - "series": "Serier" + "series": "Serier", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "wanted": "Ønskede", From 0f5deba5e34bd40bf747162f7758b3010335acb4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:00 +0000 Subject: [PATCH 104/788] Translated using Weblate (Malay) Currently translated at 54.1% (252 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index da42ff44..716049ef 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -233,13 +233,17 @@ "sonarr": { "wanted": "Mahu", "queued": "Dibaris Gilir", - "series": "Bersiri" + "series": "Bersiri", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Mahu", "missing": "Hilang", "queued": "Dibaris Gilir", - "movies": "Filem" + "movies": "Filem", + "queue": "Queue", + "unknown": "Unknown" }, "bazarr": { "missingEpisodes": "Episod Yang Hilang", From 93440ae8d15295785c4f4ab9c7dc34a35741566f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:01 +0000 Subject: [PATCH 105/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 6736caf0..4efc87e0 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -155,13 +155,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Movies" + "movies": "Movies", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From d98607072c723fd415d9adfada6a37621d18cb16 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:56 +0000 Subject: [PATCH 106/788] Translated using Weblate (Esperanto) Currently translated at 31.3% (146 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 50d305ac..8aa16f14 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -131,13 +131,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Serio" + "series": "Serio", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Filmoj" + "movies": "Filmoj", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From 4f386bb2af9274602d2ad55b4e30bc2076dacbd2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:57 +0000 Subject: [PATCH 107/788] Translated using Weblate (Ukrainian) Currently translated at 99.1% (461 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 37320dfd..2561f4a8 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -232,13 +232,17 @@ "sonarr": { "wanted": "Розшукується", "queued": "У черзі", - "series": "Серії" + "series": "Серії", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Розшукується", "missing": "Відсутній", "queued": "У черзі", - "movies": "Фільми" + "movies": "Фільми", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Розшукується", From bb09d85d807f437ea4d31110ea7482f09b4bb122 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:01 +0000 Subject: [PATCH 108/788] Translated using Weblate (Japanese) Currently translated at 80.4% (374 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index bcca3d2a..1a96786b 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -193,13 +193,17 @@ "sonarr": { "wanted": "募集中", "queued": "待機中", - "series": "シリーズ" + "series": "シリーズ", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "募集中", "missing": "不明", "queued": "キュー", - "movies": "映画" + "movies": "映画", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "募集中", From 249dfa7a92d167cbe749d8b550b297d261d817ed Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:57 +0000 Subject: [PATCH 109/788] Translated using Weblate (Latvian) Currently translated at 25.5% (119 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index fa73f2c7..3e4c9173 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -154,13 +154,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Filmas" + "movies": "Filmas", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From a1fedf98e5fc6f4019446ecaeef3f09b0d9724c7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:54 +0000 Subject: [PATCH 110/788] Translated using Weblate (Thai) Currently translated at 10.1% (47 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 65c1b90a..660744b7 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -190,7 +190,9 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "readarr": { "queued": "Queued", @@ -216,7 +218,9 @@ "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Movies" + "movies": "Movies", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From 715f3d9d27e17f0ac25bb1a3c45ebf79e342da3b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:12 +0000 Subject: [PATCH 111/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index a66ef5e6..70c699f8 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -273,13 +273,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Movies" + "movies": "Movies", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From b085a1a2d102b1f81c1228decdd6492d11b24b43 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:13 +0000 Subject: [PATCH 112/788] Translated using Weblate (Korean) Currently translated at 37.4% (174 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 4e5e6298..56e8dd77 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -163,13 +163,17 @@ "sonarr": { "wanted": "요청", "queued": "대기 중", - "series": "시리즈" + "series": "시리즈", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "요청", "missing": "빠짐", "queued": "대기 중", - "movies": "영화" + "movies": "영화", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "요청", From 614ce65871fd3bdccce6267e0aa14a78592d9252 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:55 +0000 Subject: [PATCH 113/788] Translated using Weblate (Greek) Currently translated at 30.9% (144 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index d42fdfe5..19f4a0ae 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -206,7 +206,9 @@ "sonarr": { "series": "Σειρές", "wanted": "Επιθυμούντε", - "queued": "Σε σειρά" + "queued": "Σε σειρά", + "queue": "Queue", + "unknown": "Unknown" }, "downloadstation": { "download": "Μεταφόρτωση", @@ -218,7 +220,9 @@ "wanted": "Επιθυμούντε", "missing": "Απουσιάζει", "queued": "Σε σειρά", - "movies": "Ταινίες" + "movies": "Ταινίες", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Θέλετε", From 0e9ca01c185f84fbd659b6cd8bd21da98233d4bb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:33:02 +0000 Subject: [PATCH 114/788] Translated using Weblate (Slovenian) Currently translated at 96.7% (450 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index afca8429..7632e2aa 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -235,13 +235,17 @@ "sonarr": { "wanted": "Iskano", "queued": "V vrsti", - "series": "Serije" + "series": "Serije", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Iskano", "missing": "Manjka", "queued": "V vrsti", - "movies": "Filmi" + "movies": "Filmi", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Iskano", From bcd92898495945d67d210e63e6d8730420377b3d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 6 Jun 2023 20:32:58 +0000 Subject: [PATCH 115/788] Translated using Weblate (Indonesian) Currently translated at 3.2% (15 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index e9169cbd..c36ae790 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -55,13 +55,17 @@ "sonarr": { "wanted": "Wanted", "queued": "Queued", - "series": "Series" + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" }, "radarr": { "wanted": "Wanted", "missing": "Missing", "queued": "Queued", - "movies": "Movies" + "movies": "Movies", + "queue": "Queue", + "unknown": "Unknown" }, "lidarr": { "wanted": "Wanted", From 91e0ec2f830a3135b5e12715d4622ebe8e685490 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Wed, 7 Jun 2023 00:53:10 +0100 Subject: [PATCH 116/788] Fixes for portainer and kubernetes widget error messages, and error messages for services behind the reverse proxy Signed-off-by: Denis Papec --- src/components/services/widget/error.jsx | 6 ++++-- src/widgets/kubernetes/component.jsx | 2 +- src/widgets/portainer/component.jsx | 9 +++------ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/components/services/widget/error.jsx b/src/components/services/widget/error.jsx index 587c572f..cf5e1366 100644 --- a/src/components/services/widget/error.jsx +++ b/src/components/services/widget/error.jsx @@ -9,10 +9,12 @@ function displayData(data) { return (data.type === 'Buffer') ? Buffer.from(data).toString() : JSON.stringify(data, 4); } -export default function Error({ error: err }) { +export default function Error({ error }) { const { t } = useTranslation(); - const { error } = err?.data ?? { error: err }; + if (error?.data?.error) { + error = error.data.error; // eslint-disable-line no-param-reassign + } return (
    diff --git a/src/widgets/kubernetes/component.jsx b/src/widgets/kubernetes/component.jsx index c4d67553..e756e4be 100644 --- a/src/widgets/kubernetes/component.jsx +++ b/src/widgets/kubernetes/component.jsx @@ -16,7 +16,7 @@ export default function Component({ service }) { `/api/kubernetes/stats/${widget.namespace}/${widget.app}?${podSelectorString}`); if (statsError || statusError) { - return ; + return ; } if (statusData && statusData.status !== "running") { diff --git a/src/widgets/portainer/component.jsx b/src/widgets/portainer/component.jsx index aab9eba1..7da289c4 100644 --- a/src/widgets/portainer/component.jsx +++ b/src/widgets/portainer/component.jsx @@ -1,12 +1,8 @@ -import { useTranslation } from "next-i18next"; - import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { - const { t } = useTranslation(); - const { widget } = service; const { data: containersData, error: containersError } = useWidgetAPI(widget, "docker/containers/json", { @@ -27,8 +23,9 @@ export default function Component({ service }) { ); } - if (containersData.error) { - return ; + if (containersData.error || !Array.isArray(containersData)) { + // containersData can be itself an error object + return ; } const running = containersData.filter((c) => c.State === "running").length; From c92d1caf801d3132625f5b47488d0a363bd57cb0 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 7 Jun 2023 13:37:38 -0700 Subject: [PATCH 117/788] Allow useWidgetAPI to not actually send a request --- src/utils/proxy/use-widget-api.js | 6 +++++- src/widgets/lidarr/component.jsx | 8 +++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/utils/proxy/use-widget-api.js b/src/utils/proxy/use-widget-api.js index 52e986e1..e4744038 100644 --- a/src/utils/proxy/use-widget-api.js +++ b/src/utils/proxy/use-widget-api.js @@ -7,7 +7,11 @@ export default function useWidgetAPI(widget, ...options) { if (options && options[1]?.refreshInterval) { config.refreshInterval = options[1].refreshInterval; } - const { data, error, mutate } = useSWR(formatProxyUrl(widget, ...options), config); + let url = formatProxyUrl(widget, ...options) + if (options[0] === "") { + url = null + } + const { data, error, mutate } = useSWR(url, config); // make the data error the top-level error return { data, error: data?.error ?? error, mutate } } diff --git a/src/widgets/lidarr/component.jsx b/src/widgets/lidarr/component.jsx index a6aa82c7..77d831f8 100644 --- a/src/widgets/lidarr/component.jsx +++ b/src/widgets/lidarr/component.jsx @@ -9,7 +9,9 @@ export default function Component({ service }) { const { widget } = service; - const { data: albumsData, error: albumsError } = useWidgetAPI(widget, "album"); + // album API endpoint can get massive, so we prevent calling if not included in fields see https://github.com/benphelps/homepage/discussions/1577 + const showAlbums = widget.fields?.includes('albums') || !widget.fields; + const { data: albumsData, error: albumsError } = useWidgetAPI(widget, showAlbums ? "album" : ""); const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing"); const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status"); @@ -18,7 +20,7 @@ export default function Component({ service }) { return ; } - if (!albumsData || !wantedData || !queueData) { + if ((showAlbums && !albumsData) || !wantedData || !queueData) { return ( @@ -32,7 +34,7 @@ export default function Component({ service }) { - + {showAlbums && } ); } From 4245f1070ad4ce03bf140b7beb9dc127a6ce9bf3 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 7 Jun 2023 14:06:23 -0700 Subject: [PATCH 118/788] fix docker service discovery, code styling --- src/utils/config/service-helpers.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 00c236eb..95d4790b 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -62,13 +62,10 @@ export async function servicesFromDocker() { const serviceServers = await Promise.all( Object.keys(servers).map(async (serverName) => { - const isSwarm = servers[serverName].swarm ?? false; - try { - const listProperties = { all: true }; - const labelProperty = (isSwarm) ? 'Spec.Labels' : 'Labels'; - const nameProperty = (isSwarm) ? 'Spec.Name' : 'Name[0]'; + const isSwarm = !!servers[serverName].swarm; const docker = new Docker(getDockerArguments(serverName).conn); + const listProperties = { all: true }; const containers = await ((isSwarm) ? docker.listServices(listProperties) : docker.listContainers(listProperties)); // bad docker connections can result in a object? @@ -79,18 +76,19 @@ export async function servicesFromDocker() { const discovered = containers.map((container) => { let constructedService = null; - const labels = shvl.get(container, labelProperty); + const containerLabels = isSwarm ? shvl.get(container, 'Spec.Labels') : container.Labels; + const containerName = isSwarm ? shvl.get(container, 'Spec.Name') : container.Names[0]; - Object.keys(labels).forEach((label) => { + Object.keys(containerLabels).forEach((label) => { if (label.startsWith("homepage.")) { if (!constructedService) { constructedService = { - container: shvl.get(container, nameProperty).replace(/^\//, ""), + container: containerName.replace(/^\//, ""), server: serverName, type: 'service' }; } - shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(labels[label])); + shvl.set(constructedService, label.replace("homepage.", ""), substituteEnvironmentVars(containerLabels[label])); } }); From ea50a851f3ec4a2f8b3513be6984953050f0edbb Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 8 Jun 2023 07:12:14 -0700 Subject: [PATCH 119/788] Change lidarr to artist instead of album --- public/locales/en/common.json | 2 +- src/widgets/lidarr/component.jsx | 14 ++++++-------- src/widgets/lidarr/widget.js | 7 ++----- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index e20e1908..c90287da 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -209,7 +209,7 @@ "lidarr": { "wanted": "Wanted", "queued": "Queued", - "albums": "Albums" + "artists": "Artists" }, "readarr": { "wanted": "Wanted", diff --git a/src/widgets/lidarr/component.jsx b/src/widgets/lidarr/component.jsx index 77d831f8..68360d82 100644 --- a/src/widgets/lidarr/component.jsx +++ b/src/widgets/lidarr/component.jsx @@ -9,23 +9,21 @@ export default function Component({ service }) { const { widget } = service; - // album API endpoint can get massive, so we prevent calling if not included in fields see https://github.com/benphelps/homepage/discussions/1577 - const showAlbums = widget.fields?.includes('albums') || !widget.fields; - const { data: albumsData, error: albumsError } = useWidgetAPI(widget, showAlbums ? "album" : ""); + const { data: artistsData, error: artistsError } = useWidgetAPI(widget, "artist"); const { data: wantedData, error: wantedError } = useWidgetAPI(widget, "wanted/missing"); const { data: queueData, error: queueError } = useWidgetAPI(widget, "queue/status"); - if (albumsError || wantedError || queueError) { - const finalError = albumsError ?? wantedError ?? queueError; + if (artistsError || wantedError || queueError) { + const finalError = artistsError ?? wantedError ?? queueError; return ; } - if ((showAlbums && !albumsData) || !wantedData || !queueData) { + if (!artistsData || !wantedData || !queueData) { return ( - + ); } @@ -34,7 +32,7 @@ export default function Component({ service }) { - {showAlbums && } + ); } diff --git a/src/widgets/lidarr/widget.js b/src/widgets/lidarr/widget.js index 6ff93254..55975e63 100644 --- a/src/widgets/lidarr/widget.js +++ b/src/widgets/lidarr/widget.js @@ -6,11 +6,8 @@ const widget = { proxyHandler: genericProxyHandler, mappings: { - album: { - endpoint: "album", - map: (data) => ({ - have: jsonArrayFilter(data, (item) => item?.statistics?.percentOfTracks === 100).length, - }), + artist: { + endpoint: "artist", }, "wanted/missing": { endpoint: "wanted/missing", From 07c0c0faf4a9687377cb532e0b6b9e0901ab0364 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Wed, 7 Jun 2023 14:33:09 +0000 Subject: [PATCH 120/788] Translated using Weblate (Spanish) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 5d528e64..b0efcd6b 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -67,16 +67,16 @@ "wanted": "Buscando", "queued": "En cola", "series": "Series", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Poner a la cola", + "unknown": "Desconocido" }, "radarr": { "wanted": "Buscando", "queued": "En cola", "movies": "Películas", "missing": "Faltan", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Poner a la cola", + "unknown": "Desconocido" }, "readarr": { "wanted": "Buscando", From b934fc429deea078f864ab2179352739ed208781 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Tue, 6 Jun 2023 21:45:19 +0000 Subject: [PATCH 121/788] Translated using Weblate (French) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 12f2098c..269a1adb 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -67,16 +67,16 @@ "wanted": "Demande", "queued": "Attente", "series": "Séries", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Attente", + "unknown": "Inconnu" }, "radarr": { "wanted": "Demande", "queued": "Attente", "movies": "Films", "missing": "Manquant", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Attente", + "unknown": "Inconnu" }, "readarr": { "wanted": "Demande", From 7588dd03dbdce48e12bdb8721d0e84703e9ff57a Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 7 Jun 2023 08:25:34 +0000 Subject: [PATCH 122/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 2561f4a8..08c16483 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -233,16 +233,16 @@ "wanted": "Розшукується", "queued": "У черзі", "series": "Серії", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Черга", + "unknown": "Невідомо" }, "radarr": { "wanted": "Розшукується", "missing": "Відсутній", "queued": "У черзі", "movies": "Фільми", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Черга", + "unknown": "Невідомо" }, "lidarr": { "wanted": "Розшукується", From 3d0cc6aeeba5e191b68d0dc12901baa868fce10a Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Thu, 8 Jun 2023 16:16:16 +0200 Subject: [PATCH 123/788] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ --- public/locales/ar/common.json | 3 +-- public/locales/bg/common.json | 3 +-- public/locales/ca/common.json | 3 +-- public/locales/cs/common.json | 3 +-- public/locales/da/common.json | 3 +-- public/locales/de/common.json | 3 +-- public/locales/el/common.json | 3 +-- public/locales/eo/common.json | 3 +-- public/locales/es/common.json | 3 +-- public/locales/fi/common.json | 3 +-- public/locales/fr/common.json | 3 +-- public/locales/he/common.json | 3 +-- public/locales/hi/common.json | 3 +-- public/locales/hr/common.json | 3 +-- public/locales/hu/common.json | 1 - public/locales/id/common.json | 3 +-- public/locales/it/common.json | 3 +-- public/locales/ja/common.json | 3 +-- public/locales/ko/common.json | 3 +-- public/locales/lv/common.json | 3 +-- public/locales/ms/common.json | 1 - public/locales/nb-NO/common.json | 3 +-- public/locales/nl/common.json | 3 +-- public/locales/pl/common.json | 3 +-- public/locales/pt-BR/common.json | 3 +-- public/locales/pt/common.json | 3 +-- public/locales/ro/common.json | 3 +-- public/locales/ru/common.json | 3 +-- public/locales/sk/common.json | 3 +-- public/locales/sl/common.json | 3 +-- public/locales/sr/common.json | 3 +-- public/locales/sv/common.json | 3 +-- public/locales/te/common.json | 3 +-- public/locales/th/common.json | 3 +-- public/locales/tr/common.json | 3 +-- public/locales/uk/common.json | 3 +-- public/locales/vi/common.json | 3 +-- public/locales/yue/common.json | 3 +-- public/locales/zh-CN/common.json | 3 +-- public/locales/zh-Hant/common.json | 3 +-- 40 files changed, 38 insertions(+), 78 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index cecfb771..7562e8ea 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -193,8 +193,7 @@ }, "lidarr": { "wanted": "مطلوب", - "queued": "في الإنتظار", - "albums": "ألبومات" + "queued": "في الإنتظار" }, "readarr": { "wanted": "مطلوب", diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index e567de17..7b96b3d0 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -131,8 +131,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index b133c24f..399a9649 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Volgut", - "queued": "En cua", - "albums": "Àlbums" + "queued": "En cua" }, "adguard": { "queries": "Consultes", diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index e4699e86..e38cc629 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -147,8 +147,7 @@ }, "lidarr": { "wanted": "Hledané", - "queued": "Ve frontě", - "albums": "Alba" + "queued": "Ve frontě" }, "readarr": { "wanted": "Hledané", diff --git a/public/locales/da/common.json b/public/locales/da/common.json index ccaa5d52..7f4ceffd 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -15,8 +15,7 @@ }, "lidarr": { "wanted": "Ønsket", - "queued": "I Kø", - "albums": "Albums" + "queued": "I Kø" }, "jellyseerr": { "available": "Tilgængelig", diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 0d664d99..5d28be49 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Gesucht", - "queued": "In Warteschlange", - "albums": "Alben" + "queued": "In Warteschlange" }, "adguard": { "queries": "Anfragen", diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 19f4a0ae..a2eb9ac5 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -226,8 +226,7 @@ }, "lidarr": { "wanted": "Θέλετε", - "queued": "Στη σειρά", - "albums": "Δίσκοι" + "queued": "Στη σειρά" }, "readarr": { "wanted": "Θέλετε", diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 8aa16f14..c489979d 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -145,8 +145,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albumoj" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index b0efcd6b..129946fc 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "queued": "En cola", - "wanted": "Buscando", - "albums": "Álbumes" + "wanted": "Buscando" }, "adguard": { "queries": "Consultas", diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 07dbb8e5..0dddbbce 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -108,8 +108,7 @@ }, "lidarr": { "wanted": "Haluttu", - "queued": "Jonossa", - "albums": "Albumeja" + "queued": "Jonossa" }, "readarr": { "wanted": "Haluttu", diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 269a1adb..051af841 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Demandé", - "queued": "En queue", - "albums": "Albums" + "queued": "En queue" }, "adguard": { "queries": "Requêtes", diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 9e682c20..ceed0eea 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -108,8 +108,7 @@ }, "lidarr": { "wanted": "מבוקש", - "queued": "בתור", - "albums": "אלבומים" + "queued": "בתור" }, "readarr": { "wanted": "מבוקש", diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 4efc87e0..10488f5d 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -169,8 +169,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "overseerr": { "pending": "Pending", diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index fce370ce..48a8df02 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -139,8 +139,7 @@ }, "lidarr": { "wanted": "Zatraženo", - "queued": "U redu čekanja", - "albums": "Albumi" + "queued": "U redu čekanja" }, "readarr": { "wanted": "Zatraženo", diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 98687d9f..2164d696 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -31,7 +31,6 @@ "healthy": "Healthy" }, "lidarr": { - "albums": "Albumok", "wanted": "Keresett", "queued": "Sorban áll" }, diff --git a/public/locales/id/common.json b/public/locales/id/common.json index c36ae790..eb63e939 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -69,8 +69,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 5eed8b41..b78706f3 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Mancanti", - "queued": "In coda", - "albums": "Album" + "queued": "In coda" }, "adguard": { "queries": "Interrogazioni", diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 1a96786b..8625cb15 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -207,8 +207,7 @@ }, "lidarr": { "wanted": "募集中", - "queued": "キュー", - "albums": "アルバム" + "queued": "キュー" }, "readarr": { "wanted": "募集中", diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 56e8dd77..26e8475b 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -177,8 +177,7 @@ }, "lidarr": { "wanted": "요청", - "queued": "대기 중", - "albums": "앨범" + "queued": "대기 중" }, "readarr": { "wanted": "요청", diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 3e4c9173..e38f8671 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -168,8 +168,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albumi" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 716049ef..d57b2805 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -33,7 +33,6 @@ }, "lidarr": { "queued": "Dibaris Gilir", - "albums": "Album", "wanted": "Mahu" }, "readarr": { diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 5761e333..5f6862a5 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "adguard": { "queries": "Queries", diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index fad081f6..410f40dd 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Gezocht", - "queued": "In de wachtrij", - "albums": "Albums" + "queued": "In de wachtrij" }, "adguard": { "queries": "Queries", diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 18a57078..7413c2ba 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -124,8 +124,7 @@ }, "lidarr": { "wanted": "Poszukiwane", - "queued": "W kolejce", - "albums": "Albumy" + "queued": "W kolejce" }, "readarr": { "wanted": "Poszukiwane", diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index d4392e18..fbd72df2 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -126,8 +126,7 @@ }, "lidarr": { "wanted": "Desejado", - "queued": "Na fila", - "albums": "Álbuns" + "queued": "Na fila" }, "readarr": { "wanted": "Desejado", diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index ef5f7cd8..483e23f8 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -189,8 +189,7 @@ }, "lidarr": { "queued": "Enfileirado", - "wanted": "Desejado", - "albums": "Álbuns" + "wanted": "Desejado" }, "adguard": { "queries": "Consultas", diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 535ecb7d..6bfc767c 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -148,8 +148,7 @@ }, "lidarr": { "wanted": "Dorite", - "queued": "În coadă", - "albums": "Albume" + "queued": "În coadă" }, "readarr": { "wanted": "Dorite", diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 5e16f154..5b604ec7 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Хотел", - "queued": "В очереди", - "albums": "Альбомы" + "queued": "В очереди" }, "adguard": { "queries": "Запросы", diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 70c699f8..6a294895 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -287,8 +287,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 7632e2aa..49be2e8a 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -249,8 +249,7 @@ }, "lidarr": { "wanted": "Iskano", - "queued": "V vrsti", - "albums": "Albumi" + "queued": "V vrsti" }, "readarr": { "wanted": "Iskano", diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 5c6e0b2e..2a2971b2 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -131,8 +131,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "readarr": { "wanted": "Wanted", diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 0da6efb3..3861157d 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -102,8 +102,7 @@ }, "lidarr": { "wanted": "Eftersöker", - "queued": "I kö", - "albums": "Album" + "queued": "I kö" }, "readarr": { "wanted": "Eftersökt", diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 867baeae..c9b6c7d8 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -125,8 +125,7 @@ }, "lidarr": { "wanted": "కావలెను", - "queued": "క్యూయూఎడ్", - "albums": "ఆల్బములు" + "queued": "క్యూయూఎడ్" }, "bazarr": { "missingEpisodes": "ఎపిసోడ్‌లు లేవు", diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 660744b7..d0ec6c6b 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -224,8 +224,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "ombi": { "pending": "Pending", diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index d2f9667d..198860f4 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -131,8 +131,7 @@ }, "lidarr": { "wanted": "Aranan", - "queued": "Kuyrukta", - "albums": "Albümler" + "queued": "Kuyrukta" }, "readarr": { "wanted": "Aranan", diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 08c16483..6f6a4c11 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -246,8 +246,7 @@ }, "lidarr": { "wanted": "Розшукується", - "queued": "У черзі", - "albums": "Альбоми" + "queued": "У черзі" }, "traefik": { "middleware": "Проміжне програмне забезпечення", diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 2b551546..b495c735 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "queued": "Queued" }, "adguard": { "queries": "Queries", diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index ce9af7e4..e3a508c3 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -108,8 +108,7 @@ }, "lidarr": { "wanted": "想睇", - "queued": "排緊隊", - "albums": "專輯" + "queued": "排緊隊" }, "readarr": { "wanted": "想睇", diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 1b6a7ea2..cb8ba5c4 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "订阅", - "queued": "队列", - "albums": "相册" + "queued": "队列" }, "adguard": { "queries": "查询", diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 7ea7c835..59886f94 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -176,8 +176,7 @@ }, "lidarr": { "wanted": "關注中", - "queued": "已加入佇列", - "albums": "專輯" + "queued": "已加入佇列" }, "adguard": { "queries": "查詢", From a19304e7e7b492aac401a245155ee8d3db4cdbb8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:01 +0000 Subject: [PATCH 124/788] Translated using Weblate (German) Currently translated at 98.2% (457 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 5d28be49..dc06f5d3 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Gesucht", - "queued": "In Warteschlange" + "queued": "In Warteschlange", + "artists": "Artists" }, "adguard": { "queries": "Anfragen", From f780deca629ce55f0eeb72ca54fae5a44943b516 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:01 +0000 Subject: [PATCH 125/788] Translated using Weblate (Spanish) Currently translated at 99.7% (464 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 129946fc..1782bb92 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "queued": "En cola", - "wanted": "Buscando" + "wanted": "Buscando", + "artists": "Artists" }, "adguard": { "queries": "Consultas", From 2b0cddb05f094852a67d3ea946f74b03cd301c0e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:02 +0000 Subject: [PATCH 126/788] Translated using Weblate (French) Currently translated at 99.7% (464 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 051af841..4cc6dce6 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Demandé", - "queued": "En queue" + "queued": "En queue", + "artists": "Artists" }, "adguard": { "queries": "Requêtes", From 8e89f399790da3bd6598e3151e9808a5f0e32365 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:02 +0000 Subject: [PATCH 127/788] Translated using Weblate (Portuguese) Currently translated at 86.8% (404 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 483e23f8..cc6dfe46 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -189,7 +189,8 @@ }, "lidarr": { "queued": "Enfileirado", - "wanted": "Desejado" + "wanted": "Desejado", + "artists": "Artists" }, "adguard": { "queries": "Consultas", From 637f745ee7d9863d1fe80afd066ea5f76ca09a0d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:58 +0000 Subject: [PATCH 128/788] Translated using Weblate (Russian) Currently translated at 88.8% (413 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 5b604ec7..f89313db 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Хотел", - "queued": "В очереди" + "queued": "В очереди", + "artists": "Artists" }, "adguard": { "queries": "Запросы", From a01713c6e6e6df956390b78e9e1cfaa9efdcb998 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:58 +0000 Subject: [PATCH 129/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 95.2% (443 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index cb8ba5c4..50e36395 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "订阅", - "queued": "队列" + "queued": "队列", + "artists": "Artists" }, "adguard": { "queries": "查询", From 8fa1831b3196f19dd5332a8411a5daa9ad868031 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:56 +0000 Subject: [PATCH 130/788] Translated using Weblate (Italian) Currently translated at 61.5% (286 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index b78706f3..2e666af4 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Mancanti", - "queued": "In coda" + "queued": "In coda", + "artists": "Artists" }, "adguard": { "queries": "Interrogazioni", From 6584a3194f9fe22e0610c6604aafeada29800b08 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:57 +0000 Subject: [PATCH 131/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.9% (79 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 5f6862a5..cdcda4a8 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "adguard": { "queries": "Queries", From 877a091fc05a1b367b81a9d44f0ebc48ad5ab803 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:57 +0000 Subject: [PATCH 132/788] Translated using Weblate (Vietnamese) Currently translated at 9.4% (44 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index b495c735..ef39cd2d 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "adguard": { "queries": "Queries", From 7ca6f36125e1445fa693e79f49c6d4688e4ccf00 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:57 +0000 Subject: [PATCH 133/788] Translated using Weblate (Dutch) Currently translated at 51.8% (241 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 410f40dd..2afed425 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Gezocht", - "queued": "In de wachtrij" + "queued": "In de wachtrij", + "artists": "Artists" }, "adguard": { "queries": "Queries", From b72d894a30e04d795842ba2b08f1f896bda6b30c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:59 +0000 Subject: [PATCH 134/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 98.9% (460 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 59886f94..75aff10e 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "關注中", - "queued": "已加入佇列" + "queued": "已加入佇列", + "artists": "Artists" }, "adguard": { "queries": "查詢", From fd74618b8f84914c8b48227d436b6dcec8b5803f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:57 +0000 Subject: [PATCH 135/788] Translated using Weblate (Catalan) Currently translated at 55.9% (260 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 399a9649..41391cd5 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -176,7 +176,8 @@ }, "lidarr": { "wanted": "Volgut", - "queued": "En cua" + "queued": "En cua", + "artists": "Artists" }, "adguard": { "queries": "Consultes", From 10cfe20e8aed74272dd9edacf66603029ca195b3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:54 +0000 Subject: [PATCH 136/788] Translated using Weblate (Polish) Currently translated at 80.4% (374 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 7413c2ba..d43f9859 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -124,7 +124,8 @@ }, "lidarr": { "wanted": "Poszukiwane", - "queued": "W kolejce" + "queued": "W kolejce", + "artists": "Artists" }, "readarr": { "wanted": "Poszukiwane", From e03c891703fc61f3be6c4580d56462d9c3454af3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:58 +0000 Subject: [PATCH 137/788] Translated using Weblate (Swedish) Currently translated at 27.9% (130 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 3861157d..962a57be 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -102,7 +102,8 @@ }, "lidarr": { "wanted": "Eftersöker", - "queued": "I kö" + "queued": "I kö", + "artists": "Artists" }, "readarr": { "wanted": "Eftersökt", From e9722e89466ebac3fef5cb85cd706384570df6c9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:58 +0000 Subject: [PATCH 138/788] Translated using Weblate (Croatian) Currently translated at 98.4% (458 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 48a8df02..9a05a55c 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -139,7 +139,8 @@ }, "lidarr": { "wanted": "Zatraženo", - "queued": "U redu čekanja" + "queued": "U redu čekanja", + "artists": "Artists" }, "readarr": { "wanted": "Zatraženo", From 7d51a9b10c047923b8c6a77aa30a694039bfb6bf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:00 +0000 Subject: [PATCH 139/788] Translated using Weblate (Hungarian) Currently translated at 23.0% (107 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 2164d696..a8218e73 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -32,7 +32,8 @@ }, "lidarr": { "wanted": "Keresett", - "queued": "Sorban áll" + "queued": "Sorban áll", + "artists": "Artists" }, "readarr": { "wanted": "Keresett", From 4c4da54d9940923cc46e6b67ed62c7173abc3049 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:00 +0000 Subject: [PATCH 140/788] Translated using Weblate (Hebrew) Currently translated at 21.5% (100 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index ceed0eea..dfe2cb84 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -108,7 +108,8 @@ }, "lidarr": { "wanted": "מבוקש", - "queued": "בתור" + "queued": "בתור", + "artists": "Artists" }, "readarr": { "wanted": "מבוקש", From 1f9ee368c60c8937942dea75211f9a62482fdd5b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:59 +0000 Subject: [PATCH 141/788] Translated using Weblate (Romanian) Currently translated at 32.2% (150 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 6bfc767c..3ca5004e 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -148,7 +148,8 @@ }, "lidarr": { "wanted": "Dorite", - "queued": "În coadă" + "queued": "În coadă", + "artists": "Artists" }, "readarr": { "wanted": "Dorite", From ac99f651883569278dd17984cccbce4734085153 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:59 +0000 Subject: [PATCH 142/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 86.8% (404 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index fbd72df2..716ac875 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -126,7 +126,8 @@ }, "lidarr": { "wanted": "Desejado", - "queued": "Na fila" + "queued": "Na fila", + "artists": "Artists" }, "readarr": { "wanted": "Desejado", From aacc2fae9d70604d7434fa88010ec4adc44ebd1b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:03 +0000 Subject: [PATCH 143/788] Translated using Weblate (Yue (Traditional)) Currently translated at 25.1% (117 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index e3a508c3..73e5998b 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -108,7 +108,8 @@ }, "lidarr": { "wanted": "想睇", - "queued": "排緊隊" + "queued": "排緊隊", + "artists": "Artists" }, "readarr": { "wanted": "想睇", From 193582c8ae2b597db8f8f93ccee308b21f778347 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:02 +0000 Subject: [PATCH 144/788] Translated using Weblate (Finnish) Currently translated at 38.0% (177 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 0dddbbce..f403b6d4 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -108,7 +108,8 @@ }, "lidarr": { "wanted": "Haluttu", - "queued": "Jonossa" + "queued": "Jonossa", + "artists": "Artists" }, "readarr": { "wanted": "Haluttu", From 1097a466698f16a361811766cede3ab48b65d467 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:02 +0000 Subject: [PATCH 145/788] Translated using Weblate (Telugu) Currently translated at 46.2% (215 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index c9b6c7d8..3d0deb15 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -125,7 +125,8 @@ }, "lidarr": { "wanted": "కావలెను", - "queued": "క్యూయూఎడ్" + "queued": "క్యూయూఎడ్", + "artists": "Artists" }, "bazarr": { "missingEpisodes": "ఎపిసోడ్‌లు లేవు", From 6794fa1429d807c98a50cc9af5540580b9acd1e2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:03 +0000 Subject: [PATCH 146/788] Translated using Weblate (Bulgarian) Currently translated at 9.8% (46 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 7b96b3d0..bb6bacbb 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -131,7 +131,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From 7fc313cc733f9e0fa1325a0ae6c20ffa24dd2b90 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:03 +0000 Subject: [PATCH 147/788] Translated using Weblate (Turkish) Currently translated at 84.5% (393 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 198860f4..09639f67 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -131,7 +131,8 @@ }, "lidarr": { "wanted": "Aranan", - "queued": "Kuyrukta" + "queued": "Kuyrukta", + "artists": "Artists" }, "readarr": { "wanted": "Aranan", From 36717ede616a513cd9adbdf57445284fa3901bfd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:59 +0000 Subject: [PATCH 148/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 2a2971b2..8ce72d5c 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -131,7 +131,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From 1ca12714e08f89cbbd0664feb5fac414eff64718 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:00 +0000 Subject: [PATCH 149/788] Translated using Weblate (Arabic) Currently translated at 55.9% (260 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 7562e8ea..7f118dc1 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -193,7 +193,8 @@ }, "lidarr": { "wanted": "مطلوب", - "queued": "في الإنتظار" + "queued": "في الإنتظار", + "artists": "Artists" }, "readarr": { "wanted": "مطلوب", From fabb65995ce221f0faf1515e3e2318a70f13545b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:55 +0000 Subject: [PATCH 150/788] Translated using Weblate (Czech) Currently translated at 95.4% (444 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index e38cc629..940ec67e 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -147,7 +147,8 @@ }, "lidarr": { "wanted": "Hledané", - "queued": "Ve frontě" + "queued": "Ve frontě", + "artists": "Artists" }, "readarr": { "wanted": "Hledané", From bfb326bd73aee3dd2e4eb22e2902a871a79644c1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:54 +0000 Subject: [PATCH 151/788] Translated using Weblate (Danish) Currently translated at 42.3% (197 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 7f4ceffd..d1c41aaa 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -15,7 +15,8 @@ }, "lidarr": { "wanted": "Ønsket", - "queued": "I Kø" + "queued": "I Kø", + "artists": "Artists" }, "jellyseerr": { "available": "Tilgængelig", From 2493e608e88a6cb2b9c733a23235470ea87a8516 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:54 +0000 Subject: [PATCH 152/788] Translated using Weblate (Malay) Currently translated at 53.9% (251 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index d57b2805..e249cf43 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -33,7 +33,8 @@ }, "lidarr": { "queued": "Dibaris Gilir", - "wanted": "Mahu" + "wanted": "Mahu", + "artists": "Artists" }, "readarr": { "wanted": "Mahu", From c29e351afcb5b7495022cfd2f79bf4292fd1eb75 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:55 +0000 Subject: [PATCH 153/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 10488f5d..623775c2 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -169,7 +169,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "overseerr": { "pending": "Pending", From 1dea651d8b19acf916fb1aca70fb24fce74acc87 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:55 +0000 Subject: [PATCH 154/788] Translated using Weblate (Esperanto) Currently translated at 31.1% (145 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index c489979d..4ed593be 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -145,7 +145,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From 678819d0652387c3b0e4b488ec5f1b6658296adb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:56 +0000 Subject: [PATCH 155/788] Translated using Weblate (Ukrainian) Currently translated at 99.7% (464 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 6f6a4c11..6b112e8f 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -246,7 +246,8 @@ }, "lidarr": { "wanted": "Розшукується", - "queued": "У черзі" + "queued": "У черзі", + "artists": "Artists" }, "traefik": { "middleware": "Проміжне програмне забезпечення", From 4382bab64b91cbea6b1cc3457e864e30096b305c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:55 +0000 Subject: [PATCH 156/788] Translated using Weblate (Japanese) Currently translated at 80.2% (373 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 8625cb15..ec9b82a9 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -207,7 +207,8 @@ }, "lidarr": { "wanted": "募集中", - "queued": "キュー" + "queued": "キュー", + "artists": "Artists" }, "readarr": { "wanted": "募集中", From b5c4e36a5303d46c6e8301a8a4827bd4cf27969d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:56 +0000 Subject: [PATCH 157/788] Translated using Weblate (Latvian) Currently translated at 25.3% (118 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index e38f8671..d8d63388 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -168,7 +168,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From d06d6f7e44aa3806730e707020996d3416ade2e2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:53 +0000 Subject: [PATCH 158/788] Translated using Weblate (Thai) Currently translated at 10.1% (47 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index d0ec6c6b..3981f0f8 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -224,7 +224,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "ombi": { "pending": "Pending", From 19bcf40d313409f0a71593d9595b0b15dab810ed Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:01 +0000 Subject: [PATCH 159/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 6a294895..ee08f212 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -287,7 +287,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From ee5fa003ee8913c5432159c7a5432f406a04bd3d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:17:01 +0000 Subject: [PATCH 160/788] Translated using Weblate (Korean) Currently translated at 37.2% (173 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 26e8475b..6a58072f 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -177,7 +177,8 @@ }, "lidarr": { "wanted": "요청", - "queued": "대기 중" + "queued": "대기 중", + "artists": "Artists" }, "readarr": { "wanted": "요청", From fe647fe67a9a8cbafae346bc046777b10a61824d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:53 +0000 Subject: [PATCH 161/788] Translated using Weblate (Greek) Currently translated at 30.7% (143 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index a2eb9ac5..3492bdd1 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -226,7 +226,8 @@ }, "lidarr": { "wanted": "Θέλετε", - "queued": "Στη σειρά" + "queued": "Στη σειρά", + "artists": "Artists" }, "readarr": { "wanted": "Θέλετε", From 0be0fa71d372957f3dbd5cd7d8fd6d1f60857c3b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:56 +0000 Subject: [PATCH 162/788] Translated using Weblate (Slovenian) Currently translated at 96.5% (449 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 49be2e8a..fe5fe631 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -249,7 +249,8 @@ }, "lidarr": { "wanted": "Iskano", - "queued": "V vrsti" + "queued": "V vrsti", + "artists": "Artists" }, "readarr": { "wanted": "Iskano", From b882065d5ee0e0533dd0aa216cb6c2ecf0bf9f0a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 8 Jun 2023 14:16:54 +0000 Subject: [PATCH 163/788] Translated using Weblate (Indonesian) Currently translated at 3.2% (15 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index eb63e939..d54218c4 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -69,7 +69,8 @@ }, "lidarr": { "wanted": "Wanted", - "queued": "Queued" + "queued": "Queued", + "artists": "Artists" }, "readarr": { "wanted": "Wanted", From 2da66b504b1018be353be10cd6a67d3dc1b28067 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 8 Jun 2023 07:17:58 -0700 Subject: [PATCH 164/788] lint lidarr widget.js --- src/widgets/lidarr/widget.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/widgets/lidarr/widget.js b/src/widgets/lidarr/widget.js index 55975e63..2f036726 100644 --- a/src/widgets/lidarr/widget.js +++ b/src/widgets/lidarr/widget.js @@ -1,5 +1,4 @@ import genericProxyHandler from "utils/proxy/handlers/generic"; -import { jsonArrayFilter } from "utils/proxy/api-helpers"; const widget = { api: "{url}/api/v1/{endpoint}?apikey={key}", From 0101e8ccb950cbae2fb9e1a3310fdf5e387894ac Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:40:20 -0700 Subject: [PATCH 165/788] make portainer error detection more specific --- src/widgets/portainer/component.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/portainer/component.jsx b/src/widgets/portainer/component.jsx index 7da289c4..53a6fd26 100644 --- a/src/widgets/portainer/component.jsx +++ b/src/widgets/portainer/component.jsx @@ -23,8 +23,8 @@ export default function Component({ service }) { ); } - if (containersData.error || !Array.isArray(containersData)) { - // containersData can be itself an error object + if (containersData.error || containersData.message) { + // containersData can be itself an error object e.g. if environment fails return ; } From 68b6192d8c38f2961f11bd9dea9e8f1b99e323c3 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Fri, 9 Jun 2023 09:01:19 -0700 Subject: [PATCH 166/788] Fix full height layout on tall screens --- src/pages/index.jsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 06e55010..e170d4e1 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -252,7 +252,7 @@ function Home({ initialSettings }) { /> -
    +
    )} -
    - {!initialSettings?.color && } - - {!initialSettings?.theme && } -
    +
    +
    + {!initialSettings?.color && } + + {!initialSettings?.theme && } +
    -
    - {!initialSettings?.hideVersion && } +
    + {!initialSettings?.hideVersion && } +
    From 6b2930ab8d52c70cf6a1dd8bb85fcd5d86b17233 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 10 Jun 2023 23:30:44 -0700 Subject: [PATCH 167/788] Revert "Added optional boxed styling for information widgets and refactored information widgets" --- src/components/widgets/datetime/datetime.jsx | 21 +- src/components/widgets/glances/glances.jsx | 262 ++++++++++++------ src/components/widgets/greeting/greeting.jsx | 11 +- .../widgets/kubernetes/kubernetes.jsx | 38 ++- src/components/widgets/kubernetes/node.jsx | 11 +- .../widgets/kubernetes/usage-bar.jsx | 12 + src/components/widgets/logo/logo.jsx | 11 +- src/components/widgets/longhorn/longhorn.jsx | 32 ++- src/components/widgets/longhorn/node.jsx | 38 ++- .../widgets/openmeteo/openmeteo.jsx | 103 ++++--- .../widgets/openweathermap/weather.jsx | 99 +++++-- src/components/widgets/resources/cpu.jsx | 82 ++++-- src/components/widgets/resources/cputemp.jsx | 90 ++++-- src/components/widgets/resources/disk.jsx | 67 +++-- src/components/widgets/resources/memory.jsx | 75 +++-- .../widgets/resources/resources.jsx | 11 +- src/components/widgets/resources/uptime.jsx | 44 ++- src/components/widgets/search/search.jsx | 162 ++++++----- .../widgets/unifi_console/unifi_console.jsx | 45 +-- src/components/widgets/weather/weather.jsx | 104 ++++--- src/components/widgets/widget.jsx | 4 +- src/components/widgets/widget/container.jsx | 42 --- .../widgets/widget/container_button.jsx | 10 - .../widgets/widget/container_form.jsx | 10 - .../widgets/widget/container_link.jsx | 10 - src/components/widgets/widget/error.jsx | 15 - .../widgets/widget/primary_text.jsx | 5 - src/components/widgets/widget/raw.jsx | 7 - src/components/widgets/widget/resource.jsx | 22 -- src/components/widgets/widget/resources.jsx | 15 - .../widgets/widget/secondary_text.jsx | 5 - src/components/widgets/widget/widget_icon.jsx | 18 -- .../widgets/widget/widget_label.jsx | 3 - src/pages/api/widgets/longhorn.js | 2 +- src/pages/index.jsx | 10 +- 35 files changed, 854 insertions(+), 642 deletions(-) create mode 100644 src/components/widgets/kubernetes/usage-bar.jsx delete mode 100644 src/components/widgets/widget/container.jsx delete mode 100644 src/components/widgets/widget/container_button.jsx delete mode 100644 src/components/widgets/widget/container_form.jsx delete mode 100644 src/components/widgets/widget/container_link.jsx delete mode 100644 src/components/widgets/widget/error.jsx delete mode 100644 src/components/widgets/widget/primary_text.jsx delete mode 100644 src/components/widgets/widget/raw.jsx delete mode 100644 src/components/widgets/widget/resource.jsx delete mode 100644 src/components/widgets/widget/resources.jsx delete mode 100644 src/components/widgets/widget/secondary_text.jsx delete mode 100644 src/components/widgets/widget/widget_icon.jsx delete mode 100644 src/components/widgets/widget/widget_label.jsx diff --git a/src/components/widgets/datetime/datetime.jsx b/src/components/widgets/datetime/datetime.jsx index 454d004d..86983473 100644 --- a/src/components/widgets/datetime/datetime.jsx +++ b/src/components/widgets/datetime/datetime.jsx @@ -1,9 +1,6 @@ import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; -import Container from "../widget/container"; -import Raw from "../widget/raw"; - const textSizes = { "4xl": "text-4xl", "3xl": "text-3xl", @@ -20,7 +17,7 @@ export default function DateTime({ options }) { const { i18n } = useTranslation(); const [date, setDate] = useState(""); const dateLocale = locale ?? i18n.language; - + useEffect(() => { const dateFormat = new Intl.DateTimeFormat(dateLocale, { ...format }); const interval = setInterval(() => { @@ -30,14 +27,12 @@ export default function DateTime({ options }) { }, [date, setDate, dateLocale, format]); return ( - - -
    - - {date} - -
    -
    -
    +
    +
    + + {date} + +
    +
    ); } diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index b45dfefe..85dd44c0 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,13 +1,11 @@ import useSWR from "swr"; import { useContext } from "react"; +import { BiError } from "react-icons/bi"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import Error from "../widget/error"; -import Resource from "../widget/resource"; -import Resources from "../widget/resources"; -import WidgetLabel from "../widget/widget_label"; +import UsageBar from "../resources/usage-bar"; import { SettingsContext } from "utils/contexts/settings"; @@ -28,17 +26,52 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} +
    +
    +
    +
    + ); } if (!data) { - return - - - { options.cputemp && } - { options.uptime && } - { options.label && } - ; + return ( +
    +
    +
    + +
    +
    +
    + {t("glances.wait")} +
    +
    + +
    +
    +
    + +
    +
    +
    + {t("glances.wait")} +
    +
    + +
    +
    +
    + {options.label && ( +
    {options.label}
    + )} +
    + ); } const unit = options.units === "imperial" ? "fahrenheit" : "celsius"; @@ -68,84 +101,131 @@ export default function Widget({ options }) { } return ( - - - - {disks.map((disk) => ( - - ))} - {options.cputemp && mainTemp > 0 && - - } - {options.uptime && data.uptime && - - } - {options.label && } - + +
    +
    + +
    +
    +
    + {t("common.number", { + value: data.cpu.total, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} +
    +
    {t("glances.cpu")}
    +
    + {options.expanded && ( + +
    + {t("common.number", { + value: data.load.min15, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} +
    +
    {t("glances.load")}
    +
    + )} + +
    +
    +
    + +
    +
    +
    + {t("common.bytes", { + value: data.mem.free, + maximumFractionDigits: 1, + binary: true, + })} +
    +
    {t("glances.free")}
    +
    + {options.expanded && ( + +
    + {t("common.bytes", { + value: data.mem.total, + maximumFractionDigits: 1, + binary: true, + })} +
    +
    {t("glances.total")}
    +
    + )} + +
    +
    + {disks.map((disk) => ( +
    + +
    + +
    {t("common.bytes", { value: disk.free })}
    +
    {t("glances.free")}
    +
    + {options.expanded && ( + +
    {t("common.bytes", { value: disk.size })}
    +
    {t("glances.total")}
    +
    + )} + +
    +
    ))} + {options.cputemp && mainTemp > 0 && + (
    + +
    + +
    + {t("common.number", { + value: mainTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
    +
    {t("glances.temp")}
    +
    + {options.expanded && ( + +
    + {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
    +
    {t("glances.warn")}
    +
    + )} + +
    +
    )} + {options.uptime && data.uptime && + (
    + +
    + +
    + {data.uptime.replace(" days,", t("glances.days")).replace(/:\d\d:\d\d$/g, t("glances.hours"))} +
    +
    {t("glances.uptime")}
    +
    + +
    +
    )} +
    + {options.label && ( +
    {options.label}
    + )} +
    ); } diff --git a/src/components/widgets/greeting/greeting.jsx b/src/components/widgets/greeting/greeting.jsx index 11de571c..da0f063d 100644 --- a/src/components/widgets/greeting/greeting.jsx +++ b/src/components/widgets/greeting/greeting.jsx @@ -1,6 +1,3 @@ -import Container from "../widget/container"; -import Raw from "../widget/raw"; - const textSizes = { "4xl": "text-4xl", "3xl": "text-3xl", @@ -14,12 +11,12 @@ const textSizes = { export default function Greeting({ options }) { if (options.text) { - return - + return ( +
    {options.text} - - ; +
    + ); } } diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx index 2d1f55e4..78c4caaf 100644 --- a/src/components/widgets/kubernetes/kubernetes.jsx +++ b/src/components/widgets/kubernetes/kubernetes.jsx @@ -1,15 +1,12 @@ import useSWR from "swr"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Error from "../widget/error"; -import Container from "../widget/container"; -import Raw from "../widget/raw"; - import Node from "./node"; export default function Widget({ options }) { const { cluster, nodes } = options; - const { i18n } = useTranslation(); + const { t, i18n } = useTranslation(); const defaultData = { cpu: { @@ -21,7 +18,7 @@ export default function Widget({ options }) { used: 0, total: 0, free: 0, - percent: 0 + precent: 0 } }; @@ -32,12 +29,23 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} +
    +
    +
    +
    + ); } if (!data) { - return - + return ( +
    {cluster.show && @@ -46,12 +54,12 @@ export default function Widget({ options }) { }
    - - ; +
    + ); } - return - + return ( +
    {cluster.show && @@ -61,6 +69,6 @@ export default function Widget({ options }) { ) }
    - - ; +
    + ); } diff --git a/src/components/widgets/kubernetes/node.jsx b/src/components/widgets/kubernetes/node.jsx index cc864be6..7a7c322d 100644 --- a/src/components/widgets/kubernetes/node.jsx +++ b/src/components/widgets/kubernetes/node.jsx @@ -3,7 +3,8 @@ import { FiAlertTriangle, FiCpu, FiServer } from "react-icons/fi"; import { SiKubernetes } from "react-icons/si"; import { useTranslation } from "next-i18next"; -import UsageBar from "../resources/usage-bar"; +import UsageBar from "./usage-bar"; + export default function Node({ type, options, data }) { const { t } = useTranslation(); @@ -28,7 +29,7 @@ export default function Node({ type, options, data }) {
    {t("common.number", { - value: data?.cpu?.percent ?? 0, + value: data.cpu.percent, style: "unit", unit: "percent", maximumFractionDigits: 0 @@ -36,18 +37,18 @@ export default function Node({ type, options, data }) {
    - +
    {t("common.bytes", { - value: data?.memory?.free ?? 0, + value: data.memory.free, maximumFractionDigits: 0, binary: true })}
    - + {options.showLabel && (
    {type === "cluster" ? options.label : data.name}
    )} diff --git a/src/components/widgets/kubernetes/usage-bar.jsx b/src/components/widgets/kubernetes/usage-bar.jsx new file mode 100644 index 00000000..c817db4c --- /dev/null +++ b/src/components/widgets/kubernetes/usage-bar.jsx @@ -0,0 +1,12 @@ +export default function UsageBar({ percent }) { + return ( +
    +
    +
    + ); +} diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx index 3a4a2565..96e8569f 100644 --- a/src/components/widgets/logo/logo.jsx +++ b/src/components/widgets/logo/logo.jsx @@ -1,13 +1,9 @@ -import Container from "../widget/container"; -import Raw from "../widget/raw"; - import ResolvedIcon from "components/resolvedicon" export default function Logo({ options }) { return ( - - - {options.icon ? +
    + {options.icon ? : // fallback to homepage logo } - - +
    ) } diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index c0169ceb..9fcb21b4 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -1,31 +1,37 @@ import useSWR from "swr"; - -import Error from "../widget/error"; -import Container from "../widget/container"; -import Raw from "../widget/raw"; +import { BiError } from "react-icons/bi"; +import { useTranslation } from "next-i18next"; import Node from "./node"; export default function Longhorn({ options }) { const { expanded, total, labels, include, nodes } = options; + const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/longhorn`, { refreshInterval: 1500 }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data) { - return - + return ( +
    - - ; +
    + ); } - return - + return ( +
    {data.nodes .filter((node) => { @@ -46,6 +52,6 @@ export default function Longhorn({ options }) {
    )}
    -
    -
    ; +
    + ); } diff --git a/src/components/widgets/longhorn/node.jsx b/src/components/widgets/longhorn/node.jsx index 5235698a..e0ee69af 100644 --- a/src/components/widgets/longhorn/node.jsx +++ b/src/components/widgets/longhorn/node.jsx @@ -1,20 +1,32 @@ +import { FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import { FaThermometerHalf } from "react-icons/fa"; -import Resource from "../widget/resource"; -import WidgetLabel from "../widget/widget_label"; +import UsageBar from "../resources/usage-bar"; export default function Node({ data, expanded, labels }) { const { t } = useTranslation(); - return { labels && } - + return ( + <> +
    + +
    + +
    {t("common.bytes", { value: data.node.available })}
    +
    {t("resources.free")}
    +
    + {expanded && ( + +
    {t("common.bytes", { value: data.node.maximum })}
    +
    {t("resources.total")}
    +
    + )} + +
    +
    + {labels && ( +
    {data.node.id}
    + )} + + ); } diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index 040a3b6b..0d29aef5 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -1,16 +1,10 @@ import useSWR from "swr"; import { useState } from "react"; +import { BiError } from "react-icons/bi"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import Error from "../widget/error"; -import Container from "../widget/container"; -import ContainerButton from "../widget/container_button"; -import WidgetIcon from "../widget/widget_icon"; -import PrimaryText from "../widget/primary_text"; -import SecondaryText from "../widget/secondary_text"; - import Icon from "./icon"; function Widget({ options }) { @@ -21,35 +15,60 @@ function Widget({ options }) { ); if (error || data?.error) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} + - +
    +
    +
    +
    + ); } if (!data) { - return - {t("weather.updating")} - {t("weather.wait")} - - ; + return ( +
    +
    +
    + +
    +
    + {t("weather.updating")} + {t("weather.wait")} +
    +
    +
    + ); } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.current_weather.weathercode, - timeOfDay: data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night" - }; + const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"; - return - - {options.label && `${options.label}, `} - {t("common.number", { - value: data.current_weather.temperature, - style: "unit", - unit, - })} - - {t(`wmo.${data.current_weather.weathercode}-${weatherInfo.timeOfDay}`)} - - ; + return ( +
    +
    +
    + +
    +
    + + {options.label && `${options.label}, `} + {t("common.number", { + value: data.current_weather.temperature, + style: "unit", + unit, + })} + + {t(`wmo.${data.current_weather.weathercode}-${timeOfDay}`)} +
    +
    +
    + ); } export default function OpenMeteo({ options }) { @@ -84,11 +103,27 @@ export default function OpenMeteo({ options }) { // if (!requesting && !location) requestLocation(); if (!location) { - return - {t("weather.current")} - {t("weather.allow")} - - ; + return ( + + ); } return ; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index 30531513..49f428a0 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -1,19 +1,12 @@ import useSWR from "swr"; import { useState } from "react"; +import { BiError } from "react-icons/bi"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import Error from "../widget/error"; -import Container from "../widget/container"; -import ContainerButton from "../widget/container_button"; -import PrimaryText from "../widget/primary_text"; -import SecondaryText from "../widget/secondary_text"; -import WidgetIcon from "../widget/widget_icon"; - import Icon from "./icon"; - function Widget({ options }) { const { t, i18n } = useTranslation(); @@ -22,30 +15,58 @@ function Widget({ options }) { ); if (error || data?.cod === 401 || data?.error) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} + - +
    +
    +
    +
    + ); } if (!data) { - return - {t("weather.updating")} - {t("weather.wait")} - - ; + return ( +
    +
    +
    + +
    +
    + {t("weather.updating")} + {t("weather.wait")} +
    +
    +
    + ); } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.weather[0].id, - timeOfDay: data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night" - }; - - return - {options.label && `${options.label}, `} - {t("common.number", { value: data.main.temp, style: "unit", unit })} - {data.weather[0].description} - - ; + return ( +
    +
    +
    + data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"} + /> +
    +
    + + {options.label && `${options.label}, `} + {t("common.number", { value: data.main.temp, style: "unit", unit })} + + {data.weather[0].description} +
    +
    +
    + ); } export default function OpenWeatherMap({ options }) { @@ -77,12 +98,30 @@ export default function OpenWeatherMap({ options }) { } }; + // if (!requesting && !location) requestLocation(); + if (!location) { - return - {t("weather.current")} - {t("weather.allow")} - - ; + return ( + + ); } return ; diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 12972fe8..7069e3c4 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -1,9 +1,9 @@ import useSWR from "swr"; import { FiCpu } from "react-icons/fi"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Resource from "../widget/resource"; -import Error from "../widget/error"; +import UsageBar from "./usage-bar"; export default function Cpu({ expanded }) { const { t } = useTranslation(); @@ -13,29 +13,67 @@ export default function Cpu({ expanded }) { }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data) { - return + return ( +
    + +
    +
    +
    -
    +
    {t("resources.cpu")}
    +
    + {expanded && ( +
    +
    -
    +
    {t("resources.load")}
    +
    + )} + +
    +
    + ); } - return + const percent = data.cpu.usage; + + return ( +
    + +
    +
    +
    + {t("common.number", { + value: data.cpu.usage, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} +
    +
    {t("resources.cpu")}
    +
    + {expanded && ( +
    +
    + {t("common.number", { + value: data.cpu.load, + maximumFractionDigits: 2, + })} +
    +
    {t("resources.load")}
    +
    + )} + +
    +
    + ); } diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index ba6d9b73..571e6c8a 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -1,9 +1,9 @@ import useSWR from "swr"; import { FaThermometerHalf } from "react-icons/fa"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Resource from "../widget/resource"; -import Error from "../widget/error"; +import UsageBar from "./usage-bar"; function convertToFahrenheit(t) { return t * 9/5 + 32 @@ -17,18 +17,34 @@ export default function CpuTemp({ expanded, units }) { }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data || !data.cputemp) { - return ; + return ( +
    + +
    + +
    -
    +
    {t("resources.temp")}
    +
    + {expanded && ( + +
    -
    +
    {t("resources.max")}
    +
    + )} +
    +
    + ); } let mainTemp = data.cputemp.main; @@ -38,24 +54,38 @@ export default function CpuTemp({ expanded, units }) { const unit = units === "imperial" ? "fahrenheit" : "celsius"; mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp); const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max); + const percent = Math.round((mainTemp / maxTemp) * 100); - return ; + return ( +
    + +
    + +
    + {t("common.number", { + value: mainTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
    +
    {t("resources.temp")}
    +
    + {expanded && ( + +
    + {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
    +
    {t("resources.max")}
    +
    + )} + +
    +
    + ); } diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index ab56624d..ca09c095 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -1,9 +1,9 @@ import useSWR from "swr"; import { FiHardDrive } from "react-icons/fi"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Resource from "../widget/resource"; -import Error from "../widget/error"; +import UsageBar from "./usage-bar"; export default function Disk({ options, expanded }) { const { t } = useTranslation(); @@ -13,31 +13,56 @@ export default function Disk({ options, expanded }) { }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data) { - return ; + return ( +
    + +
    + +
    -
    +
    {t("resources.free")}
    +
    + {expanded && ( + +
    -
    +
    {t("resources.total")}
    +
    + )} + +
    +
    + ); } // data.drive.used not accurate? const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100); - return ; + return ( +
    + +
    + +
    {t("common.bytes", { value: data.drive.available })}
    +
    {t("resources.free")}
    +
    + {expanded && ( + +
    {t("common.bytes", { value: data.drive.size })}
    +
    {t("resources.total")}
    +
    + )} + +
    +
    + ); } diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 19ae8687..30b7c8eb 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -1,9 +1,9 @@ import useSWR from "swr"; import { FaMemory } from "react-icons/fa"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Resource from "../widget/resource"; -import Error from "../widget/error"; +import UsageBar from "./usage-bar"; export default function Memory({ expanded }) { const { t } = useTranslation(); @@ -13,30 +13,63 @@ export default function Memory({ expanded }) { }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data) { - return ; + return ( +
    + +
    + +
    -
    +
    {t("resources.free")}
    +
    + {expanded && ( + +
    -
    +
    {t("resources.total")}
    +
    + )} + +
    +
    + ); } const percent = Math.round((data.memory.active / data.memory.total) * 100); - return ; + return ( +
    + +
    + +
    + {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} +
    +
    {t("resources.free")}
    +
    + {expanded && ( + +
    + {t("common.bytes", { + value: data.memory.total, + maximumFractionDigits: 1, + binary: true, + })} +
    +
    {t("resources.total")}
    +
    + )} + +
    +
    + ); } diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 0cc2c301..4ff0c81c 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -1,6 +1,3 @@ -import Container from "../widget/container"; -import Raw from "../widget/raw"; - import Disk from "./disk"; import Cpu from "./cpu"; import Memory from "./memory"; @@ -9,8 +6,8 @@ import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units } = options; - return - + return ( +
    {options.cpu && } {options.memory && } @@ -23,6 +20,6 @@ export default function Resources({ options }) { {options.label && (
    {options.label}
    )} - - ; +
    + ); } diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 3984975f..3bf785b1 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -1,9 +1,9 @@ import useSWR from "swr"; import { FaRegClock } from "react-icons/fa"; +import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; -import Resource from "../widget/resource"; -import Error from "../widget/error"; +import UsageBar from "./usage-bar"; export default function Uptime() { const { t } = useTranslation(); @@ -13,24 +13,54 @@ export default function Uptime() { }); if (error || data?.error) { - return + return ( +
    + +
    + {t("widget.api_error")} +
    +
    + ); } if (!data) { - return ; + return ( +
    + +
    + +
    -
    +
    {t("resources.temp")}
    +
    +
    +
    + ); } const mo = Math.floor(data.uptime / (3600 * 24 * 31)); const d = Math.floor(data.uptime % (3600 * 24 * 31) / (3600 * 24)); const h = Math.floor(data.uptime % (3600 * 24) / 3600); const m = Math.floor(data.uptime % 3600 / 60); - + let uptime; if (mo > 0) uptime = `${mo}${t("resources.months")} ${d}${t("resources.days")}`; else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`; else uptime = `${h}${t("resources.hours")} ${m}${t("resources.minutes")}`; - const percent = Math.round((new Date().getSeconds() / 60) * 100).toString(); + const percent = Math.round((new Date().getSeconds() / 60) * 100); - return ; + return ( +
    + +
    + +
    + {uptime} +
    +
    {t("resources.uptime")}
    +
    + +
    +
    + ); } diff --git a/src/components/widgets/search/search.jsx b/src/components/widgets/search/search.jsx index 1bac4a61..4689567f 100644 --- a/src/components/widgets/search/search.jsx +++ b/src/components/widgets/search/search.jsx @@ -1,13 +1,10 @@ -import { useState, useEffect, useCallback, Fragment } from "react"; +import { useState, useEffect, Fragment } from "react"; import { useTranslation } from "next-i18next"; import { FiSearch } from "react-icons/fi"; import { SiDuckduckgo, SiMicrosoftbing, SiGoogle, SiBaidu, SiBrave } from "react-icons/si"; import { Listbox, Transition } from "@headlessui/react"; import classNames from "classnames"; -import ContainerForm from "../widget/container_form"; -import Raw from "../widget/raw"; - export const searchProviders = { google: { name: "Google", @@ -79,9 +76,14 @@ export default function Search({ options }) { setSelectedProvider(storedProvider); } }, [availableProviderIds]); + + if (!availableProviderIds) { + return null; + } - const submitCallback = useCallback(event => { + function handleSubmit(event) { const q = encodeURIComponent(query); + const { url } = selectedProvider; if (url) { window.open(`${url}${q}`, options.target || "_blank"); @@ -92,10 +94,6 @@ export default function Search({ options }) { event.preventDefault(); event.target.reset(); setQuery(""); - }, [options.target, options.url, query, selectedProvider]); - - if (!availableProviderIds) { - return null; } const onChangeProvider = (provider) => { @@ -103,79 +101,77 @@ export default function Search({ options }) { localStorage.setItem(localStorageKey, provider.name); } - return - -
    -
    - setQuery(s.currentTarget.value)} - required - autoCapitalize="off" - autoCorrect="off" - autoComplete="off" - // eslint-disable-next-line jsx-a11y/no-autofocus - autoFocus={options.focus} - /> - -
    - - - {t("search.search")} - -
    - +
    + setQuery(s.currentTarget.value)} + required + autoCapitalize="off" + autoCorrect="off" + autoComplete="off" + // eslint-disable-next-line jsx-a11y/no-autofocus + autoFocus={options.focus} + /> + +
    + - -
    - {availableProviderIds.map((providerId) => { - const p = searchProviders[providerId]; - return ( - - {({ active }) => ( -
  • - -
  • - )} -
    - ); - })} -
    -
    - - -
    - - ; + + {t("search.search")} + +
    + + +
    + {availableProviderIds.map((providerId) => { + const p = searchProviders[providerId]; + return ( + + {({ active }) => ( +
  • + +
  • + )} +
    + ); + })} +
    +
    +
    +
    + + ); } diff --git a/src/components/widgets/unifi_console/unifi_console.jsx b/src/components/widgets/unifi_console/unifi_console.jsx index dad92cc7..13c90bd4 100644 --- a/src/components/widgets/unifi_console/unifi_console.jsx +++ b/src/components/widgets/unifi_console/unifi_console.jsx @@ -3,12 +3,6 @@ import { MdSettingsEthernet } from "react-icons/md"; import { useTranslation } from "next-i18next"; import { SiUbiquiti } from "react-icons/si"; -import Error from "../widget/error"; -import Container from "../widget/container"; -import Raw from "../widget/raw"; -import WidgetIcon from "../widget/widget_icon"; -import PrimaryText from "../widget/primary_text"; - import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Widget({ options }) { @@ -19,16 +13,35 @@ export default function Widget({ options }) { const { data: statsData, error: statsError } = useWidgetAPI(options, "stat/sites", { index: options.index }); if (statsError) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} +
    +
    +
    +
    + ); } const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default"); if (!defaultSite) { - return - {t("unifi.wait")} - - ; + return ( +
    +
    +
    + +
    +
    + {t("unifi.wait")} +
    +
    +
    + ); } const wan = defaultSite.health.find(h => h.subsystem === "wan"); @@ -43,9 +56,8 @@ export default function Widget({ options }) { const dataEmpty = !(wan.show || lan.show || wlan.show || uptime); - return - -
    + return ( +
    @@ -129,7 +141,6 @@ export default function Widget({ options }) {
    }
    -
    -
    -
    +
    + ); } diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 702ea669..20bf3dec 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -1,16 +1,10 @@ import useSWR from "swr"; import { useState } from "react"; +import { BiError } from "react-icons/bi"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import Error from "../widget/error"; -import Container from "../widget/container"; -import PrimaryText from "../widget/primary_text"; -import SecondaryText from "../widget/secondary_text"; -import WidgetIcon from "../widget/widget_icon"; -import ContainerButton from "../widget/container_button"; - import Icon from "./icon"; function Widget({ options }) { @@ -21,35 +15,59 @@ function Widget({ options }) { ); if (error || data?.error) { - return + return ( +
    +
    +
    + +
    + {t("widget.api_error")} + - +
    +
    +
    +
    + ); } if (!data) { - return - {t("weather.updating")} - {t("weather.wait")} - - ; + return ( +
    +
    +
    + +
    +
    + {t("weather.updating")} + {t("weather.wait")} +
    +
    +
    + ); } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.current.condition.code, - timeOfDay: data.current.is_day ? "day" : "night", - }; - return - - {options.label && `${options.label}, `} - {t("common.number", { - value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, - style: "unit", - unit, - })} - - {data.current.condition.text} - - ; + return ( +
    +
    +
    + +
    +
    + + {options.label && `${options.label}, `} + {t("common.number", { + value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, + style: "unit", + unit, + })} + + {data.current.condition.text} +
    +
    +
    + ); } export default function WeatherApi({ options }) { @@ -81,12 +99,30 @@ export default function WeatherApi({ options }) { } }; + // if (!requesting && !location) requestLocation(); + if (!location) { - return - {t("weather.current")} - {t("weather.allow")} - - ; + return ( + + ); } return ; diff --git a/src/components/widgets/widget.jsx b/src/components/widgets/widget.jsx index b4fdb143..47141887 100644 --- a/src/components/widgets/widget.jsx +++ b/src/components/widgets/widget.jsx @@ -17,13 +17,13 @@ const widgetMappings = { kubernetes: dynamic(() => import("components/widgets/kubernetes/kubernetes")), }; -export default function Widget({ widget, style }) { +export default function Widget({ widget }) { const InfoWidget = widgetMappings[widget.type]; if (InfoWidget) { return ( - + ); } diff --git a/src/components/widgets/widget/container.jsx b/src/components/widgets/widget/container.jsx deleted file mode 100644 index 3a4a9f57..00000000 --- a/src/components/widgets/widget/container.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import classNames from "classnames"; - -import WidgetIcon from "./widget_icon"; -import PrimaryText from "./primary_text"; -import SecondaryText from "./secondary_text"; -import Raw from "./raw"; - -export function getAllClasses(options, additionalClassNames = '') { - return classNames( - "flex flex-col justify-center first:ml-0 ml-4 mr-2", - additionalClassNames, - options?.style === "boxedWidgets" && " ml-4 mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3", - ); -} - -export function getInnerBlock(children) { - // children won't be an array if it's Raw component - return Array.isArray(children) &&
    -
    {children.find(child => child.type === WidgetIcon)}
    -
    - {children.find(child => child.type === PrimaryText)} - {children.find(child => child.type === SecondaryText)} -
    -
    ; -} - -export function getBottomBlock(children) { - if (children.type !== Raw) { - return children.find(child => child.type === Raw) || []; - } - - return [children]; -} - -export default function Container({ children = [], options, additionalClassNames = '' }) { - return ( -
    - {getInnerBlock(children)} - {getBottomBlock(children)} -
    - ); -} diff --git a/src/components/widgets/widget/container_button.jsx b/src/components/widgets/widget/container_button.jsx deleted file mode 100644 index 92d8a416..00000000 --- a/src/components/widgets/widget/container_button.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; - -export default function ContainerButton ({ children = [], options, additionalClassNames = '', callback }) { - return ( - - ); -} diff --git a/src/components/widgets/widget/container_form.jsx b/src/components/widgets/widget/container_form.jsx deleted file mode 100644 index 7d28a1bb..00000000 --- a/src/components/widgets/widget/container_form.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; - -export default function ContainerForm ({ children = [], options, additionalClassNames = '', callback }) { - return ( -
    - {getInnerBlock(children)} - {getBottomBlock(children)} -
    - ); -} diff --git a/src/components/widgets/widget/container_link.jsx b/src/components/widgets/widget/container_link.jsx deleted file mode 100644 index 8ef0e80a..00000000 --- a/src/components/widgets/widget/container_link.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; - -export default function ContainerLink ({ children = [], options, additionalClassNames = '', target }) { - return ( - - {getInnerBlock(children)} - {getBottomBlock(children)} - - ); -} diff --git a/src/components/widgets/widget/error.jsx b/src/components/widgets/widget/error.jsx deleted file mode 100644 index a3dbab85..00000000 --- a/src/components/widgets/widget/error.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import { useTranslation } from "react-i18next"; -import { BiError } from "react-icons/bi"; - -import Container from "./container"; -import PrimaryText from "./primary_text"; -import WidgetIcon from "./widget_icon"; - -export default function Error({ options }) { - const { t } = useTranslation(); - - return - {t("widget.api_error")} - - ; -} diff --git a/src/components/widgets/widget/primary_text.jsx b/src/components/widgets/widget/primary_text.jsx deleted file mode 100644 index 3418b92c..00000000 --- a/src/components/widgets/widget/primary_text.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function PrimaryText({ children }) { - return ( - {children} - ); -} diff --git a/src/components/widgets/widget/raw.jsx b/src/components/widgets/widget/raw.jsx deleted file mode 100644 index 44e3dddc..00000000 --- a/src/components/widgets/widget/raw.jsx +++ /dev/null @@ -1,7 +0,0 @@ -export default function Raw({ children }) { - if (children.type === Raw) { - return [children]; - } - - return children; -} diff --git a/src/components/widgets/widget/resource.jsx b/src/components/widgets/widget/resource.jsx deleted file mode 100644 index e77bcb5a..00000000 --- a/src/components/widgets/widget/resource.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import UsageBar from "../resources/usage-bar"; - -export default function Resource({ children, icon, value, label, expandedValue, expandedLabel, percentage, key, expanded = false }) { - const Icon = icon; - - return
    - -
    -
    -
    {value}
    -
    {label}
    -
    - { expanded &&
    -
    {expandedValue}
    -
    {expandedLabel}
    -
    - } - { percentage && } - { children } -
    -
    ; -} diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx deleted file mode 100644 index 19fb021d..00000000 --- a/src/components/widgets/widget/resources.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import ContainerLink from "./container_link"; -import Resource from "./resource"; -import Raw from "./raw"; -import WidgetLabel from "./widget_label"; - -export default function Resources({ options, children, target }) { - return - -
    - { children.filter(child => child && child.type === Resource) } -
    - { children.filter(child => child && child.type === WidgetLabel) } -
    -
    ; -} diff --git a/src/components/widgets/widget/secondary_text.jsx b/src/components/widgets/widget/secondary_text.jsx deleted file mode 100644 index 363d1bd0..00000000 --- a/src/components/widgets/widget/secondary_text.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function SecondaryText({ children }) { - return ( - {children} - ); -} diff --git a/src/components/widgets/widget/widget_icon.jsx b/src/components/widgets/widget/widget_icon.jsx deleted file mode 100644 index 9766a879..00000000 --- a/src/components/widgets/widget/widget_icon.jsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInfo = {} }) { - const Icon = icon; - const { condition, timeOfDay } = weatherInfo; - let additionalClasses = "text-theme-800 dark:text-theme-200 "; - - switch (size) { - case "m": additionalClasses += "w-6 h-6 "; break; - case "l": additionalClasses += "w-8 h-8 "; break; - case "xl": additionalClasses += "w-10 h-10 "; break; - default: additionalClasses += "w-5 h-5 "; - } - - if (pulse) { - additionalClasses += "animate-pulse "; - } - - return ; -} diff --git a/src/components/widgets/widget/widget_label.jsx b/src/components/widgets/widget/widget_label.jsx deleted file mode 100644 index dcb9b9e9..00000000 --- a/src/components/widgets/widget/widget_label.jsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function WidgetLabel({ label = "" }) { - return
    {label}
    -} diff --git a/src/pages/api/widgets/longhorn.js b/src/pages/api/widgets/longhorn.js index d23a7f61..a6b6781c 100644 --- a/src/pages/api/widgets/longhorn.js +++ b/src/pages/api/widgets/longhorn.js @@ -46,7 +46,7 @@ function parseLonghornData(data) { export default async function handler(req, res) { const settings = getSettings(); - const longhornSettings = settings?.providers?.longhorn || {}; + const longhornSettings = settings?.providers?.longhorn; const {url, username, password} = longhornSettings; if (!url) { diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 006456f9..e170d4e1 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -160,7 +160,6 @@ const headerStyles = { "m-4 mb-0 sm:m-8 sm:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-3", underlined: "m-4 mb-0 sm:m-8 sm:mb-1 border-b-2 pb-4 border-theme-800 dark:border-theme-200/50", clean: "m-4 mb-0 sm:m-8 sm:mb-0", - boxedWidgets: "m-4 mb-0 sm:m-8 sm:mb-0 sm:mt-1", }; function Home({ initialSettings }) { @@ -209,7 +208,6 @@ function Home({ initialSettings }) { searchProvider = searchProviders[searchWidget.options?.provider]; } } - const headerStyle = initialSettings?.headerStyle || "underlined"; useEffect(() => { function handleKeyDown(e) { @@ -258,7 +256,7 @@ function Home({ initialSettings }) {
    !rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))} -
    +
    {widgets .filter((widget) => rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))}
    From 1d809556490d31c753114aae09d2470bb6c20caf Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sat, 10 Jun 2023 11:28:47 +0000 Subject: [PATCH 168/788] Translated using Weblate (Spanish) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 1782bb92..32fa7e6e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -177,7 +177,7 @@ "lidarr": { "queued": "En cola", "wanted": "Buscando", - "artists": "Artists" + "artists": "Artistas" }, "adguard": { "queries": "Consultas", From 7af36eb106e14d32d20cad4616cad638a76109a5 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Fri, 9 Jun 2023 14:10:07 +0000 Subject: [PATCH 169/788] Translated using Weblate (French) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 4cc6dce6..985f3747 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -177,7 +177,7 @@ "lidarr": { "wanted": "Demandé", "queued": "En queue", - "artists": "Artists" + "artists": "Artistes" }, "adguard": { "queries": "Requêtes", @@ -401,7 +401,7 @@ "queue": "À traiter", "processed": "Traité", "errored": "En erreur", - "saved": "Gagné" + "saved": "Libéré" }, "miniflux": { "read": "Lu", From 0d6ccb036ee0241e9027881130a9c16799189322 Mon Sep 17 00:00:00 2001 From: Dan Date: Sat, 10 Jun 2023 14:32:27 +0000 Subject: [PATCH 170/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (465 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 6b112e8f..1e1ac9b4 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -247,7 +247,7 @@ "lidarr": { "wanted": "Розшукується", "queued": "У черзі", - "artists": "Artists" + "artists": "Виконавці" }, "traefik": { "middleware": "Проміжне програмне забезпечення", From 1fb7be7457188013b4afa5150b4ea8591e561c93 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 11 Jun 2023 09:50:41 -0700 Subject: [PATCH 171/788] Retrieve ping url from config rather than as query parameter --- src/components/services/group.jsx | 4 ++-- src/components/services/item.jsx | 4 ++-- src/components/services/list.jsx | 4 ++-- src/components/services/ping.jsx | 6 +++--- src/pages/api/ping.js | 12 +++++++++++- src/pages/index.jsx | 2 +- src/utils/config/service-helpers.js | 27 ++++++++++++++------------- 7 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 5f1c5446..94557064 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -3,7 +3,7 @@ import classNames from "classnames"; import List from "components/services/list"; import ResolvedIcon from "components/resolvedicon"; -export default function ServicesGroup({ services, layout, fiveColumns }) { +export default function ServicesGroup({ group, services, layout, fiveColumns }) { return (
    {services.name}
    - +
    ); } diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 08b8d1f4..36e454ce 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -11,7 +11,7 @@ import Kubernetes from "widgets/kubernetes/component"; import { SettingsContext } from "utils/contexts/settings"; import ResolvedIcon from "components/resolvedicon"; -export default function Item({ service }) { +export default function Item({ service, group }) { const hasLink = service.href && service.href !== "#"; const { settings } = useContext(SettingsContext); const showStats = (service.showStats === false) ? false : settings.showStats; @@ -77,7 +77,7 @@ export default function Item({ service }) {
    {service.ping && (
    - + Ping status
    )} diff --git a/src/components/services/list.jsx b/src/components/services/list.jsx index c8028df5..85083af3 100644 --- a/src/components/services/list.jsx +++ b/src/components/services/list.jsx @@ -14,7 +14,7 @@ const columnMap = [ "grid-cols-1 md:grid-cols-2 lg:grid-cols-8", ]; -export default function List({ services, layout }) { +export default function List({ group, services, layout }) { return (
      {services.map((service) => ( - + ))}
    ); diff --git a/src/components/services/ping.jsx b/src/components/services/ping.jsx index a54b1b55..291bc9e0 100644 --- a/src/components/services/ping.jsx +++ b/src/components/services/ping.jsx @@ -1,9 +1,9 @@ import { useTranslation } from "react-i18next"; import useSWR from "swr"; -export default function Ping({ service }) { +export default function Ping({ group, service }) { const { t } = useTranslation(); - const { data, error } = useSWR(`/api/ping?${new URLSearchParams({ping: service.ping}).toString()}`, { + const { data, error } = useSWR(`/api/ping?${new URLSearchParams({ group, service }).toString()}`, { refreshInterval: 30000 }); @@ -23,7 +23,7 @@ export default function Ping({ service }) { ); } - const statusText = `${service.ping}: HTTP status ${data.status}`; + const statusText = `${service}: HTTP status ${data.status}`; if (data.status > 403) { return ( diff --git a/src/pages/api/ping.js b/src/pages/api/ping.js index 96c1b12c..cfc2aafa 100644 --- a/src/pages/api/ping.js +++ b/src/pages/api/ping.js @@ -1,12 +1,22 @@ import { performance } from "perf_hooks"; +import { getServiceItem } from "utils/config/service-helpers"; import createLogger from "utils/logger"; import { httpProxy } from "utils/proxy/http"; const logger = createLogger("ping"); export default async function handler(req, res) { - const { ping: pingURL } = req.query; + const { group, service } = req.query; + const serviceItem = await getServiceItem(group, service); + if (!serviceItem) { + logger.debug(`No service item found for group ${group} named ${service}`); + return res.status(400).send({ + error: "Unable to find service, see log for details.", + }); + } + + const { ping: pingURL } = serviceItem; if (!pingURL) { logger.debug("No ping URL specified"); diff --git a/src/pages/index.jsx b/src/pages/index.jsx index e170d4e1..6180ff51 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -289,7 +289,7 @@ function Home({ initialSettings }) { {services?.length > 0 && (
    {services.map((group) => ( - + ))}
    )} diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index c63fa8f2..d4f7bc4e 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -328,16 +328,13 @@ export function cleanServiceGroups(groups) { })); } -export default async function getServiceWidget(group, service) { +export async function getServiceItem(group, service) { const configuredServices = await servicesFromConfig(); const serviceGroup = configuredServices.find((g) => g.name === group); if (serviceGroup) { const serviceEntry = serviceGroup.services.find((s) => s.name === service); - if (serviceEntry) { - const { widget } = serviceEntry; - return widget; - } + if (serviceEntry) return serviceEntry; } const discoveredServices = await servicesFromDocker(); @@ -345,20 +342,24 @@ export default async function getServiceWidget(group, service) { const dockerServiceGroup = discoveredServices.find((g) => g.name === group); if (dockerServiceGroup) { const dockerServiceEntry = dockerServiceGroup.services.find((s) => s.name === service); - if (dockerServiceEntry) { - const { widget } = dockerServiceEntry; - return widget; - } + if (dockerServiceEntry) return dockerServiceEntry; } const kubernetesServices = await servicesFromKubernetes(); const kubernetesServiceGroup = kubernetesServices.find((g) => g.name === group); if (kubernetesServiceGroup) { const kubernetesServiceEntry = kubernetesServiceGroup.services.find((s) => s.name === service); - if (kubernetesServiceEntry) { - const { widget } = kubernetesServiceEntry; - return widget; - } + if (kubernetesServiceEntry) return kubernetesServiceEntry; + } + + return false; +} + +export default async function getServiceWidget(group, service) { + const serviceItem = await getServiceItem(group, service); + if (serviceItem) { + const { widget } = serviceItem; + return widget; } return false; From c5b6dcc1e08eb6fd1a8c01c776970a9f873545b5 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Sun, 16 Apr 2023 00:05:50 +0100 Subject: [PATCH 172/788] Add optional boxed styling and error component to information widgets Signed-off-by: Denis Papec --- src/components/widgets/datetime/datetime.jsx | 8 +++-- src/components/widgets/error.jsx | 23 +++++++++++++ src/components/widgets/glances/glances.jsx | 30 +++++++--------- src/components/widgets/greeting/greeting.jsx | 7 +++- .../widgets/kubernetes/kubernetes.jsx | 29 +++++++--------- src/components/widgets/logo/logo.jsx | 7 +++- src/components/widgets/longhorn/longhorn.jsx | 25 +++++++------- .../widgets/openmeteo/openmeteo.jsx | 34 +++++++++---------- .../widgets/openweathermap/weather.jsx | 33 +++++++++--------- .../widgets/resources/resources.jsx | 7 +++- src/components/widgets/search/search.jsx | 11 +++--- .../widgets/unifi_console/unifi_console.jsx | 26 +++++++------- src/components/widgets/weather/weather.jsx | 33 +++++++++--------- src/pages/api/widgets/longhorn.js | 2 +- 14 files changed, 153 insertions(+), 122 deletions(-) create mode 100644 src/components/widgets/error.jsx diff --git a/src/components/widgets/datetime/datetime.jsx b/src/components/widgets/datetime/datetime.jsx index 86983473..fc883ec3 100644 --- a/src/components/widgets/datetime/datetime.jsx +++ b/src/components/widgets/datetime/datetime.jsx @@ -1,5 +1,6 @@ import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; const textSizes = { "4xl": "text-4xl", @@ -17,7 +18,7 @@ export default function DateTime({ options }) { const { i18n } = useTranslation(); const [date, setDate] = useState(""); const dateLocale = locale ?? i18n.language; - + useEffect(() => { const dateFormat = new Intl.DateTimeFormat(dateLocale, { ...format }); const interval = setInterval(() => { @@ -27,7 +28,10 @@ export default function DateTime({ options }) { }, [date, setDate, dateLocale, format]); return ( -
    +
    {date} diff --git a/src/components/widgets/error.jsx b/src/components/widgets/error.jsx new file mode 100644 index 00000000..92e0076a --- /dev/null +++ b/src/components/widgets/error.jsx @@ -0,0 +1,23 @@ +import { useTranslation } from "react-i18next"; +import { BiError } from "react-icons/bi"; +import classNames from "classnames"; + +export default function Error({ options }) { + const { t } = useTranslation(); + + return ( +
    +
    +
    + +
    + {t("widget.api_error")} +
    +
    +
    +
    + ); +} diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index 85dd44c0..b6daba7b 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,11 +1,12 @@ import useSWR from "swr"; import { useContext } from "react"; -import { BiError } from "react-icons/bi"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; import UsageBar from "../resources/usage-bar"; +import Error from "../error"; import { SettingsContext } from "utils/contexts/settings"; @@ -26,23 +27,15 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return ( -
    -
    -
    - -
    - {t("widget.api_error")} -
    -
    -
    -
    - ); + return } if (!data) { return ( -
    +
    @@ -101,7 +94,10 @@ export default function Widget({ options }) { } return ( - +
    @@ -184,7 +180,7 @@ export default function Widget({ options }) {
    - {t("common.number", { + {t("common.number", { value: mainTemp, maximumFractionDigits: 1, style: "unit", @@ -196,7 +192,7 @@ export default function Widget({ options }) { {options.expanded && (
    - {t("common.number", { + {t("common.number", { value: maxTemp, maximumFractionDigits: 1, style: "unit", diff --git a/src/components/widgets/greeting/greeting.jsx b/src/components/widgets/greeting/greeting.jsx index da0f063d..2e129560 100644 --- a/src/components/widgets/greeting/greeting.jsx +++ b/src/components/widgets/greeting/greeting.jsx @@ -1,3 +1,5 @@ +import classNames from "classnames"; + const textSizes = { "4xl": "text-4xl", "3xl": "text-3xl", @@ -12,7 +14,10 @@ const textSizes = { export default function Greeting({ options }) { if (options.text) { return ( -
    +
    {options.text} diff --git a/src/components/widgets/kubernetes/kubernetes.jsx b/src/components/widgets/kubernetes/kubernetes.jsx index 78c4caaf..514993da 100644 --- a/src/components/widgets/kubernetes/kubernetes.jsx +++ b/src/components/widgets/kubernetes/kubernetes.jsx @@ -1,12 +1,14 @@ import useSWR from "swr"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Node from "./node"; export default function Widget({ options }) { const { cluster, nodes } = options; - const { t, i18n } = useTranslation(); + const { i18n } = useTranslation(); const defaultData = { cpu: { @@ -29,23 +31,15 @@ export default function Widget({ options }) { ); if (error || data?.error) { - return ( -
    -
    -
    - -
    - {t("widget.api_error")} -
    -
    -
    -
    - ); + return } if (!data) { return ( -
    +
    {cluster.show && @@ -59,7 +53,10 @@ export default function Widget({ options }) { } return ( -
    +
    {cluster.show && diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx index 96e8569f..6cba17bf 100644 --- a/src/components/widgets/logo/logo.jsx +++ b/src/components/widgets/logo/logo.jsx @@ -1,8 +1,13 @@ +import classNames from "classnames"; + import ResolvedIcon from "components/resolvedicon" export default function Logo({ options }) { return ( -
    +
    {options.icon ? : // fallback to homepage logo diff --git a/src/components/widgets/longhorn/longhorn.jsx b/src/components/widgets/longhorn/longhorn.jsx index 9fcb21b4..5139f00a 100644 --- a/src/components/widgets/longhorn/longhorn.jsx +++ b/src/components/widgets/longhorn/longhorn.jsx @@ -1,37 +1,36 @@ import useSWR from "swr"; -import { BiError } from "react-icons/bi"; -import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Node from "./node"; export default function Longhorn({ options }) { const { expanded, total, labels, include, nodes } = options; - const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/longhorn`, { refreshInterval: 1500 }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data) { return ( -
    +
    ); } return ( -
    +
    {data.nodes .filter((node) => { diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index 0d29aef5..1381cc55 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -1,9 +1,11 @@ import useSWR from "swr"; import { useState } from "react"; -import { BiError } from "react-icons/bi"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; +import classNames from "classnames"; + +import Error from "../error"; import Icon from "./icon"; @@ -15,24 +17,15 @@ function Widget({ options }) { ); if (error || data?.error) { - return ( -
    -
    -
    - -
    - {t("widget.api_error")} - - -
    -
    -
    -
    - ); + return } if (!data) { return ( -
    +
    @@ -50,7 +43,10 @@ function Widget({ options }) { const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"; return ( -
    +
    @@ -107,8 +103,10 @@ export default function OpenMeteo({ options }) { - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index b404039f..30531513 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -3,12 +3,17 @@ import { useState } from "react"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import ContainerButton from "../widget/container_button"; +import PrimaryText from "../widget/primary_text"; +import SecondaryText from "../widget/secondary_text"; +import WidgetIcon from "../widget/widget_icon"; import Icon from "./icon"; + function Widget({ options }) { const { t, i18n } = useTranslation(); @@ -21,48 +26,26 @@ function Widget({ options }) { } if (!data) { - return ( -
    -
    -
    - -
    -
    - {t("weather.updating")} - {t("weather.wait")} -
    -
    -
    - ); + return + {t("weather.updating")} + {t("weather.wait")} + + ; } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - return ( -
    -
    -
    - data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"} - /> -
    -
    - - {options.label && `${options.label}, `} - {t("common.number", { value: data.main.temp, style: "unit", unit })} - - {data.weather[0].description} -
    -
    -
    - ); + const weatherInfo = { + condition: data.weather[0].id, + timeOfDay: data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night" + }; + + return + {options.label && `${options.label}, `} + {t("common.number", { value: data.main.temp, style: "unit", unit })} + {data.weather[0].description} + + ; } export default function OpenWeatherMap({ options }) { @@ -94,33 +77,12 @@ export default function OpenWeatherMap({ options }) { } }; - // if (!requesting && !location) requestLocation(); - if (!location) { - return ( - - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 7069e3c4..242e7a3d 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FiCpu } from "react-icons/fi"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Cpu({ expanded }) { @@ -13,67 +18,38 @@ export default function Cpu({ expanded }) { }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data) { - return ( -
    - -
    -
    -
    -
    -
    {t("resources.cpu")}
    -
    - {expanded && ( -
    -
    -
    -
    {t("resources.load")}
    -
    - )} - -
    -
    - ); + return + + - + {t("resources.cpu")} + - + {t("resources.load")} + + } - const percent = data.cpu.usage; - - return ( -
    - -
    -
    -
    - {t("common.number", { - value: data.cpu.usage, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} -
    -
    {t("resources.cpu")}
    -
    - {expanded && ( -
    -
    - {t("common.number", { - value: data.cpu.load, - maximumFractionDigits: 2, - })} -
    -
    {t("resources.load")}
    -
    - )} - -
    -
    - ); + return + + + {t("common.number", { + value: data.cpu.usage, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} + + {t("resources.cpu")} + + {t("common.number", { + value: data.cpu.load, + maximumFractionDigits: 2, + })} + + {t("resources.load")} + + } diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index 571e6c8a..1a62aa31 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaThermometerHalf } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; function convertToFahrenheit(t) { @@ -17,34 +22,17 @@ export default function CpuTemp({ expanded, units }) { }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data || !data.cputemp) { - return ( -
    - -
    - -
    -
    -
    {t("resources.temp")}
    -
    - {expanded && ( - -
    -
    -
    {t("resources.max")}
    -
    - )} -
    -
    - ); + return + + - + {t("resources.temp")} + - + {t("resources.max")} + } let mainTemp = data.cputemp.main; @@ -54,38 +42,27 @@ export default function CpuTemp({ expanded, units }) { const unit = units === "imperial" ? "fahrenheit" : "celsius"; mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp); const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max); - const percent = Math.round((mainTemp / maxTemp) * 100); - return ( -
    - -
    - -
    - {t("common.number", { - value: mainTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} -
    -
    {t("resources.temp")}
    -
    - {expanded && ( - -
    - {t("common.number", { - value: maxTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} -
    -
    {t("resources.max")}
    -
    - )} - -
    -
    - ); + return + + + {t("common.number", { + value: mainTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} + + {t("resources.temp")} + + {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} + + {t("resources.max")} + + ; } diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index ca09c095..742ff9d7 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FiHardDrive } from "react-icons/fi"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Disk({ options, expanded }) { @@ -13,56 +18,29 @@ export default function Disk({ options, expanded }) { }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data) { - return ( -
    - -
    - -
    -
    -
    {t("resources.free")}
    -
    - {expanded && ( - -
    -
    -
    {t("resources.total")}
    -
    - )} - -
    -
    - ); + return + + - + {t("resources.free")} + - + {t("resources.total")} + + ; } // data.drive.used not accurate? const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100); - return ( -
    - -
    - -
    {t("common.bytes", { value: data.drive.available })}
    -
    {t("resources.free")}
    -
    - {expanded && ( - -
    {t("common.bytes", { value: data.drive.size })}
    -
    {t("resources.total")}
    -
    - )} - -
    -
    - ); + return + + {t("common.bytes", { value: data.drive.available })} + {t("resources.free")} + {t("common.bytes", { value: data.drive.size })} + {t("resources.total")} + + ; } diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 30b7c8eb..97c74acc 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaMemory } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Memory({ expanded }) { @@ -13,63 +18,34 @@ export default function Memory({ expanded }) { }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data) { - return ( -
    - -
    - -
    -
    -
    {t("resources.free")}
    -
    - {expanded && ( - -
    -
    -
    {t("resources.total")}
    -
    - )} - -
    -
    - ); + return + + - + {t("resources.free")} + - + {t("resources.total")} + + ; } const percent = Math.round((data.memory.active / data.memory.total) * 100); - return ( -
    - -
    - -
    - {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} -
    -
    {t("resources.free")}
    -
    - {expanded && ( - -
    - {t("common.bytes", { - value: data.memory.total, - maximumFractionDigits: 1, - binary: true, - })} -
    -
    {t("resources.total")}
    -
    - )} - -
    -
    - ); + return + + {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} + {t("resources.free")} + + {t("common.bytes", { + value: data.memory.total, + maximumFractionDigits: 1, + binary: true, + })} + + {t("resources.total")} + + ; } diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 5727a2a0..0cc2c301 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -1,4 +1,5 @@ -import classNames from "classnames"; +import Container from "../widget/container"; +import Raw from "../widget/raw"; import Disk from "./disk"; import Cpu from "./cpu"; @@ -8,11 +9,8 @@ import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units } = options; - return ( -
    + return +
    {options.cpu && } {options.memory && } @@ -25,6 +23,6 @@ export default function Resources({ options }) { {options.label && (
    {options.label}
    )} -
    - ); +
    +
    ; } diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 3bf785b1..6cc2b8c5 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -1,8 +1,13 @@ import useSWR from "swr"; import { FaRegClock } from "react-icons/fa"; -import { BiError } from "react-icons/bi"; import { useTranslation } from "next-i18next"; +import SingleResource from "../widget/single_resource"; +import WidgetIcon from "../widget/widget_icon"; +import ResourceValue from "../widget/resource_value"; +import ResourceLabel from "../widget/resource_label"; +import Error from "../widget/error"; + import UsageBar from "./usage-bar"; export default function Uptime() { @@ -13,35 +18,22 @@ export default function Uptime() { }); if (error || data?.error) { - return ( -
    - -
    - {t("widget.api_error")} -
    -
    - ); + return } if (!data) { - return ( -
    - -
    - -
    -
    -
    {t("resources.temp")}
    -
    -
    -
    - ); + return + + - + {t("resources.uptime")} + ; } const mo = Math.floor(data.uptime / (3600 * 24 * 31)); const d = Math.floor(data.uptime % (3600 * 24 * 31) / (3600 * 24)); const h = Math.floor(data.uptime % (3600 * 24) / 3600); const m = Math.floor(data.uptime % 3600 / 60); - + let uptime; if (mo > 0) uptime = `${mo}${t("resources.months")} ${d}${t("resources.days")}`; else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`; @@ -49,18 +41,10 @@ export default function Uptime() { const percent = Math.round((new Date().getSeconds() / 60) * 100); - return ( -
    - -
    - -
    - {uptime} -
    -
    {t("resources.uptime")}
    -
    - -
    -
    - ); + return + + {uptime} + {t("resources.uptime")} + + ; } diff --git a/src/components/widgets/search/search.jsx b/src/components/widgets/search/search.jsx index bca3eb58..1bac4a61 100644 --- a/src/components/widgets/search/search.jsx +++ b/src/components/widgets/search/search.jsx @@ -1,10 +1,13 @@ -import { useState, useEffect, Fragment } from "react"; +import { useState, useEffect, useCallback, Fragment } from "react"; import { useTranslation } from "next-i18next"; import { FiSearch } from "react-icons/fi"; import { SiDuckduckgo, SiMicrosoftbing, SiGoogle, SiBaidu, SiBrave } from "react-icons/si"; import { Listbox, Transition } from "@headlessui/react"; import classNames from "classnames"; +import ContainerForm from "../widget/container_form"; +import Raw from "../widget/raw"; + export const searchProviders = { google: { name: "Google", @@ -77,13 +80,8 @@ export default function Search({ options }) { } }, [availableProviderIds]); - if (!availableProviderIds) { - return null; - } - - function handleSubmit(event) { + const submitCallback = useCallback(event => { const q = encodeURIComponent(query); - const { url } = selectedProvider; if (url) { window.open(`${url}${q}`, options.target || "_blank"); @@ -94,6 +92,10 @@ export default function Search({ options }) { event.preventDefault(); event.target.reset(); setQuery(""); + }, [options.target, options.url, query, selectedProvider]); + + if (!availableProviderIds) { + return null; } const onChangeProvider = (provider) => { @@ -101,80 +103,79 @@ export default function Search({ options }) { localStorage.setItem(localStorageKey, provider.name); } - return ( - -
    - setQuery(s.currentTarget.value)} - required - autoCapitalize="off" - autoCorrect="off" - autoComplete="off" - // eslint-disable-next-line jsx-a11y/no-autofocus - autoFocus={options.focus} - /> - -
    - + +
    +
    + setQuery(s.currentTarget.value)} + required + autoCapitalize="off" + autoCorrect="off" + autoComplete="off" + // eslint-disable-next-line jsx-a11y/no-autofocus + autoFocus={options.focus} + /> + +
    + + + {t("search.search")} + +
    + - - {t("search.search")} - -
    - - -
    - {availableProviderIds.map((providerId) => { - const p = searchProviders[providerId]; - return ( - - {({ active }) => ( -
  • - -
  • - )} -
    - ); - })} -
    -
    -
    - - - ); + +
    + {availableProviderIds.map((providerId) => { + const p = searchProviders[providerId]; + return ( + + {({ active }) => ( +
  • + +
  • + )} +
    + ); + })} +
    +
    + + +
    +
    + ; } diff --git a/src/components/widgets/unifi_console/unifi_console.jsx b/src/components/widgets/unifi_console/unifi_console.jsx index 1896771f..dad92cc7 100644 --- a/src/components/widgets/unifi_console/unifi_console.jsx +++ b/src/components/widgets/unifi_console/unifi_console.jsx @@ -2,9 +2,12 @@ import { BiError, BiWifi, BiCheckCircle, BiXCircle, BiNetworkChart } from "react import { MdSettingsEthernet } from "react-icons/md"; import { useTranslation } from "next-i18next"; import { SiUbiquiti } from "react-icons/si"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import Raw from "../widget/raw"; +import WidgetIcon from "../widget/widget_icon"; +import PrimaryText from "../widget/primary_text"; import useWidgetAPI from "utils/proxy/use-widget-api"; @@ -22,21 +25,10 @@ export default function Widget({ options }) { const defaultSite = options.site ? statsData?.data.find(s => s.desc === options.site) : statsData?.data?.find(s => s.name === "default"); if (!defaultSite) { - return ( -
    -
    -
    - -
    -
    - {t("unifi.wait")} -
    -
    -
    - ); + return + {t("unifi.wait")} + + ; } const wan = defaultSite.health.find(h => h.subsystem === "wan"); @@ -51,11 +43,9 @@ export default function Widget({ options }) { const dataEmpty = !(wan.show || lan.show || wlan.show || uptime); - return ( -
    + return + +
    @@ -139,6 +129,7 @@ export default function Widget({ options }) {
    }
    -
    - ); +
    + + } diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 51801455..702ea669 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -3,9 +3,13 @@ import { useState } from "react"; import { WiCloudDown } from "react-icons/wi"; import { MdLocationDisabled, MdLocationSearching } from "react-icons/md"; import { useTranslation } from "next-i18next"; -import classNames from "classnames"; -import Error from "../error"; +import Error from "../widget/error"; +import Container from "../widget/container"; +import PrimaryText from "../widget/primary_text"; +import SecondaryText from "../widget/secondary_text"; +import WidgetIcon from "../widget/widget_icon"; +import ContainerButton from "../widget/container_button"; import Icon from "./icon"; @@ -21,49 +25,31 @@ function Widget({ options }) { } if (!data) { - return ( -
    -
    -
    - -
    -
    - {t("weather.updating")} - {t("weather.wait")} -
    -
    -
    - ); + return + {t("weather.updating")} + {t("weather.wait")} + + ; } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; + const weatherInfo = { + condition: data.current.condition.code, + timeOfDay: data.current.is_day ? "day" : "night", + }; - return ( -
    -
    -
    - -
    -
    - - {options.label && `${options.label}, `} - {t("common.number", { - value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, - style: "unit", - unit, - })} - - {data.current.condition.text} -
    -
    -
    - ); + return + + {options.label && `${options.label}, `} + {t("common.number", { + value: options.units === "metric" ? data.current.temp_c : data.current.temp_f, + style: "unit", + unit, + })} + + {data.current.condition.text} + + ; } export default function WeatherApi({ options }) { @@ -95,33 +81,12 @@ export default function WeatherApi({ options }) { } }; - // if (!requesting && !location) requestLocation(); - if (!location) { - return ( - - ); + return + {t("weather.current")} + {t("weather.allow")} + + ; } return ; diff --git a/src/components/widgets/widget.jsx b/src/components/widgets/widget.jsx index 47141887..b4fdb143 100644 --- a/src/components/widgets/widget.jsx +++ b/src/components/widgets/widget.jsx @@ -17,13 +17,13 @@ const widgetMappings = { kubernetes: dynamic(() => import("components/widgets/kubernetes/kubernetes")), }; -export default function Widget({ widget }) { +export default function Widget({ widget, style }) { const InfoWidget = widgetMappings[widget.type]; if (InfoWidget) { return ( - + ); } diff --git a/src/components/widgets/widget/container.jsx b/src/components/widgets/widget/container.jsx new file mode 100644 index 00000000..3a4a9f57 --- /dev/null +++ b/src/components/widgets/widget/container.jsx @@ -0,0 +1,42 @@ +import classNames from "classnames"; + +import WidgetIcon from "./widget_icon"; +import PrimaryText from "./primary_text"; +import SecondaryText from "./secondary_text"; +import Raw from "./raw"; + +export function getAllClasses(options, additionalClassNames = '') { + return classNames( + "flex flex-col justify-center first:ml-0 ml-4 mr-2", + additionalClassNames, + options?.style === "boxedWidgets" && " ml-4 mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3", + ); +} + +export function getInnerBlock(children) { + // children won't be an array if it's Raw component + return Array.isArray(children) &&
    +
    {children.find(child => child.type === WidgetIcon)}
    +
    + {children.find(child => child.type === PrimaryText)} + {children.find(child => child.type === SecondaryText)} +
    +
    ; +} + +export function getBottomBlock(children) { + if (children.type !== Raw) { + return children.find(child => child.type === Raw) || []; + } + + return [children]; +} + +export default function Container({ children = [], options, additionalClassNames = '' }) { + return ( +
    + {getInnerBlock(children)} + {getBottomBlock(children)} +
    + ); +} diff --git a/src/components/widgets/widget/container_button.jsx b/src/components/widgets/widget/container_button.jsx new file mode 100644 index 00000000..92d8a416 --- /dev/null +++ b/src/components/widgets/widget/container_button.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerButton ({ children = [], options, additionalClassNames = '', callback }) { + return ( + + ); +} diff --git a/src/components/widgets/widget/container_form.jsx b/src/components/widgets/widget/container_form.jsx new file mode 100644 index 00000000..7d28a1bb --- /dev/null +++ b/src/components/widgets/widget/container_form.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerForm ({ children = [], options, additionalClassNames = '', callback }) { + return ( +
    + {getInnerBlock(children)} + {getBottomBlock(children)} +
    + ); +} diff --git a/src/components/widgets/widget/container_link.jsx b/src/components/widgets/widget/container_link.jsx new file mode 100644 index 00000000..8ef0e80a --- /dev/null +++ b/src/components/widgets/widget/container_link.jsx @@ -0,0 +1,10 @@ +import { getAllClasses, getInnerBlock, getBottomBlock } from "./container"; + +export default function ContainerLink ({ children = [], options, additionalClassNames = '', target }) { + return ( + + {getInnerBlock(children)} + {getBottomBlock(children)} + + ); +} diff --git a/src/components/widgets/widget/error.jsx b/src/components/widgets/widget/error.jsx new file mode 100644 index 00000000..a3dbab85 --- /dev/null +++ b/src/components/widgets/widget/error.jsx @@ -0,0 +1,15 @@ +import { useTranslation } from "react-i18next"; +import { BiError } from "react-icons/bi"; + +import Container from "./container"; +import PrimaryText from "./primary_text"; +import WidgetIcon from "./widget_icon"; + +export default function Error({ options }) { + const { t } = useTranslation(); + + return + {t("widget.api_error")} + + ; +} diff --git a/src/components/widgets/widget/primary_text.jsx b/src/components/widgets/widget/primary_text.jsx new file mode 100644 index 00000000..3418b92c --- /dev/null +++ b/src/components/widgets/widget/primary_text.jsx @@ -0,0 +1,5 @@ +export default function PrimaryText({ children }) { + return ( + {children} + ); +} diff --git a/src/components/widgets/widget/raw.jsx b/src/components/widgets/widget/raw.jsx new file mode 100644 index 00000000..44e3dddc --- /dev/null +++ b/src/components/widgets/widget/raw.jsx @@ -0,0 +1,7 @@ +export default function Raw({ children }) { + if (children.type === Raw) { + return [children]; + } + + return children; +} diff --git a/src/components/widgets/widget/resource_label.jsx b/src/components/widgets/widget/resource_label.jsx new file mode 100644 index 00000000..87f2ad22 --- /dev/null +++ b/src/components/widgets/widget/resource_label.jsx @@ -0,0 +1,5 @@ +export default function ResourceLabel({ children }) { + return ( +
    {children}
    + ); +} diff --git a/src/components/widgets/widget/resource_value.jsx b/src/components/widgets/widget/resource_value.jsx new file mode 100644 index 00000000..8971c748 --- /dev/null +++ b/src/components/widgets/widget/resource_value.jsx @@ -0,0 +1,5 @@ +export default function ResourceValue({ children }) { + return ( +
    {children}
    + ); +} diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx new file mode 100644 index 00000000..0771ec5e --- /dev/null +++ b/src/components/widgets/widget/resources.jsx @@ -0,0 +1,15 @@ +import ContainerLink from "./container_link"; +import SingleResource from "./single_resource"; +import Raw from "./raw"; +import WidgetLabel from "./widget_label"; + +export default function Resources({ options, children, target }) { + return + +
    + {children.filter(child => child && child.type === SingleResource)} +
    + {children.filter(child => child && child.type === WidgetLabel)} +
    +
    ; +} diff --git a/src/components/widgets/widget/secondary_text.jsx b/src/components/widgets/widget/secondary_text.jsx new file mode 100644 index 00000000..363d1bd0 --- /dev/null +++ b/src/components/widgets/widget/secondary_text.jsx @@ -0,0 +1,5 @@ +export default function SecondaryText({ children }) { + return ( + {children} + ); +} diff --git a/src/components/widgets/widget/single_resource.jsx b/src/components/widgets/widget/single_resource.jsx new file mode 100644 index 00000000..7a83d8be --- /dev/null +++ b/src/components/widgets/widget/single_resource.jsx @@ -0,0 +1,28 @@ +import UsageBar from "../resources/usage-bar"; + +import WidgetIcon from "./widget_icon"; +import ResourceValue from "./resource_value"; +import ResourceLabel from "./resource_label"; +import Raw from "./raw"; + +export default function SingleResource({ children, key, expanded = false }) { + const values = children.filter(child => child.type === ResourceValue); + const labels = children.filter(child => child.type === ResourceLabel); + + return
    + {children.find(child => child.type === WidgetIcon)} +
    +
    + {values.pop()} + {labels.pop()} +
    + { expanded &&
    + {values.pop()} + {labels.pop()} +
    + } + {children.find(child => child.type === UsageBar)} +
    + {children.find(child => child.type === Raw)} +
    ; +} diff --git a/src/components/widgets/widget/widget_icon.jsx b/src/components/widgets/widget/widget_icon.jsx new file mode 100644 index 00000000..9766a879 --- /dev/null +++ b/src/components/widgets/widget/widget_icon.jsx @@ -0,0 +1,18 @@ +export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInfo = {} }) { + const Icon = icon; + const { condition, timeOfDay } = weatherInfo; + let additionalClasses = "text-theme-800 dark:text-theme-200 "; + + switch (size) { + case "m": additionalClasses += "w-6 h-6 "; break; + case "l": additionalClasses += "w-8 h-8 "; break; + case "xl": additionalClasses += "w-10 h-10 "; break; + default: additionalClasses += "w-5 h-5 "; + } + + if (pulse) { + additionalClasses += "animate-pulse "; + } + + return ; +} diff --git a/src/components/widgets/widget/widget_label.jsx b/src/components/widgets/widget/widget_label.jsx new file mode 100644 index 00000000..dcb9b9e9 --- /dev/null +++ b/src/components/widgets/widget/widget_label.jsx @@ -0,0 +1,3 @@ +export default function WidgetLabel({ label = "" }) { + return
    {label}
    +} diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 6180ff51..7611aed5 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -160,6 +160,7 @@ const headerStyles = { "m-4 mb-0 sm:m-8 sm:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-3", underlined: "m-4 mb-0 sm:m-8 sm:mb-1 border-b-2 pb-4 border-theme-800 dark:border-theme-200/50", clean: "m-4 mb-0 sm:m-8 sm:mb-0", + boxedWidgets: "m-4 mb-0 sm:m-8 sm:mb-0 sm:mt-1", }; function Home({ initialSettings }) { @@ -208,6 +209,7 @@ function Home({ initialSettings }) { searchProvider = searchProviders[searchWidget.options?.provider]; } } + const headerStyle = initialSettings?.headerStyle || "underlined"; useEffect(() => { function handleKeyDown(e) { @@ -256,7 +258,7 @@ function Home({ initialSettings }) {
    !rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))} -
    +
    {widgets .filter((widget) => rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))}
    From 6f750dd83cfdfb2c5784811e1c091fa814b68ff4 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Mon, 5 Jun 2023 23:18:18 +0100 Subject: [PATCH 174/788] Further improvements to simplify information widgets Signed-off-by: Denis Papec --- src/components/widgets/glances/glances.jsx | 130 ++++++++---------- src/components/widgets/longhorn/node.jsx | 25 ++-- src/components/widgets/resources/cpu.jsx | 54 +++----- src/components/widgets/resources/cputemp.jsx | 63 ++++----- src/components/widgets/resources/disk.jsx | 41 +++--- src/components/widgets/resources/memory.jsx | 47 +++---- src/components/widgets/resources/uptime.jsx | 22 +-- src/components/widgets/widget/resource.jsx | 22 +++ .../widgets/widget/resource_label.jsx | 5 - .../widgets/widget/resource_value.jsx | 5 - src/components/widgets/widget/resources.jsx | 6 +- .../widgets/widget/single_resource.jsx | 28 ---- 12 files changed, 181 insertions(+), 267 deletions(-) create mode 100644 src/components/widgets/widget/resource.jsx delete mode 100644 src/components/widgets/widget/resource_label.jsx delete mode 100644 src/components/widgets/widget/resource_value.jsx delete mode 100644 src/components/widgets/widget/single_resource.jsx diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index debb09c7..b45dfefe 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -4,12 +4,8 @@ import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import UsageBar from "../resources/usage-bar"; import Error from "../widget/error"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Resources from "../widget/resources"; import WidgetLabel from "../widget/widget_label"; @@ -37,31 +33,11 @@ export default function Widget({ options }) { if (!data) { return - - - {t("glances.wait")} - - - - - {t("glances.wait")} - - - {options.cputemp && - - - {t("glances.wait")} - - - } - {options.uptime && - - - {t("glances.wait")} - - - } - {options.label && } + + + { options.cputemp && } + { options.uptime && } + { options.label && } ; } @@ -93,77 +69,81 @@ export default function Widget({ options }) { return ( - - - {t("common.number", { + - {t("glances.cpu")} - {t("common.number", { + })} + label={t("glances.cpu")} + expandedValue={t("common.number", { value: data.load.min15, style: "unit", unit: "percent", - maximumFractionDigits: 0, - })} - {t("glances.load")} - - - - - {t("common.bytes", { + maximumFractionDigits: 0 + })} + expandedLabel={t("glances.load")} + percentage={data.cpu.total} + expanded={options.expanded} + /> + - {t("glances.free")} - {t("common.bytes", { + })} + label={t("glances.free")} + expandedValue={t("common.bytes", { value: data.mem.total, maximumFractionDigits: 1, binary: true, - })} - {t("glances.total")} - - + })} + expandedLabel={t("glances.total")} + percentage={data.mem.percent} + expanded={options.expanded} + /> {disks.map((disk) => ( - - - {t("common.bytes", { value: disk.free })} - {t("glances.free")} - {t("common.bytes", { value: disk.size })} - {t("glances.total")} - - + ))} {options.cputemp && mainTemp > 0 && - - - {t("common.number", { + - {t("glances.temp")} - {t("common.number", { + })} + label={t("glances.temp")} + expandedValue={t("common.number", { value: maxTemp, maximumFractionDigits: 1, style: "unit", unit - })} - {t("glances.warn")} - - + })} + expandedLabel={t("glances.warn")} + percentage={tempPercent} + expanded={options.expanded} + /> } {options.uptime && data.uptime && - - - {data.uptime.replace(" days,", t("glances.days")).replace(/:\d\d:\d\d$/g, t("glances.hours"))} - {t("glances.uptime")} - - + } {options.label && } diff --git a/src/components/widgets/longhorn/node.jsx b/src/components/widgets/longhorn/node.jsx index 9983486e..5235698a 100644 --- a/src/components/widgets/longhorn/node.jsx +++ b/src/components/widgets/longhorn/node.jsx @@ -1,23 +1,20 @@ import { useTranslation } from "next-i18next"; import { FaThermometerHalf } from "react-icons/fa"; -import UsageBar from "../resources/usage-bar"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import WidgetLabel from "../widget/widget_label"; export default function Node({ data, expanded, labels }) { const { t } = useTranslation(); - return - - {t("common.bytes", { value: data.node.available })} - {t("resources.free")} - {t("common.bytes", { value: data.node.maximum })} - {t("resources.total")} - - { labels && } - + return { labels && } + } diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 242e7a3d..12972fe8 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FiCpu } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Cpu({ expanded }) { const { t } = useTranslation(); @@ -22,34 +17,25 @@ export default function Cpu({ expanded }) { } if (!data) { - return - - - - {t("resources.cpu")} - - - {t("resources.load")} - - + return } - return - - - {t("common.number", { - value: data.cpu.usage, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} - - {t("resources.cpu")} - - {t("common.number", { - value: data.cpu.load, - maximumFractionDigits: 2, - })} - - {t("resources.load")} - - + return } diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index 1a62aa31..ba6d9b73 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaThermometerHalf } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - function convertToFahrenheit(t) { return t * 9/5 + 32 } @@ -26,13 +21,14 @@ export default function CpuTemp({ expanded, units }) { } if (!data || !data.cputemp) { - return - - - - {t("resources.temp")} - - - {t("resources.max")} - + return ; } let mainTemp = data.cputemp.main; @@ -43,26 +39,23 @@ export default function CpuTemp({ expanded, units }) { mainTemp = (unit === "celsius") ? mainTemp : convertToFahrenheit(mainTemp); const maxTemp = (unit === "celsius") ? data.cputemp.max : convertToFahrenheit(data.cputemp.max); - return - - - {t("common.number", { - value: mainTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} - - {t("resources.temp")} - - {t("common.number", { - value: maxTemp, - maximumFractionDigits: 1, - style: "unit", - unit - })} - - {t("resources.max")} - - ; + return ; } diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index 742ff9d7..ab56624d 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Disk({ options, expanded }) { const { t } = useTranslation(); @@ -22,25 +17,27 @@ export default function Disk({ options, expanded }) { } if (!data) { - return - - - - {t("resources.free")} - - - {t("resources.total")} - - ; + return ; } // data.drive.used not accurate? const percent = Math.round(((data.drive.size - data.drive.available) / data.drive.size) * 100); - return - - {t("common.bytes", { value: data.drive.available })} - {t("resources.free")} - {t("common.bytes", { value: data.drive.size })} - {t("resources.total")} - - ; + return ; } diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 97c74acc..19ae8687 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaMemory } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Memory({ expanded }) { const { t } = useTranslation(); @@ -22,30 +17,26 @@ export default function Memory({ expanded }) { } if (!data) { - return - - - - {t("resources.free")} - - - {t("resources.total")} - - ; + return ; } const percent = Math.round((data.memory.active / data.memory.total) * 100); - return - - {t("common.bytes", { value: data.memory.available, maximumFractionDigits: 1, binary: true })} - {t("resources.free")} - - {t("common.bytes", { - value: data.memory.total, - maximumFractionDigits: 1, - binary: true, - })} - - {t("resources.total")} - - ; + return ; } diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 6cc2b8c5..3984975f 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -2,14 +2,9 @@ import useSWR from "swr"; import { FaRegClock } from "react-icons/fa"; import { useTranslation } from "next-i18next"; -import SingleResource from "../widget/single_resource"; -import WidgetIcon from "../widget/widget_icon"; -import ResourceValue from "../widget/resource_value"; -import ResourceLabel from "../widget/resource_label"; +import Resource from "../widget/resource"; import Error from "../widget/error"; -import UsageBar from "./usage-bar"; - export default function Uptime() { const { t } = useTranslation(); @@ -22,11 +17,7 @@ export default function Uptime() { } if (!data) { - return - - - - {t("resources.uptime")} - ; + return ; } const mo = Math.floor(data.uptime / (3600 * 24 * 31)); @@ -39,12 +30,7 @@ export default function Uptime() { else if (d > 0) uptime = `${d}${t("resources.days")} ${h}${t("resources.hours")}`; else uptime = `${h}${t("resources.hours")} ${m}${t("resources.minutes")}`; - const percent = Math.round((new Date().getSeconds() / 60) * 100); + const percent = Math.round((new Date().getSeconds() / 60) * 100).toString(); - return - - {uptime} - {t("resources.uptime")} - - ; + return ; } diff --git a/src/components/widgets/widget/resource.jsx b/src/components/widgets/widget/resource.jsx new file mode 100644 index 00000000..e77bcb5a --- /dev/null +++ b/src/components/widgets/widget/resource.jsx @@ -0,0 +1,22 @@ +import UsageBar from "../resources/usage-bar"; + +export default function Resource({ children, icon, value, label, expandedValue, expandedLabel, percentage, key, expanded = false }) { + const Icon = icon; + + return
    + +
    +
    +
    {value}
    +
    {label}
    +
    + { expanded &&
    +
    {expandedValue}
    +
    {expandedLabel}
    +
    + } + { percentage && } + { children } +
    +
    ; +} diff --git a/src/components/widgets/widget/resource_label.jsx b/src/components/widgets/widget/resource_label.jsx deleted file mode 100644 index 87f2ad22..00000000 --- a/src/components/widgets/widget/resource_label.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function ResourceLabel({ children }) { - return ( -
    {children}
    - ); -} diff --git a/src/components/widgets/widget/resource_value.jsx b/src/components/widgets/widget/resource_value.jsx deleted file mode 100644 index 8971c748..00000000 --- a/src/components/widgets/widget/resource_value.jsx +++ /dev/null @@ -1,5 +0,0 @@ -export default function ResourceValue({ children }) { - return ( -
    {children}
    - ); -} diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx index 0771ec5e..19fb021d 100644 --- a/src/components/widgets/widget/resources.jsx +++ b/src/components/widgets/widget/resources.jsx @@ -1,5 +1,5 @@ import ContainerLink from "./container_link"; -import SingleResource from "./single_resource"; +import Resource from "./resource"; import Raw from "./raw"; import WidgetLabel from "./widget_label"; @@ -7,9 +7,9 @@ export default function Resources({ options, children, target }) { return
    - {children.filter(child => child && child.type === SingleResource)} + { children.filter(child => child && child.type === Resource) }
    - {children.filter(child => child && child.type === WidgetLabel)} + { children.filter(child => child && child.type === WidgetLabel) }
    ; } diff --git a/src/components/widgets/widget/single_resource.jsx b/src/components/widgets/widget/single_resource.jsx deleted file mode 100644 index 7a83d8be..00000000 --- a/src/components/widgets/widget/single_resource.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import UsageBar from "../resources/usage-bar"; - -import WidgetIcon from "./widget_icon"; -import ResourceValue from "./resource_value"; -import ResourceLabel from "./resource_label"; -import Raw from "./raw"; - -export default function SingleResource({ children, key, expanded = false }) { - const values = children.filter(child => child.type === ResourceValue); - const labels = children.filter(child => child.type === ResourceLabel); - - return
    - {children.find(child => child.type === WidgetIcon)} -
    -
    - {values.pop()} - {labels.pop()} -
    - { expanded &&
    - {values.pop()} - {labels.pop()} -
    - } - {children.find(child => child.type === UsageBar)} -
    - {children.find(child => child.type === Raw)} -
    ; -} From 1622069063691bebefb37202d3383ddfe81b67fb Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Mon, 12 Jun 2023 00:23:01 +0100 Subject: [PATCH 175/788] Fixes for existing header styles, fix for glances Signed-off-by: Denis Papec --- src/components/widgets/glances/glances.jsx | 2 ++ .../widgets/openweathermap/weather.jsx | 3 +-- src/components/widgets/widget/container.jsx | 22 ++++++++++++++----- src/components/widgets/widget/resource.jsx | 4 ++-- src/components/widgets/widget/resources.jsx | 6 +++-- .../widgets/widget/widget_label.jsx | 2 +- src/pages/index.jsx | 11 ++++++---- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index b45dfefe..e5cf3fbd 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -36,6 +36,8 @@ export default function Widget({ options }) { { options.cputemp && } + { options.disk && !Array.isArray(options.disk) && } + { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => )} { options.uptime && } { options.label && } ; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index 30531513..a857f13a 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -41,8 +41,7 @@ function Widget({ options }) { }; return - {options.label && `${options.label}, `} - {t("common.number", { value: data.main.temp, style: "unit", unit })} + {options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })} {data.weather[0].description} ; diff --git a/src/components/widgets/widget/container.jsx b/src/components/widgets/widget/container.jsx index 3a4a9f57..59ea5684 100644 --- a/src/components/widgets/widget/container.jsx +++ b/src/components/widgets/widget/container.jsx @@ -6,10 +6,22 @@ import SecondaryText from "./secondary_text"; import Raw from "./raw"; export function getAllClasses(options, additionalClassNames = '') { + if (options?.style?.header === "boxedWidgets") { + return classNames( + "flex flex-col justify-center first:ml-0 ml-2 mr-2", + "mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3 pr-3", + additionalClassNames + ); + } + + let widgetAlignedClasses = "flex flex-col max-w:full sm:basis-auto self-center grow-0 flex-wrap"; + if (options?.style?.isRightAligned) { + widgetAlignedClasses = "flex flex-col justify-center first:ml-auto ml-2 mr-2 "; + } + return classNames( - "flex flex-col justify-center first:ml-0 ml-4 mr-2", - additionalClassNames, - options?.style === "boxedWidgets" && " ml-4 mt-2 m:mb-0 rounded-md shadow-md shadow-theme-900/10 dark:shadow-theme-900/20 bg-theme-100/20 dark:bg-white/5 p-2 pl-3", + widgetAlignedClasses, + additionalClassNames ); } @@ -18,8 +30,8 @@ export function getInnerBlock(children) { return Array.isArray(children) &&
    {children.find(child => child.type === WidgetIcon)}
    - {children.find(child => child.type === PrimaryText)} - {children.find(child => child.type === SecondaryText)} + {children.find(child => child.type === PrimaryText)} + {children.find(child => child.type === SecondaryText)}
    ; } diff --git a/src/components/widgets/widget/resource.jsx b/src/components/widgets/widget/resource.jsx index e77bcb5a..18e7c800 100644 --- a/src/components/widgets/widget/resource.jsx +++ b/src/components/widgets/widget/resource.jsx @@ -1,9 +1,9 @@ import UsageBar from "../resources/usage-bar"; -export default function Resource({ children, icon, value, label, expandedValue, expandedLabel, percentage, key, expanded = false }) { +export default function Resource({ children, icon, value, label, expandedValue = "", expandedLabel = "", percentage, expanded = false }) { const Icon = icon; - return
    + return
    diff --git a/src/components/widgets/widget/resources.jsx b/src/components/widgets/widget/resources.jsx index 19fb021d..394a3058 100644 --- a/src/components/widgets/widget/resources.jsx +++ b/src/components/widgets/widget/resources.jsx @@ -4,12 +4,14 @@ import Raw from "./raw"; import WidgetLabel from "./widget_label"; export default function Resources({ options, children, target }) { + const widgetParts = [].concat(...children); + return
    - { children.filter(child => child && child.type === Resource) } + { widgetParts.filter(child => child && child.type === Resource) }
    - { children.filter(child => child && child.type === WidgetLabel) } + { widgetParts.filter(child => child && child.type === WidgetLabel) }
    ; } diff --git a/src/components/widgets/widget/widget_label.jsx b/src/components/widgets/widget/widget_label.jsx index dcb9b9e9..5fc6ced0 100644 --- a/src/components/widgets/widget/widget_label.jsx +++ b/src/components/widgets/widget/widget_label.jsx @@ -1,3 +1,3 @@ export default function WidgetLabel({ label = "" }) { - return
    {label}
    + return
    {label}
    } diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 7611aed5..d91a8339 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -274,14 +274,17 @@ function Home({ initialSettings }) { {widgets .filter((widget) => !rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))} -
    +
    {widgets .filter((widget) => rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( - + ))}
    @@ -361,7 +364,7 @@ export default function Wrapper({ initialSettings, fallback }) { style={wrappedStyle} >
    Date: Sun, 11 Jun 2023 20:24:53 +0000 Subject: [PATCH 176/788] Translated using Weblate (Portuguese) Currently translated at 89.2% (415 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index cc6dfe46..ab38ab2f 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -590,12 +590,12 @@ "switches_on": "Interruptores Ligados" }, "freshrss": { - "subscriptions": "Subscriptions", - "unread": "Unread" + "subscriptions": "Assinaturas", + "unread": "Não lida" }, "channelsdvrserver": { "shows": "Shows", - "recordings": "Recordings", + "recordings": "Gravações", "scheduled": "Scheduled", "passes": "Passes" }, @@ -637,16 +637,16 @@ }, "caddy": { "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "requests": "Solicitações atuais", + "requests_failed": "Solicitações com falha" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", - "watt_hour": "Wh" + "pv_power": "Produção", + "battery_soc": "Bateria", + "grid_power": "Grade", + "home_power": "Consumo", + "charge_power": "Carregador", + "watt_hour": "Kw" }, "pialert": { "total": "Total", From dcb3dccdc845b810463e71e72cdb0650c217fda8 Mon Sep 17 00:00:00 2001 From: Ado Nishimura Date: Mon, 12 Jun 2023 11:36:26 +0000 Subject: [PATCH 177/788] Translated using Weblate (Japanese) Currently translated at 82.5% (384 of 465 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index ec9b82a9..72d7d8ae 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -63,7 +63,7 @@ "resources": { "cpu": "CPU", "total": "合計", - "free": "フリー", + "free": "Free", "used": "使用", "load": "ロード", "mem": "MEM", @@ -609,11 +609,11 @@ "ago": "{{value}} 前" }, "qnap": { - "cpuUsage": "CPU Usage", - "memUsage": "MEM Usage", - "systemTempC": "System Temp", - "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", + "cpuUsage": "CPU使用量", + "memUsage": "MEM使用量", + "systemTempC": "システム温度", + "poolUsage": "プール使用量", + "volumeUsage": "ボリューム使用量", "invalid": "Invalid" }, "pfsense": { @@ -633,11 +633,11 @@ }, "evcc": { "watt_hour": "Wh", - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger" + "pv_power": "発電量", + "battery_soc": "バッテリー", + "grid_power": "グリッド", + "home_power": "消費", + "charge_power": "チャージャー" }, "pialert": { "total": "Total", From fce680d981c2dabe48cd4e965bd34f569c2342c9 Mon Sep 17 00:00:00 2001 From: Dan5py Date: Tue, 13 Jun 2023 21:02:06 +0200 Subject: [PATCH 178/788] Fixes #1606 --- src/utils/config/service-helpers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index d4f7bc4e..fb47951a 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -158,7 +158,7 @@ export async function servicesFromKubernetes() { return null; }); - const traefikIngressList = await crd.listClusterCustomObject("traefik.containo.us", "v1alpha1", "ingressroutes") + const traefikIngressList = await crd.listClusterCustomObject("traefik.io", "v1alpha1", "ingressroutes") .then((response) => response.body) .catch((error) => { logger.error("Error getting traefik ingresses: %d %s %s", error.statusCode, error.body, error.response); From f1d6a990ac0eeb538a853e5965e646ce124522b9 Mon Sep 17 00:00:00 2001 From: Karl Hudgell Date: Tue, 13 Jun 2023 20:30:09 +0100 Subject: [PATCH 179/788] Working Jdownloader --- public/locales/en/common.json | 5 + src/widgets/components.js | 3 +- src/widgets/jdownloader/component.jsx | 37 +++++ src/widgets/jdownloader/proxy.js | 191 ++++++++++++++++++++++++++ src/widgets/jdownloader/tools.js | 55 ++++++++ src/widgets/jdownloader/widget.js | 15 ++ src/widgets/widgets.js | 2 + 7 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 src/widgets/jdownloader/component.jsx create mode 100644 src/widgets/jdownloader/proxy.js create mode 100644 src/widgets/jdownloader/tools.js create mode 100644 src/widgets/jdownloader/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index c90287da..437088bd 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -653,5 +653,10 @@ "whatsupdocker": { "monitoring": "Monitoring", "updates": "Updates" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index 589a93ad..97760d36 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -31,6 +31,7 @@ const components = { healthchecks: dynamic(() => import("./healthchecks/component")), immich: dynamic(() => import("./immich/component")), jackett: dynamic(() => import("./jackett/component")), + jdownloader: dynamic(() => import("./jdownloader/component")), jellyfin: dynamic(() => import("./emby/component")), jellyseerr: dynamic(() => import("./jellyseerr/component")), komga: dynamic(() => import("./komga/component")), @@ -91,4 +92,4 @@ const components = { xteve: dynamic(() => import("./xteve/component")), }; -export default components; +export default components; \ No newline at end of file diff --git a/src/widgets/jdownloader/component.jsx b/src/widgets/jdownloader/component.jsx new file mode 100644 index 00000000..d8fea9ca --- /dev/null +++ b/src/widgets/jdownloader/component.jsx @@ -0,0 +1,37 @@ +import { useTranslation } from "next-i18next"; + +import Block from "components/services/widget/block"; +import Container from "components/services/widget/container"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { widget } = service; + + const { data: jdownloaderData, error: jdownloaderAPIError } = useWidgetAPI(widget, "unified", { + refreshInterval: 30000, + }); + + if (jdownloaderAPIError) { + return ; + } + + if (!jdownloaderData) { + return ( + + + + + + ); + } + + return ( + + + + + + ); +} \ No newline at end of file diff --git a/src/widgets/jdownloader/proxy.js b/src/widgets/jdownloader/proxy.js new file mode 100644 index 00000000..353192ac --- /dev/null +++ b/src/widgets/jdownloader/proxy.js @@ -0,0 +1,191 @@ +/* eslint-disable no-underscore-dangle */ +import crypto from 'crypto'; +import querystring from 'querystring'; + +import { sha256, uniqueRid, validateRid, createEncryptionToken, decrypt, encrypt } from "./tools" + +import getServiceWidget from "utils/config/service-helpers"; +import { httpProxy } from "utils/proxy/http"; +import createLogger from "utils/logger"; + +const proxyName = "jdownloaderProxyHandler"; +const logger = createLogger(proxyName); + +async function getWidget(req) { + const { group, service } = req.query; + if (!group || !service) { + logger.debug("Invalid or missing service '%s' or group '%s'", service, group); + return null; + } + const widget = await getServiceWidget(group, service); + if (!widget) { + logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group); + return null; + } + + return widget; +} + +async function login(loginSecret, deviceSecret, params) { + const rid = uniqueRid(); + const path = `/my/connect?${querystring.stringify({...params, rid})}`; + + const signature = crypto + .createHmac('sha256', loginSecret) + .update(path) + .digest('hex'); + const url = `${new URL(`https://api.jdownloader.org${path}&signature=${signature}`)}` + + const [status, contentType, data] = await httpProxy(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (status !== 200) { + logger.error("HTTP %d communicating with jdownloader. Data: %s", status, data.toString()); + return [status, data]; + } + + try { + const decryptedData = JSON.parse(decrypt(data.toString(), loginSecret)) + const sessionToken = decryptedData.sessiontoken; + validateRid(decryptedData, rid); + const serverEncryptionToken = createEncryptionToken(loginSecret, sessionToken); + const deviceEncryptionToken = createEncryptionToken(deviceSecret, sessionToken); + return [status, decryptedData, contentType, serverEncryptionToken, deviceEncryptionToken, sessionToken]; + } catch (e) { + logger.error("Error decoding jdownloader API data. Data: %s", data.toString()); + return [status, null]; + } +} + + +async function getDevice(serverEncryptionToken, deviceName, params) { + const rid = uniqueRid(); + const path = `/my/listdevices?${querystring.stringify({...params, rid})}`; + const signature = crypto + .createHmac('sha256', serverEncryptionToken) + .update(path) + .digest('hex'); + const url = `${new URL(`https://api.jdownloader.org${path}&signature=${signature}`)}` + + const [status, , data] = await httpProxy(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (status !== 200) { + logger.error("HTTP %d communicating with jdownloader. Data: %s", status, data.toString()); + return [status, data]; + } + + try { + const decryptedData = JSON.parse(decrypt(data.toString(), serverEncryptionToken)) + const filteredDevice = decryptedData.list.filter(device => device.name === deviceName); + return [status, filteredDevice[0].id]; + } catch (e) { + logger.error("Error decoding jdownloader API data. Data: %s", data.toString()); + return [status, null]; + } + +} + +function createBody(rid, query, params) { + const baseBody = { + apiVer: 1, + rid, + url: query + }; + return params ? {...baseBody, params: [JSON.stringify(params)] } : baseBody; +} + +async function queryPackages(deviceEncryptionToken, deviceId, sessionToken, params) { + const rid = uniqueRid(); + const body = encrypt(JSON.stringify(createBody(rid, '/downloadsV2/queryPackages', params)), deviceEncryptionToken); + const url = `${new URL(`https://api.jdownloader.org/t_${encodeURI(sessionToken)}_${encodeURI(deviceId)}/downloadsV2/queryPackages`)}` + const [status, , data] = await httpProxy(url, { + method: 'POST', + body, + }); + + if (status !== 200) { + logger.error("HTTP %d communicating with jdownloader. Data: %s", status, data.toString()); + return [status, data]; + } + + try { + const decryptedData = JSON.parse(decrypt(data.toString(), deviceEncryptionToken)) + return decryptedData.data; + } catch (e) { + logger.error("Error decoding JDRss jdownloader data. Data: %s", data.toString()); + return [status, null]; + } + +} + + +export default async function jdownloaderProxyHandler(req, res) { + const widget = await getWidget(req); + + if (!widget) { + return res.status(400).json({ error: "Invalid proxy service type" }); + } + logger.debug("Getting data from JDRss API"); + const {username} = widget + const {password} = widget + + const appKey = "homepage" + const loginSecret = sha256(`${username}${password}server`) + const deviceSecret = sha256(`${username}${password}device`) + const email = username; + + const loginData = await login(loginSecret, deviceSecret, { + appKey, + email + }) + + const deviceData = await getDevice(loginData[3], widget.client, { + sessiontoken: loginData[5] + }) + + const packageStatus = await queryPackages(loginData[4], deviceData[1], loginData[5], { + "bytesLoaded": false, + "bytesTotal": true, + "comment": false, + "enabled": true, + "eta": false, + "priority": false, + "finished": true, + "running": true, + "speed": true, + "status": true, + "childCount": false, + "hosts": false, + "saveTo": false, + "maxResults": -1, + "startAt": 0, + } + ) + + let totalBytes = 0; + let totalSpeed = 0; + packageStatus.forEach(file => { + totalBytes += file.bytesTotal; + if (file.speed) { + totalSpeed += file.speed; + } + }); + + const data = { + downloadCount: packageStatus.length, + totalBytes, + totalSpeed + }; + + return res.send(data); + +} \ No newline at end of file diff --git a/src/widgets/jdownloader/tools.js b/src/widgets/jdownloader/tools.js new file mode 100644 index 00000000..d678b072 --- /dev/null +++ b/src/widgets/jdownloader/tools.js @@ -0,0 +1,55 @@ +import crypto from 'crypto'; + +export function sha256(data) { + return crypto + .createHash('sha256') + .update(data) + .digest(); +} + +export function uniqueRid() { + return Math.floor(Math.random() * 10e12); +} + +export function validateRid(decryptedData, rid) { + if (decryptedData.rid !== rid) { + throw new Error('RequestID mismatch'); + } + return decryptedData; + +} + +export function decrypt(data, ivKey) { + const iv = ivKey.slice(0, ivKey.length / 2); + const key = ivKey.slice(ivKey.length / 2, ivKey.length); + const cipher = crypto.createDecipheriv('aes-128-cbc', key, iv); + return Buffer.concat([ + cipher.update(data, 'base64'), + cipher.final() + ]).toString(); +} + +export function createEncryptionToken(oldTokenBuff, updateToken) { + const updateTokenBuff = Buffer.from(updateToken, 'hex'); + const mergedBuffer = Buffer.concat([oldTokenBuff, updateTokenBuff], oldTokenBuff.length + updateTokenBuff.length); + return sha256(mergedBuffer); +} + +export function encrypt(data, ivKey) { + if (typeof data !== 'string') { + throw new Error('data no es un string'); + } + if (!(ivKey instanceof Buffer)) { + throw new Error('ivKey no es un buffer'); + } + if (ivKey.length !== 32) { + throw new Error('ivKey tiene que tener tamaño 32'); + } + const stringIVKey = ivKey.toString('hex'); + const stringIV = stringIVKey.substring(0, stringIVKey.length / 2); + const stringKey = stringIVKey.substring(stringIVKey.length / 2, stringIVKey.length); + const iv = Buffer.from(stringIV, 'hex'); + const key = Buffer.from(stringKey, 'hex'); + const cipher = crypto.createCipheriv('aes-128-cbc', key, iv); + return cipher.update(data, 'utf8', 'base64') + cipher.final('base64'); +} \ No newline at end of file diff --git a/src/widgets/jdownloader/widget.js b/src/widgets/jdownloader/widget.js new file mode 100644 index 00000000..acd25d74 --- /dev/null +++ b/src/widgets/jdownloader/widget.js @@ -0,0 +1,15 @@ +import jdownloaderProxyHandler from "./proxy"; + +const widget = { + api: "https://api.jdownloader.org/{endpoint}/&signature={signature}", + proxyHandler: jdownloaderProxyHandler, + + mappings: { + unified: { + endpoint: "/", + signature: "", + }, + }, +}; + +export default widget; \ No newline at end of file diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index f843a168..86c4266f 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -27,6 +27,7 @@ import healthchecks from "./healthchecks/widget"; import immich from "./immich/widget"; import jackett from "./jackett/widget"; import jellyseerr from "./jellyseerr/widget"; +import jdownloader from "./jdownloader/widget"; import komga from "./komga/widget"; import kopia from "./kopia/widget"; import lidarr from "./lidarr/widget"; @@ -113,6 +114,7 @@ const widgets = { healthchecks, immich, jackett, + jdownloader, jellyfin: emby, jellyseerr, komga, From 4a97fce841aea990b523f6ebb9abd47940d05026 Mon Sep 17 00:00:00 2001 From: Dan5py Date: Tue, 13 Jun 2023 22:04:56 +0200 Subject: [PATCH 180/788] Support old traefik CRD group --- src/utils/config/service-helpers.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index fb47951a..f73a3f3b 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -160,9 +160,18 @@ export async function servicesFromKubernetes() { const traefikIngressList = await crd.listClusterCustomObject("traefik.io", "v1alpha1", "ingressroutes") .then((response) => response.body) - .catch((error) => { - logger.error("Error getting traefik ingresses: %d %s %s", error.statusCode, error.body, error.response); - return null; + .catch(async (error) => { + logger.error("Error getting traefik ingresses from traefik.io: %d %s %s", error.statusCode, error.body, error.response); + + // Fallback to the old traefik CRD group + const fallbackIngressList = await crd.listClusterCustomObject("traefik.containo.us", "v1alpha1", "ingressroutes") + .then((response) => response.body) + .catch((fallbackError) => { + logger.error("Error getting traefik ingresses from traefik.containo.us: %d %s %s", fallbackError.statusCode, fallbackError.body, fallbackError.response); + return null; + }); + + return fallbackIngressList; }); if (traefikIngressList && traefikIngressList.items.length > 0) { From 3ee6650e6d55d5ff78a1b407c05a6db6ebf4911d Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:16:49 -0700 Subject: [PATCH 181/788] fix homebridge proxy logging --- src/widgets/homebridge/proxy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/homebridge/proxy.js b/src/widgets/homebridge/proxy.js index b0a75a03..a9e1ac97 100644 --- a/src/widgets/homebridge/proxy.js +++ b/src/widgets/homebridge/proxy.js @@ -63,7 +63,7 @@ async function apiCall(widget, endpoint, service) { } if (status !== 200) { - logger.error("Error getting data from Homebridge: %s status %d. Data: %s", url, status, data); + logger.error("Error getting data from Homebridge: %s status %d. Data: %s", url, status, JSON.stringify(data)); return { status, contentType, data: null, responseHeaders }; } From abcea88d0a0381db7aaedcd5aaa2444560967df6 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:23:19 -0700 Subject: [PATCH 182/788] Try to handle zlib errors --- src/utils/proxy/http.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index f869cd0b..3c637427 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -33,6 +33,13 @@ function handleRequest(requestor, url, params) { const contentEncoding = response.headers['content-encoding']?.trim().toLowerCase(); let responseContent = response; + + // zlib errors + responseContent.on("error", (e) => { + logger.error(e); + responseContent = response; // fallback + }); + if (contentEncoding === 'gzip' || contentEncoding === 'deflate') { responseContent = createUnzip(); response.pipe(responseContent); From b437ccde2fee407b8709106f38b28a13ff1da2c7 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 13 Jun 2023 19:21:12 -0700 Subject: [PATCH 183/788] Another attempt to catch zlib decompression errors --- src/utils/proxy/http.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index 3c637427..72f65be3 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -33,15 +33,13 @@ function handleRequest(requestor, url, params) { const contentEncoding = response.headers['content-encoding']?.trim().toLowerCase(); let responseContent = response; - - // zlib errors - responseContent.on("error", (e) => { - logger.error(e); - responseContent = response; // fallback - }); - if (contentEncoding === 'gzip' || contentEncoding === 'deflate') { responseContent = createUnzip(); + // zlib errors + responseContent.on("error", (e) => { + logger.error(e); + responseContent = response; // fallback + }); response.pipe(responseContent); } From 3f25df954fc3dce6b003b9660c1c604931bef991 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:53 +0000 Subject: [PATCH 184/788] Translated using Weblate (German) Currently translated at 97.6% (457 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index dc06f5d3..76ec612f 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -644,5 +644,10 @@ "connected": "Verbunden", "new_devices": "Neue Geräte", "down_alerts": "Down Alarme" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 250b1a3c53d1293e59042c936c0c2f9cc1c1b951 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:54 +0000 Subject: [PATCH 185/788] Translated using Weblate (Spanish) Currently translated at 99.3% (465 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 32fa7e6e..c3e0d857 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -644,5 +644,10 @@ "connected": "Conectado", "new_devices": "Nuevos dispositivos", "down_alerts": "Alertas" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 1e7a2cbbc4afc08bee60af9d3e3c5e775a8b1420 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:54 +0000 Subject: [PATCH 186/788] Translated using Weblate (French) Currently translated at 99.3% (465 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 985f3747..e33601a8 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -644,5 +644,10 @@ "connected": "Connecté", "new_devices": "Nouvel Appareil", "down_alerts": "Alertes" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 28335ca3afcf855adef3e4ab4b538103f23b8a4c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:54 +0000 Subject: [PATCH 187/788] Translated using Weblate (Portuguese) Currently translated at 88.6% (415 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index ab38ab2f..84b2cc7c 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -653,5 +653,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 8d41834c2a124621b31dc9169ac02aeff1c6c88d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:48 +0000 Subject: [PATCH 188/788] Translated using Weblate (Russian) Currently translated at 88.2% (413 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index f89313db..8c1e2853 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From a6a9180aa021ca9512ec02fb1ff33ad90d8ba733 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:48 +0000 Subject: [PATCH 189/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.6% (443 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 50e36395..beac59df 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 1582ba94384323b0aaa27ad6d0ca42bf8697b3f7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:45 +0000 Subject: [PATCH 190/788] Translated using Weblate (Italian) Currently translated at 61.1% (286 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 2e666af4..ed9a140b 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 9a6a580953737d26424037fc042d5aa7d0576bdc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:45 +0000 Subject: [PATCH 191/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.8% (79 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index cdcda4a8..4bf6b86c 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 03ba36c59397f43a4623ce3bad9b6f5934ddc4c2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:46 +0000 Subject: [PATCH 192/788] Translated using Weblate (Vietnamese) Currently translated at 9.4% (44 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index ef39cd2d..71310254 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 368032c931f6a4b2036c5a3114509dfcf9672fc7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:46 +0000 Subject: [PATCH 193/788] Translated using Weblate (Dutch) Currently translated at 51.4% (241 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 2afed425..087ee1c9 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 8cc044544ee2ba3db02f7254773ecb299e5013b9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:50 +0000 Subject: [PATCH 194/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 98.2% (460 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 75aff10e..c208f0bc 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -644,5 +644,10 @@ "connected": "已連線", "new_devices": "新裝置", "down_alerts": "離線警告" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From ae1d7e0866aa01465c790372aaa63bdf3165f4bc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:47 +0000 Subject: [PATCH 195/788] Translated using Weblate (Catalan) Currently translated at 55.5% (260 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 41391cd5..aaa9f4a5 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From e0a6a88ba1a46e1c8a5d6854c8bc9914dc64a3cb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:40 +0000 Subject: [PATCH 196/788] Translated using Weblate (Polish) Currently translated at 79.9% (374 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index d43f9859..b8f8d997 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From f92c5aa1e3978229a8a7d3a7a3b659849c156ef7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:47 +0000 Subject: [PATCH 197/788] Translated using Weblate (Swedish) Currently translated at 27.7% (130 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 962a57be..4a67136b 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From f3176a25ad7b61cab48ed605b39462fbf9d86399 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:49 +0000 Subject: [PATCH 198/788] Translated using Weblate (Croatian) Currently translated at 97.8% (458 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 9a05a55c..e2f2dab6 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -644,5 +644,10 @@ "connected": "Povezano", "new_devices": "Novi uređaji", "down_alerts": "Obavijest o rušenju" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 9d2df383917777262301ca681a58b50de656ccbb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:52 +0000 Subject: [PATCH 199/788] Translated using Weblate (Hungarian) Currently translated at 22.8% (107 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index a8218e73..89d010ba 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadSpeed": "Download Speed", + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size" } } From 1021e562d8af1fd4b41befd314dd273e733b8546 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:51 +0000 Subject: [PATCH 200/788] Translated using Weblate (Hebrew) Currently translated at 21.3% (100 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index dfe2cb84..b8392aed 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 26cff34634c4cd1e34707af26e88e0e94b2ba1bc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:50 +0000 Subject: [PATCH 201/788] Translated using Weblate (Romanian) Currently translated at 32.0% (150 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 3ca5004e..f0529f63 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -644,5 +644,10 @@ "down_alerts": "Down Alerts", "total": "Total", "connected": "Connected" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 452d36c158626c35e2374dbc7fc3030e69bb28ff Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:49 +0000 Subject: [PATCH 202/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 86.3% (404 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index 716ac875..a0955eac 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From fd93df77aa5f37343facc3b052492c6ac5036a8f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:57 +0000 Subject: [PATCH 203/788] Translated using Weblate (Yue (Traditional)) Currently translated at 25.0% (117 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 73e5998b..c3090694 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From f3a7c1164babf2d7ddc555045b76a3b08f71cdb8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:55 +0000 Subject: [PATCH 204/788] Translated using Weblate (Finnish) Currently translated at 37.8% (177 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index f403b6d4..cb727d6f 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From a6320bc794a31bbee40d7a694de48b246fbf748c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:55 +0000 Subject: [PATCH 205/788] Translated using Weblate (Telugu) Currently translated at 45.9% (215 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 3d0deb15..357040b4 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 91b828e97cda33b0dfd0d33577f6cd0dea9660d2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:56 +0000 Subject: [PATCH 206/788] Translated using Weblate (Bulgarian) Currently translated at 9.8% (46 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index bb6bacbb..25757852 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From f3708189ef74bfe717753d2b5331d8a67c26f505 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:56 +0000 Subject: [PATCH 207/788] Translated using Weblate (Turkish) Currently translated at 83.9% (393 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 09639f67..654d1f74 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -644,5 +644,10 @@ "connected": "Bağlandı", "new_devices": "Yeni Cihazlar", "down_alerts": "Düşme Uyarıları" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 211c723f04f042c4b3bed0ca5a1b7d0d5f09ba5f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:51 +0000 Subject: [PATCH 208/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 8ce72d5c..77ee5d8e 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 543573fbdb59d79f7f1a0a83151b95283df755ef Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:51 +0000 Subject: [PATCH 209/788] Translated using Weblate (Arabic) Currently translated at 55.5% (260 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 7f118dc1..c611852a 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 0f6a4c624c90cf67366214cc2501ec482bbe89a5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:43 +0000 Subject: [PATCH 210/788] Translated using Weblate (Czech) Currently translated at 94.8% (444 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 940ec67e..690591fb 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadSpeed": "Download Speed", + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size" } } From 626d636aaecbe5a4ce9e6e689d369f3e554ae512 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:41 +0000 Subject: [PATCH 211/788] Translated using Weblate (Danish) Currently translated at 42.0% (197 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index d1c41aaa..f2fa88e6 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadSpeed": "Download Speed", + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size" } } From a8d130d5cb6f1e42c541495bbe2c3fb6bcafe591 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:41 +0000 Subject: [PATCH 212/788] Translated using Weblate (Malay) Currently translated at 53.6% (251 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index e249cf43..aaf65d0d 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 3d19d65cb62ecf96b31d5d3a545840ebdd87e644 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:42 +0000 Subject: [PATCH 213/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 623775c2..f5bf9e2b 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From d353166b59496f6ed1c74ea03e0f08054eeba06e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:43 +0000 Subject: [PATCH 214/788] Translated using Weblate (Esperanto) Currently translated at 30.9% (145 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 4ed593be..596aefb3 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 3d1b18f66029cb599fdb92eafbcfc37f6c595ae6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:42 +0000 Subject: [PATCH 215/788] Translated using Weblate (Ukrainian) Currently translated at 99.3% (465 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 1e1ac9b4..62db97ec 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -644,5 +644,10 @@ "connected": "Підключено", "new_devices": "Нові пристрої", "down_alerts": "Сповіщення про збій" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 3423bbc0ee4275841d4c0afbf7dfc449d464eacd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:42 +0000 Subject: [PATCH 216/788] Translated using Weblate (Japanese) Currently translated at 82.0% (384 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 72d7d8ae..d10e70e1 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From fb7f32589bb5d3e32634446cb90cc683fac6ff91 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:44 +0000 Subject: [PATCH 217/788] Translated using Weblate (Latvian) Currently translated at 25.2% (118 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index d8d63388..47d619dd 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From f00e26f7ab754cbc6ab4b6b4453414c19ef4e26e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:38 +0000 Subject: [PATCH 218/788] Translated using Weblate (Thai) Currently translated at 10.0% (47 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 3981f0f8..d77b8c32 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 622255d2eca47a88cd401dfc6895db5f960c9726 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:52 +0000 Subject: [PATCH 219/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index ee08f212..5826ee4c 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From dbfa14cb51300713a1ce923c8770faee27950e46 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:53 +0000 Subject: [PATCH 220/788] Translated using Weblate (Korean) Currently translated at 36.9% (173 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 6a58072f..456953a8 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "down_alerts": "Down Alerts", "new_devices": "New Devices" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From c5b044d196bf4606ecb79343d6ec0e717d203979 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:39 +0000 Subject: [PATCH 221/788] Translated using Weblate (Greek) Currently translated at 30.5% (143 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 3492bdd1..ab26247c 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 315bda6ba1cb0c191eeee05c0f7d41a4860df6b4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:44 +0000 Subject: [PATCH 222/788] Translated using Weblate (Slovenian) Currently translated at 95.9% (449 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index fe5fe631..ef4e4109 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -644,5 +644,10 @@ "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 2807575283c6ad8958a48f0629c1ebc5315e4f41 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 14 Jun 2023 03:46:40 +0000 Subject: [PATCH 223/788] Translated using Weblate (Indonesian) Currently translated at 3.2% (15 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index d54218c4..c0bb65d1 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -644,5 +644,10 @@ "transcoding": "Transcoding", "bitrate": "Bitrate", "no_active": "No Active Streams" + }, + "jdownloader": { + "downloadCount": "Queue Count", + "downloadQueueSize": "Queue Size", + "downloadSpeed": "Download Speed" } } From 35499cffbcc256606e6a619d233535935b12613d Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Wed, 14 Jun 2023 08:44:12 +0000 Subject: [PATCH 224/788] Translated using Weblate (Spanish) Currently translated at 100.0% (468 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c3e0d857..63e1c4a9 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -646,8 +646,8 @@ "down_alerts": "Alertas" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", - "downloadSpeed": "Download Speed" + "downloadCount": "Recuento de las colas", + "downloadQueueSize": "Tamaño de la cola", + "downloadSpeed": "Velocidad de Descarga" } } From 211c694e4e57ff066e2d361967b1bfbbf9b68bb1 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Wed, 14 Jun 2023 05:10:59 +0000 Subject: [PATCH 225/788] Translated using Weblate (French) Currently translated at 100.0% (468 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index e33601a8..6d38c3be 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -646,8 +646,8 @@ "down_alerts": "Alertes" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", - "downloadSpeed": "Download Speed" + "downloadCount": "Total en attente", + "downloadQueueSize": "Volume en attente", + "downloadSpeed": "Vitesse de téléchargement" } } From 19918ef68b67f8af18a3dd2c975d4814ada9f346 Mon Sep 17 00:00:00 2001 From: Ali Date: Thu, 15 Jun 2023 04:10:12 +0000 Subject: [PATCH 226/788] Translated using Weblate (Arabic) Currently translated at 55.9% (262 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index c611852a..a4bf37e0 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -23,7 +23,7 @@ "free": "متاح", "used": "مستخدم", "load": "الضغط", - "mem": "MEM", + "mem": "الذاكرة", "temp": "TEMP", "max": "Max", "uptime": "UP", @@ -134,7 +134,7 @@ "episodes": "Episodes" }, "changedetectionio": { - "totalObserved": "Total Observed", + "totalObserved": "مجموع الملاحظات", "diffsDetected": "Diffs Detected" }, "tautulli": { From af00e44550eeaa8d187009c948c301b8e2825822 Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 14 Jun 2023 08:43:36 +0000 Subject: [PATCH 227/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (468 of 468 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 62db97ec..9a204231 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -646,8 +646,8 @@ "down_alerts": "Сповіщення про збій" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", - "downloadSpeed": "Download Speed" + "downloadCount": "Всього в черзі", + "downloadQueueSize": "Розмір черги", + "downloadSpeed": "Швидкість завантаження" } } From 8df11acbe84d7b95ab54c31fcfce5da26355d9bb Mon Sep 17 00:00:00 2001 From: Karl0ss Date: Fri, 16 Jun 2023 07:40:10 +0100 Subject: [PATCH 228/788] JDownloader Widget - Add Total Queue and Remaining In Queue (#1612) undefined --- public/locales/en/common.json | 7 ++++--- src/widgets/jdownloader/component.jsx | 6 ++++-- src/widgets/jdownloader/proxy.js | 23 ++++++++++++++--------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 437088bd..36b5a391 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -655,8 +655,9 @@ "updates": "Updates" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", - "downloadSpeed": "Download Speed" + "downloadCount": "Queue", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size", + "downloadSpeed": "Speed" } } diff --git a/src/widgets/jdownloader/component.jsx b/src/widgets/jdownloader/component.jsx index d8fea9ca..8f271935 100644 --- a/src/widgets/jdownloader/component.jsx +++ b/src/widgets/jdownloader/component.jsx @@ -21,7 +21,8 @@ export default function Component({ service }) { return ( - + + ); @@ -30,7 +31,8 @@ export default function Component({ service }) { return ( - + + ); diff --git a/src/widgets/jdownloader/proxy.js b/src/widgets/jdownloader/proxy.js index 353192ac..be858d51 100644 --- a/src/widgets/jdownloader/proxy.js +++ b/src/widgets/jdownloader/proxy.js @@ -28,8 +28,8 @@ async function getWidget(req) { async function login(loginSecret, deviceSecret, params) { const rid = uniqueRid(); - const path = `/my/connect?${querystring.stringify({...params, rid})}`; - + const path = `/my/connect?${querystring.stringify({ ...params, rid })}`; + const signature = crypto .createHmac('sha256', loginSecret) .update(path) @@ -64,7 +64,7 @@ async function login(loginSecret, deviceSecret, params) { async function getDevice(serverEncryptionToken, deviceName, params) { const rid = uniqueRid(); - const path = `/my/listdevices?${querystring.stringify({...params, rid})}`; + const path = `/my/listdevices?${querystring.stringify({ ...params, rid })}`; const signature = crypto .createHmac('sha256', serverEncryptionToken) .update(path) @@ -100,7 +100,7 @@ function createBody(rid, query, params) { rid, url: query }; - return params ? {...baseBody, params: [JSON.stringify(params)] } : baseBody; + return params ? { ...baseBody, params: [JSON.stringify(params)] } : baseBody; } async function queryPackages(deviceEncryptionToken, deviceId, sessionToken, params) { @@ -135,9 +135,9 @@ export default async function jdownloaderProxyHandler(req, res) { return res.status(400).json({ error: "Invalid proxy service type" }); } logger.debug("Getting data from JDRss API"); - const {username} = widget - const {password} = widget - + const { username } = widget + const { password } = widget + const appKey = "homepage" const loginSecret = sha256(`${username}${password}server`) const deviceSecret = sha256(`${username}${password}device`) @@ -171,17 +171,22 @@ export default async function jdownloaderProxyHandler(req, res) { } ) + let bytesRemaining = 0; let totalBytes = 0; let totalSpeed = 0; packageStatus.forEach(file => { totalBytes += file.bytesTotal; - if (file.speed) { - totalSpeed += file.speed; + if (file.finished !== true) { + bytesRemaining += file.bytesTotal; + if (file.speed) { + totalSpeed += file.speed; + } } }); const data = { downloadCount: packageStatus.length, + bytesRemaining, totalBytes, totalSpeed }; From 079f8d13b548749e988ed1a249dff718d30502ff Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Fri, 16 Jun 2023 08:40:19 +0200 Subject: [PATCH 229/788] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ --- public/locales/ar/common.json | 1 - public/locales/bg/common.json | 1 - public/locales/ca/common.json | 1 - public/locales/cs/common.json | 3 +-- public/locales/da/common.json | 3 +-- public/locales/de/common.json | 1 - public/locales/el/common.json | 1 - public/locales/eo/common.json | 1 - public/locales/es/common.json | 1 - public/locales/fi/common.json | 1 - public/locales/fr/common.json | 1 - public/locales/he/common.json | 1 - public/locales/hi/common.json | 1 - public/locales/hr/common.json | 1 - public/locales/hu/common.json | 3 +-- public/locales/id/common.json | 1 - public/locales/it/common.json | 1 - public/locales/ja/common.json | 1 - public/locales/ko/common.json | 1 - public/locales/lv/common.json | 1 - public/locales/ms/common.json | 1 - public/locales/nb-NO/common.json | 1 - public/locales/nl/common.json | 1 - public/locales/pl/common.json | 1 - public/locales/pt-BR/common.json | 1 - public/locales/pt/common.json | 1 - public/locales/ro/common.json | 1 - public/locales/ru/common.json | 1 - public/locales/sk/common.json | 1 - public/locales/sl/common.json | 1 - public/locales/sr/common.json | 1 - public/locales/sv/common.json | 1 - public/locales/te/common.json | 1 - public/locales/th/common.json | 1 - public/locales/tr/common.json | 1 - public/locales/uk/common.json | 1 - public/locales/vi/common.json | 1 - public/locales/yue/common.json | 1 - public/locales/zh-CN/common.json | 1 - public/locales/zh-Hant/common.json | 1 - 40 files changed, 3 insertions(+), 43 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index a4bf37e0..3aa9e275 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 25757852..2a49284a 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index aaa9f4a5..8af5461a 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 690591fb..0fae3602 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size" + "downloadCount": "Queue Count" } } diff --git a/public/locales/da/common.json b/public/locales/da/common.json index f2fa88e6..b2e581db 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size" + "downloadCount": "Queue Count" } } diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 76ec612f..768d08bb 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/el/common.json b/public/locales/el/common.json index ab26247c..83ec0eee 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 596aefb3..560f357a 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 63e1c4a9..7f791f4d 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Recuento de las colas", - "downloadQueueSize": "Tamaño de la cola", "downloadSpeed": "Velocidad de Descarga" } } diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index cb727d6f..415fe72c 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 6d38c3be..10bbda37 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Total en attente", - "downloadQueueSize": "Volume en attente", "downloadSpeed": "Vitesse de téléchargement" } } diff --git a/public/locales/he/common.json b/public/locales/he/common.json index b8392aed..6aabbeee 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index f5bf9e2b..5f36dac2 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index e2f2dab6..d4eec5f8 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 89d010ba..06f0681c 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size" + "downloadCount": "Queue Count" } } diff --git a/public/locales/id/common.json b/public/locales/id/common.json index c0bb65d1..7f02801e 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/it/common.json b/public/locales/it/common.json index ed9a140b..d6160274 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index d10e70e1..b124a4e9 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 456953a8..02e55749 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 47d619dd..0bae0316 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index aaf65d0d..875fe57e 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 4bf6b86c..12ca26f4 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 087ee1c9..e539de08 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index b8f8d997..d3e427e4 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index a0955eac..ff1dc9da 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 84b2cc7c..5fa15e57 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -656,7 +656,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index f0529f63..80e1f992 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 8c1e2853..de99ecd2 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 5826ee4c..193296ac 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index ef4e4109..174ca1e4 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 77ee5d8e..de1f5dbb 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 4a67136b..b1b79aa6 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 357040b4..894efd45 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/th/common.json b/public/locales/th/common.json index d77b8c32..77677426 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 654d1f74..1a6eb114 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 9a204231..ba896e04 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Всього в черзі", - "downloadQueueSize": "Розмір черги", "downloadSpeed": "Швидкість завантаження" } } diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 71310254..6606a6b1 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index c3090694..9fa0fd68 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index beac59df..490b572f 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index c208f0bc..dfcd4fca 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -647,7 +647,6 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadQueueSize": "Queue Size", "downloadSpeed": "Download Speed" } } From c29c92dafb2cd9bffcb108e289200869e8292026 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:22 +0000 Subject: [PATCH 230/788] Translated using Weblate (German) Currently translated at 97.4% (457 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 768d08bb..521e2cec 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From af2cf436394c0e7425d13fd5470d54cef3953bf0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:23 +0000 Subject: [PATCH 231/788] Translated using Weblate (Spanish) Currently translated at 99.1% (465 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 7f791f4d..91c48ce1 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Recuento de las colas", - "downloadSpeed": "Velocidad de Descarga" + "downloadSpeed": "Velocidad de Descarga", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 98b4682bfe9926f127dec101abf0bf07b46e3b11 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:23 +0000 Subject: [PATCH 232/788] Translated using Weblate (French) Currently translated at 99.1% (465 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 10bbda37..43b44d45 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Total en attente", - "downloadSpeed": "Vitesse de téléchargement" + "downloadSpeed": "Vitesse de téléchargement", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 4abdce068ec046f303dfda2e5075ba8c21f38623 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:23 +0000 Subject: [PATCH 233/788] Translated using Weblate (Portuguese) Currently translated at 88.4% (415 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 5fa15e57..5c84e6c5 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -656,6 +656,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 91d359d5e666b5f2d9d569dd7257e55ec8e60c9e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:18 +0000 Subject: [PATCH 234/788] Translated using Weblate (Russian) Currently translated at 88.0% (413 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index de99ecd2..d3cd6d48 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From d2c123e031751db18584ca782983fcb9137a6663 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:18 +0000 Subject: [PATCH 235/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.4% (443 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 490b572f..a1f0dfda 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 2319a6ffb7a6f330720f99d6e8800332aa5ce59a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:16 +0000 Subject: [PATCH 236/788] Translated using Weblate (Italian) Currently translated at 60.9% (286 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index d6160274..68aaa2f5 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From fe3f7ffdf32b87ab56c090f2a9f620377e1cd9e1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:16 +0000 Subject: [PATCH 237/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.8% (79 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 12ca26f4..79124218 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 3065d95765cb5810460c4e029f56fb9629bf7f0c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:17 +0000 Subject: [PATCH 238/788] Translated using Weblate (Vietnamese) Currently translated at 9.3% (44 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 6606a6b1..069eaff2 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 4b4b871181e584e5f42b4844e8734901bd6501a4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:17 +0000 Subject: [PATCH 239/788] Translated using Weblate (Dutch) Currently translated at 51.3% (241 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index e539de08..139e9051 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From af9bca282d2320f4cea99d9aa7db9eb26b1825c3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:20 +0000 Subject: [PATCH 240/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 98.0% (460 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index dfcd4fca..7c0cb9fe 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From e4212074fefc830cc88534301222234c8413521c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:17 +0000 Subject: [PATCH 241/788] Translated using Weblate (Catalan) Currently translated at 55.4% (260 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 8af5461a..3842feec 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 634077b5b679af0734ecd2c255c3aec9200438dc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:12 +0000 Subject: [PATCH 242/788] Translated using Weblate (Polish) Currently translated at 79.7% (374 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index d3e427e4..6af51828 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 80c93a4e8318e1c4bcfdc31f517ee86095104652 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:18 +0000 Subject: [PATCH 243/788] Translated using Weblate (Swedish) Currently translated at 27.7% (130 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index b1b79aa6..c3325844 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From ce5b8c1c91753a5e7d9e324a765dcc112d393373 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:19 +0000 Subject: [PATCH 244/788] Translated using Weblate (Croatian) Currently translated at 97.6% (458 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index d4eec5f8..94dfae26 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From dcdc93cf06be4d05119b36aa7bc0053375544029 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:21 +0000 Subject: [PATCH 245/788] Translated using Weblate (Hungarian) Currently translated at 22.8% (107 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 06f0681c..016a54d8 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count" + "downloadCount": "Queue Count", + "downloadTotalBytes": "Size", + "downloadBytesRemaining": "Remaining" } } From 2260d250d612a0c9f3952c06fcd5d2a0c19c03a0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:21 +0000 Subject: [PATCH 246/788] Translated using Weblate (Hebrew) Currently translated at 21.3% (100 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 6aabbeee..41e5746b 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 6488e786e1efb66237f45b37fff1c46d0d4277a4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:19 +0000 Subject: [PATCH 247/788] Translated using Weblate (Romanian) Currently translated at 31.9% (150 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 80e1f992..e8bf9ac7 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From cf55092ba6df4ace1e71cb0f378f649ba47c4ae4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:19 +0000 Subject: [PATCH 248/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 86.1% (404 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index ff1dc9da..d2146d2c 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 853e741bfa0ce64d75eefbb438a88470f88acc2b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:25 +0000 Subject: [PATCH 249/788] Translated using Weblate (Yue (Traditional)) Currently translated at 24.9% (117 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 9fa0fd68..4e360b26 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 444ef3f48b704b3c4a1a5237a53cf1ebdcf9a135 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:24 +0000 Subject: [PATCH 250/788] Translated using Weblate (Finnish) Currently translated at 37.7% (177 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 415fe72c..c3875b21 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From bb2083b2ec5a319aecc2be2b97371fa646ed82d4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:24 +0000 Subject: [PATCH 251/788] Translated using Weblate (Telugu) Currently translated at 45.8% (215 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 894efd45..b7d11223 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 283a52f843e4bf5480803b77531573fa64b755cb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:25 +0000 Subject: [PATCH 252/788] Translated using Weblate (Bulgarian) Currently translated at 9.8% (46 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 2a49284a..35dd13f4 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From c4a7ac9dc60582b8b849ac16ecfb16f1e9f5a3d4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:25 +0000 Subject: [PATCH 253/788] Translated using Weblate (Turkish) Currently translated at 83.7% (393 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 1a6eb114..b152e0f7 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 4a08aee090393803aa706c6fcd4c06c98050beba Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:20 +0000 Subject: [PATCH 254/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index de1f5dbb..9ef56193 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From b506558754ac2a86055ee195311181735fad113c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:21 +0000 Subject: [PATCH 255/788] Translated using Weblate (Arabic) Currently translated at 55.8% (262 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 3aa9e275..a1bf5578 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 1184b5a2b9286e6d1a60c337f810f56a714759bd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:14 +0000 Subject: [PATCH 256/788] Translated using Weblate (Czech) Currently translated at 94.6% (444 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 0fae3602..4e16a37a 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count" + "downloadCount": "Queue Count", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From d6c68415d15b2482d6ca1bcf41025cf208fdd3b8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:13 +0000 Subject: [PATCH 257/788] Translated using Weblate (Danish) Currently translated at 42.0% (197 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index b2e581db..76ff86dd 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count" + "downloadCount": "Queue Count", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 384164217829bab5bdb7f8777da567661ca1bf43 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:13 +0000 Subject: [PATCH 258/788] Translated using Weblate (Malay) Currently translated at 53.5% (251 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 875fe57e..70fd66e3 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 904b0d3d6232ebdb9e82f06ab69393f105fa88eb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:13 +0000 Subject: [PATCH 259/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 5f36dac2..155235a9 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 99258653852926a0188fc92b17367c74062ba632 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:14 +0000 Subject: [PATCH 260/788] Translated using Weblate (Esperanto) Currently translated at 30.9% (145 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 560f357a..908169cb 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 39e30e87d7b1d15854129e16b20663601d90f39d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:15 +0000 Subject: [PATCH 261/788] Translated using Weblate (Ukrainian) Currently translated at 99.1% (465 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index ba896e04..1abd398d 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Всього в черзі", - "downloadSpeed": "Швидкість завантаження" + "downloadSpeed": "Швидкість завантаження", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 3f8553ce7fe604456597d8443a96504c0e846e41 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:14 +0000 Subject: [PATCH 262/788] Translated using Weblate (Japanese) Currently translated at 81.8% (384 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index b124a4e9..1bc37e96 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 62026cfe9c596d71a48457602155cdf060b119f0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:15 +0000 Subject: [PATCH 263/788] Translated using Weblate (Latvian) Currently translated at 25.1% (118 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 0bae0316..70361ee2 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From f8e2e4bf796c7cd87fa865673b82cce2ee296440 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:11 +0000 Subject: [PATCH 264/788] Translated using Weblate (Thai) Currently translated at 10.0% (47 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 77677426..2afb51f2 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 3f60fff12d8bbf9fd6f8e2c63917cc771a300472 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:22 +0000 Subject: [PATCH 265/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 193296ac..5f95889c 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 3ecc6fbae91098c5ee9eb1c480716e2dbe056c6a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:22 +0000 Subject: [PATCH 266/788] Translated using Weblate (Korean) Currently translated at 36.8% (173 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 02e55749..f9037f52 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From ec7d2cf309a43568de2a55e8d494e84f82857294 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:12 +0000 Subject: [PATCH 267/788] Translated using Weblate (Greek) Currently translated at 30.4% (143 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 83ec0eee..b36b43f6 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 15c8c5552c8558a1451c62cf4e499584dfeeba91 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:16 +0000 Subject: [PATCH 268/788] Translated using Weblate (Slovenian) Currently translated at 95.7% (449 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 174ca1e4..24d4b8f7 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 009aae7a389f40d6328ec257347c36e3241d9852 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 16 Jun 2023 06:41:12 +0000 Subject: [PATCH 269/788] Translated using Weblate (Indonesian) Currently translated at 3.1% (15 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 7f02801e..0be279a5 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -647,6 +647,8 @@ }, "jdownloader": { "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed" + "downloadSpeed": "Download Speed", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size" } } From 93515578c0f833e3ecad7b87e719cd73ffd71cfd Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 16 Jun 2023 09:10:05 +0000 Subject: [PATCH 270/788] Translated using Weblate (Spanish) Currently translated at 100.0% (469 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 91c48ce1..fcd470cd 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -646,9 +646,9 @@ "down_alerts": "Alertas" }, "jdownloader": { - "downloadCount": "Recuento de las colas", - "downloadSpeed": "Velocidad de Descarga", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Cola", + "downloadSpeed": "Velocidad", + "downloadBytesRemaining": "Restante", + "downloadTotalBytes": "Tamaño" } } From 58b7f8f79afcd0b2abf5cd58a32ce5f038135635 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Fri, 16 Jun 2023 06:56:29 +0000 Subject: [PATCH 271/788] Translated using Weblate (French) Currently translated at 100.0% (469 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 43b44d45..7e268e67 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -648,7 +648,7 @@ "jdownloader": { "downloadCount": "Total en attente", "downloadSpeed": "Vitesse de téléchargement", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadBytesRemaining": "Restant", + "downloadTotalBytes": "Taille" } } From 34b8689da765ab7c834e82452b3c6bff17244016 Mon Sep 17 00:00:00 2001 From: Daniele Luisetto Date: Fri, 16 Jun 2023 14:30:09 +0000 Subject: [PATCH 272/788] Translated using Weblate (Italian) Currently translated at 71.0% (333 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 74 +++++++++++++++++------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 68aaa2f5..677e1b70 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -7,12 +7,12 @@ "rx": "RX", "error": "Errore", "unknown": "Sconosciuto", - "running": "Running", - "starting": "Starting", + "running": "In esecuzione", + "starting": "In avvio", "unhealthy": "Unhealthy", - "not_found": "Not Found", - "exited": "Exited", - "partial": "Partial", + "not_found": "Non trovato", + "exited": "Uscito", + "partial": "Parziale", "healthy": "Healthy" }, "emby": { @@ -20,10 +20,10 @@ "transcoding": "Transcodifica", "bitrate": "Bitrate", "no_active": "Nessuno Stream Attivo", - "movies": "Movies", - "series": "Series", - "episodes": "Episodes", - "songs": "Songs" + "movies": "Film", + "series": "Serie", + "episodes": "Episodi", + "songs": "Canzoni" }, "tautulli": { "playing": "In riproduzione", @@ -82,16 +82,16 @@ "series": "Serie", "wanted": "Richiesti", "queued": "In coda", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Coda", + "unknown": "Sconosciuto" }, "radarr": { "wanted": "Richiesti", "queued": "In coda", "movies": "Film", "missing": "Mancanti", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Coda", + "unknown": "Sconosciuto" }, "readarr": { "wanted": "Richiesti", @@ -177,7 +177,7 @@ "lidarr": { "wanted": "Mancanti", "queued": "In coda", - "artists": "Artists" + "artists": "Artisti" }, "adguard": { "queries": "Interrogazioni", @@ -228,13 +228,13 @@ "devices": "Dispositivi", "lan_devices": "Dispositivi LAN", "wlan_devices": "Dispositivi WLAN", - "empty_data": "Subsystem status unknown" + "empty_data": "Stato del sottosistema sconosciuto" }, "plex": { "streams": "Trasmissioni attive", "movies": "Film", "tv": "Programma televisivo", - "albums": "Albums" + "albums": "Album" }, "glances": { "cpu": "CPU", @@ -581,14 +581,14 @@ "switches_on": "Switches On" }, "freshrss": { - "subscriptions": "Subscriptions", - "unread": "Unread" + "subscriptions": "Iscrizioni", + "unread": "Non letto" }, "channelsdvrserver": { - "shows": "Shows", - "recordings": "Recordings", - "scheduled": "Scheduled", - "passes": "Passes" + "shows": "Spettacoli", + "recordings": "Registrazioni", + "scheduled": "Programmati", + "passes": "Tessere" }, "whatsupdocker": { "monitoring": "Monitoring", @@ -609,12 +609,12 @@ "days": "{{number}}d" }, "qnap": { - "cpuUsage": "CPU Usage", - "memUsage": "MEM Usage", - "systemTempC": "System Temp", - "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "cpuUsage": "Utilizzo CPU", + "memUsage": "Utilizzo MEM", + "systemTempC": "Temp sistema", + "poolUsage": "Utilizzo Pool", + "volumeUsage": "Utilizzo Volume", + "invalid": "Invalido" }, "pfsense": { "load": "Load Avg", @@ -627,20 +627,20 @@ "wanIP": "WAN IP" }, "caddy": { - "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "upstreams": "Upstream", + "requests": "Richieste correnti", + "requests_failed": "Richieste fallite" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", + "pv_power": "Produzione", + "battery_soc": "Batteria", + "grid_power": "Griglia", + "home_power": "Consumo", + "charge_power": "Caricatore", "watt_hour": "Wh" }, "pialert": { - "total": "Total", + "total": "Totali", "connected": "Connected", "new_devices": "New Devices", "down_alerts": "Down Alerts" From 751777a4ad98ee334075146ab942a59348c7beee Mon Sep 17 00:00:00 2001 From: Dan Date: Sat, 17 Jun 2023 07:48:45 +0000 Subject: [PATCH 273/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (469 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 1abd398d..14fc5a04 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -646,9 +646,9 @@ "down_alerts": "Сповіщення про збій" }, "jdownloader": { - "downloadCount": "Всього в черзі", - "downloadSpeed": "Швидкість завантаження", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Черга", + "downloadSpeed": "Швидкість", + "downloadBytesRemaining": "Залишилося", + "downloadTotalBytes": "Розмір" } } From bc2695323c582e9f32671fbe4f6183faf8e17978 Mon Sep 17 00:00:00 2001 From: mikmik Date: Sun, 18 Jun 2023 17:43:15 +0000 Subject: [PATCH 274/788] Translated using Weblate (Hungarian) Currently translated at 25.5% (120 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 016a54d8..108ba54d 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -67,10 +67,10 @@ "transcoding": "Átkódolás", "bitrate": "Bitráta", "no_active": "Nincs aktív lejátszás", - "movies": "Movies", - "series": "Series", - "episodes": "Episodes", - "songs": "Songs" + "movies": "Film", + "series": "Sorozat", + "episodes": "Epizód", + "songs": "Zeneszám" }, "tautulli": { "playing": "Lejátszás folyamatban", @@ -254,16 +254,16 @@ "diffsDetected": "Diffs Detected" }, "wmo": { - "0-day": "Sunny", - "0-night": "Clear", + "0-day": "Napos", + "0-night": "Derült", "3-day": "Cloudy", "3-night": "Cloudy", "45-day": "Foggy", "53-day": "Drizzle", "56-night": "Light Freezing Drizzle", "57-day": "Freezing Drizzle", - "1-day": "Mainly Sunny", - "1-night": "Mainly Clear", + "1-day": "Többnyire napos", + "1-night": "Többnyire derült", "2-day": "Partly Cloudy", "2-night": "Partly Cloudy", "45-night": "Foggy", @@ -373,7 +373,7 @@ "hd": "HD" }, "ping": { - "error": "Error", + "error": "Hiba", "ping": "Ping" }, "scrutiny": { @@ -570,10 +570,10 @@ "gross_percent_max": "All time" }, "audiobookshelf": { - "podcasts": "Podcasts", - "books": "Books", - "podcastsDuration": "Duration", - "booksDuration": "Duration" + "podcasts": "Podcast", + "books": "Könyv", + "podcastsDuration": "Időtartam", + "booksDuration": "Időtartam" }, "homeassistant": { "people_home": "People Home", From 940ce359bf288ecf546aa07b92cb6aac0263ac53 Mon Sep 17 00:00:00 2001 From: dimitricappelle Date: Tue, 20 Jun 2023 17:05:07 +0200 Subject: [PATCH 275/788] Adding Kavita --- public/locales/en/common.json | 4 ++ src/widgets/components.js | 3 +- src/widgets/kavita/component.jsx | 33 +++++++++++ src/widgets/kavita/proxy.js | 96 ++++++++++++++++++++++++++++++++ src/widgets/kavita/widget.js | 13 +++++ src/widgets/widgets.js | 4 +- 6 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 src/widgets/kavita/component.jsx create mode 100644 src/widgets/kavita/proxy.js create mode 100644 src/widgets/kavita/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 36b5a391..718b913f 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -659,5 +659,9 @@ "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size", "downloadSpeed": "Speed" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index 97760d36..3359dd02 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -34,6 +34,7 @@ const components = { jdownloader: dynamic(() => import("./jdownloader/component")), jellyfin: dynamic(() => import("./emby/component")), jellyseerr: dynamic(() => import("./jellyseerr/component")), + kavita: dynamic(() => import("./kavita/component")), komga: dynamic(() => import("./komga/component")), kopia: dynamic(() => import("./kopia/component")), lidarr: dynamic(() => import("./lidarr/component")), @@ -92,4 +93,4 @@ const components = { xteve: dynamic(() => import("./xteve/component")), }; -export default components; \ No newline at end of file +export default components; diff --git a/src/widgets/kavita/component.jsx b/src/widgets/kavita/component.jsx new file mode 100644 index 00000000..f7d91a92 --- /dev/null +++ b/src/widgets/kavita/component.jsx @@ -0,0 +1,33 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { widget } = service; + + const { data: kavitaData, error: kavitaError } = useWidgetAPI(widget, "info"); + + if (kavitaError) { + return ; + } + + if (!kavitaData) { + return ( + + + + + ); + } + + return ( + + + + + ); +} diff --git a/src/widgets/kavita/proxy.js b/src/widgets/kavita/proxy.js new file mode 100644 index 00000000..786bdf1d --- /dev/null +++ b/src/widgets/kavita/proxy.js @@ -0,0 +1,96 @@ +import cache from "memory-cache"; + +import { httpProxy } from "utils/proxy/http"; +import { formatApiCall } from "utils/proxy/api-helpers"; +import getServiceWidget from "utils/config/service-helpers"; +import createLogger from "utils/logger"; +import widgets from "widgets/widgets"; + +const proxyName = "kavitaProxyHandler"; +const sessionTokenCacheKey = `${proxyName}__sessionToken`; +const logger = createLogger(proxyName); + +async function login(widget, service) { + const endpoint = "Account/login"; + const api = widgets?.[widget.type]?.api + const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget })); + const loginBody = { username: widget.username, password: widget.password }; + const headers = { "Content-Type": "application/json", "accept": "text/plain" }; + + const [, , data,] = await httpProxy(loginUrl, { + method: "POST", + body: JSON.stringify(loginBody), + headers, + }); + + try { + const { token: accessToken } = JSON.parse(data.toString()); + cache.put(`${sessionTokenCacheKey}.${service}`, accessToken); + return { accessToken }; + } catch (e) { + logger.error("Unable to login to Kavita API: %s", e); + } + + return { token: false }; +} + +async function apiCall(widget, endpoint, service) { + const key = `${sessionTokenCacheKey}.${service}`; + const headers = { + "content-type": "application/json", + "Authorization": `Bearer ${cache.get(key)}`, + } + + const url = new URL(formatApiCall(widgets[widget.type].api, { endpoint, ...widget })); + const method = "GET"; + + let [status, contentType, data, responseHeaders] = await httpProxy(url, { + method, + headers, + }); + + if (status === 401 || status === 403) { + logger.debug("Kavita API rejected the request, attempting to obtain new session token"); + const { accessToken } = await login(widget, service); + headers.Authorization = `Bearer ${accessToken}`; + + // retry the request, now with the new session token + [status, contentType, data, responseHeaders] = await httpProxy(url, { + method, + headers, + }); + } + + if (status !== 200) { + logger.error("Error getting data from Kavita: %s status %d. Data: %s", url, status, data); + return { status, contentType, data: null, responseHeaders }; + } + + return { status, contentType, data: JSON.parse(data.toString()), responseHeaders }; +} + +export default async function KavitaProxyHandler(req, res) { + const { group, service } = req.query; + + if (!group || !service) { + logger.debug("Invalid or missing service '%s' or group '%s'", service, group); + return res.status(400).json({ error: "Invalid proxy service type" }); + } + + const widget = await getServiceWidget(group, service); + if (!widget) { + logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group); + return res.status(400).json({ error: "Invalid proxy service type" }); + } + + if (!cache.get(`${sessionTokenCacheKey}.${service}`)) { + await login(widget, service); + } + + const { data: statsData } = await apiCall(widget, "Stats/server/stats", service); + + return res.status(200).send({ + seriesCount: statsData?.seriesCount, + totalFiles: statsData?.totalFiles + }); +} diff --git a/src/widgets/kavita/widget.js b/src/widgets/kavita/widget.js new file mode 100644 index 00000000..cb35f03c --- /dev/null +++ b/src/widgets/kavita/widget.js @@ -0,0 +1,13 @@ +import kavitaProxyHandler from "./proxy"; + +const widget = { +api: "{url}/api/{endpoint}", + proxyHandler: kavitaProxyHandler, + mappings: { + info: { + endpoint: "/" + } + } +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 86c4266f..fc209414 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -28,6 +28,7 @@ import immich from "./immich/widget"; import jackett from "./jackett/widget"; import jellyseerr from "./jellyseerr/widget"; import jdownloader from "./jdownloader/widget"; +import kavita from "./kavita/widget"; import komga from "./komga/widget"; import kopia from "./kopia/widget"; import lidarr from "./lidarr/widget"; @@ -100,7 +101,7 @@ const widgets = { diskstation, downloadstation, emby, - evcc, + evcc, fileflows, flood, freshrss, @@ -117,6 +118,7 @@ const widgets = { jdownloader, jellyfin: emby, jellyseerr, + kavita, komga, kopia, lidarr, From 3161c459b819cafe137aea8c0dbb12461cda6907 Mon Sep 17 00:00:00 2001 From: Quan Dong <604925267@qq.com> Date: Mon, 19 Jun 2023 15:29:26 +0000 Subject: [PATCH 276/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.6% (444 of 469 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index a1f0dfda..ca2774f9 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -632,7 +632,7 @@ "requests_failed": "失败请求" }, "evcc": { - "pv_power": "Production", + "pv_power": "正式环境", "battery_soc": "Battery", "grid_power": "Grid", "home_power": "Consumption", From 3e691ab446e1f4f6210b062cb51b814dda2f7618 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:08 +0000 Subject: [PATCH 277/788] Translated using Weblate (German) Currently translated at 97.0% (457 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 521e2cec..8b5dca93 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From edcd7508c9a0f40bec6a395e252a0f2ed8dc91cd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:08 +0000 Subject: [PATCH 278/788] Translated using Weblate (Spanish) Currently translated at 99.5% (469 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index fcd470cd..eb42b75e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Velocidad", "downloadBytesRemaining": "Restante", "downloadTotalBytes": "Tamaño" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 2a7ca6590788e9cd40a0b8a61ab6d6fc2f5257b5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:08 +0000 Subject: [PATCH 279/788] Translated using Weblate (French) Currently translated at 99.5% (469 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 7e268e67..b513e6b9 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Vitesse de téléchargement", "downloadBytesRemaining": "Restant", "downloadTotalBytes": "Taille" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 8678c67d97b3148b972a5fa66295cdca1e20fc3b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:08 +0000 Subject: [PATCH 280/788] Translated using Weblate (Portuguese) Currently translated at 88.1% (415 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 5c84e6c5..3bfb6df8 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -659,5 +659,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 3a8e9ece9b6b259e27c00e7c3ab64b1efa79eff1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:04 +0000 Subject: [PATCH 281/788] Translated using Weblate (Russian) Currently translated at 87.6% (413 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index d3cd6d48..ded1be07 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 3021190959f893b9c3c7f2a9ad01b81864c4b941 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:04 +0000 Subject: [PATCH 282/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.2% (444 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index ca2774f9..2506671c 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 297c253c335600d80a15d6fc41640be414ffdd46 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:03 +0000 Subject: [PATCH 283/788] Translated using Weblate (Italian) Currently translated at 70.7% (333 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 677e1b70..a066c531 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 958428db299cd18c9bd81cd7cc7104b273df6a85 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:03 +0000 Subject: [PATCH 284/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.7% (79 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 79124218..a633028c 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From a25f13662800f8d0fe9ddc92776487adeba4aa2e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:03 +0000 Subject: [PATCH 285/788] Translated using Weblate (Vietnamese) Currently translated at 9.3% (44 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 069eaff2..1fe186c9 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From f83dd716822ba8a1b967ef2af779367353829122 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:03 +0000 Subject: [PATCH 286/788] Translated using Weblate (Dutch) Currently translated at 51.1% (241 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 139e9051..88c809a9 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 0d8f6545dd51942be73b7350edd684e0c47f3fdb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:06 +0000 Subject: [PATCH 287/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 97.6% (460 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 7c0cb9fe..e4f96dd3 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 197d8acbe8596ef9e2537d866fc236c3ebf4ed2a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:04 +0000 Subject: [PATCH 288/788] Translated using Weblate (Catalan) Currently translated at 55.2% (260 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 3842feec..5d4082da 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 4fd107ab45bcae71a86473f840404b44906410f9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:46:59 +0000 Subject: [PATCH 289/788] Translated using Weblate (Polish) Currently translated at 79.4% (374 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 6af51828..5df12a52 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 112f376aa8d48aff29239966bdd78389fe5f0991 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:04 +0000 Subject: [PATCH 290/788] Translated using Weblate (Swedish) Currently translated at 27.6% (130 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index c3325844..0d61d400 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "totalFiles": "Files", + "seriesCount": "Series" } } From 25f706428626ff3d911902a996fcd413c3204a9d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:05 +0000 Subject: [PATCH 291/788] Translated using Weblate (Croatian) Currently translated at 97.2% (458 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 94dfae26..6fb77826 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 514d827ff48216d571bacb1d0452c3489c7ffb7e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:07 +0000 Subject: [PATCH 292/788] Translated using Weblate (Hungarian) Currently translated at 25.4% (120 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 108ba54d..f4b1509c 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -650,5 +650,9 @@ "downloadCount": "Queue Count", "downloadTotalBytes": "Size", "downloadBytesRemaining": "Remaining" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 58695dbe75f2e133b2add1db7efd1714331ba2f2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:06 +0000 Subject: [PATCH 293/788] Translated using Weblate (Hebrew) Currently translated at 21.2% (100 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 41e5746b..6fa54751 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 794902cbd5aa8d121474313017f18f99d6c90cff Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:05 +0000 Subject: [PATCH 294/788] Translated using Weblate (Romanian) Currently translated at 31.8% (150 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index e8bf9ac7..3fc07bff 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From e552524d997a26240c366bfcab7acdf1da9f605c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:05 +0000 Subject: [PATCH 295/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 85.7% (404 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index d2146d2c..57e524fe 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 5f21c20a59582a350f3cd740877b8a73d87b8a78 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:10 +0000 Subject: [PATCH 296/788] Translated using Weblate (Yue (Traditional)) Currently translated at 24.8% (117 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 4e360b26..48accfc0 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 7e01545e143a6a8852dc2dac5898a02ee52eb6b4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:09 +0000 Subject: [PATCH 297/788] Translated using Weblate (Finnish) Currently translated at 37.5% (177 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index c3875b21..306c5b2b 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From d9aa1dfdbfdd5a2274938cc7547d1319b4bd7310 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:09 +0000 Subject: [PATCH 298/788] Translated using Weblate (Telugu) Currently translated at 45.6% (215 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index b7d11223..9957fc7d 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "totalFiles": "Files", + "seriesCount": "Series" } } From 81cf03fa8715dd8cbb861f7090e21539e959a477 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:09 +0000 Subject: [PATCH 299/788] Translated using Weblate (Bulgarian) Currently translated at 9.7% (46 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 35dd13f4..594d2870 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From ae060903a01d201fa5c724b9e4b0fb5a54f32f81 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:09 +0000 Subject: [PATCH 300/788] Translated using Weblate (Turkish) Currently translated at 83.4% (393 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index b152e0f7..bb98d412 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 8f4d64913c533a3bde27a5ad48a8c6d0f61ab580 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:06 +0000 Subject: [PATCH 301/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 9ef56193..f60d3e22 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 5dde0ae1faea1c500d829ac240b7c3952a61e7fc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:06 +0000 Subject: [PATCH 302/788] Translated using Weblate (Arabic) Currently translated at 55.6% (262 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index a1bf5578..2f80f21a 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 4ba88229aec8add97a3abe411d01eb88bacc550c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:01 +0000 Subject: [PATCH 303/788] Translated using Weblate (Czech) Currently translated at 94.2% (444 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 4e16a37a..164cc194 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -650,5 +650,9 @@ "downloadCount": "Queue Count", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 92f5bdf6596ca2ab989f679bc4c86ade77d59531 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:00 +0000 Subject: [PATCH 304/788] Translated using Weblate (Danish) Currently translated at 41.8% (197 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 76ff86dd..3ff03563 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -650,5 +650,9 @@ "downloadCount": "Queue Count", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From ef1be0bb3f896c8ea3a0c89416362d06b9382c0a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:00 +0000 Subject: [PATCH 305/788] Translated using Weblate (Malay) Currently translated at 53.2% (251 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 70fd66e3..77b3a759 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From c997b2c87c37f34b549d40016f458c8c8acd3623 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:01 +0000 Subject: [PATCH 306/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 155235a9..88a100c3 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 2e34ab9f1e21b2fec5d944973606083f64737374 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:01 +0000 Subject: [PATCH 307/788] Translated using Weblate (Esperanto) Currently translated at 30.7% (145 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 908169cb..c3c1c87d 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 03276eced47f3f85f2cb2ee7fe0c7ded4a070fec Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:02 +0000 Subject: [PATCH 308/788] Translated using Weblate (Ukrainian) Currently translated at 99.5% (469 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 14fc5a04..8f4b180c 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Швидкість", "downloadBytesRemaining": "Залишилося", "downloadTotalBytes": "Розмір" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 768db388cb034c57a21aeb0d0499844ca86366ea Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:01 +0000 Subject: [PATCH 309/788] Translated using Weblate (Japanese) Currently translated at 81.5% (384 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 1bc37e96..84f56b12 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From cc92890dcac2a0ab065b605ac39ca07798ae9d0f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:02 +0000 Subject: [PATCH 310/788] Translated using Weblate (Latvian) Currently translated at 25.0% (118 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 70361ee2..8022ec13 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From ebca1050c4f1aa635f36dd2cddb9cd4f46ec371a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:46:59 +0000 Subject: [PATCH 311/788] Translated using Weblate (Thai) Currently translated at 9.9% (47 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 2afb51f2..6122992f 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 0598b8bcf5ca18fdca78431e4ac6d33ec929f2b0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:07 +0000 Subject: [PATCH 312/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 5f95889c..8d3a80ec 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 84d12b0b218031fd1d6024c319b78a3a8b6b5713 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:07 +0000 Subject: [PATCH 313/788] Translated using Weblate (Korean) Currently translated at 36.7% (173 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index f9037f52..a3a1d9e6 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 68f755710e8c315baaed2bd689804daf04f57c05 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:46:59 +0000 Subject: [PATCH 314/788] Translated using Weblate (Greek) Currently translated at 30.3% (143 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index b36b43f6..a3be18f2 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 60463721b88450dc9ad1add6e2d134044288cd0d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:47:02 +0000 Subject: [PATCH 315/788] Translated using Weblate (Slovenian) Currently translated at 95.3% (449 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 24d4b8f7..c4a9e317 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 1d78881a5f1526ccc4846344627ffd1d4af2ab82 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Tue, 20 Jun 2023 17:46:59 +0000 Subject: [PATCH 316/788] Translated using Weblate (Indonesian) Currently translated at 3.1% (15 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 0be279a5..51daa4f1 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -650,5 +650,9 @@ "downloadSpeed": "Download Speed", "downloadBytesRemaining": "Remaining", "downloadTotalBytes": "Size" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" } } From 0936ba2b6befae45a562b6477131252dbdcf22aa Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 22 Jun 2023 09:57:21 -0700 Subject: [PATCH 317/788] Update package-lock.json --- package-lock.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 0691562c..2e2a3e13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "minecraft-ping-js": "^1.0.2", "next": "^12.3.1", "next-i18next": "^12.0.1", - "osx-temperature-sensor": "*", "pretty-bytes": "^6.0.0", "raw-body": "^2.5.1", "react": "^18.2.0", From 041fae1fb30a0262ce54d1c5d05dbd6734bc2c32 Mon Sep 17 00:00:00 2001 From: Alex Higgins Date: Wed, 21 Jun 2023 16:46:14 -0400 Subject: [PATCH 318/788] Adds ability to collapse layout sections Reverts pnpm lock file changes Make entire section above list clickable. Implement in headlessui instead of pulling in new library. Remove unecessary packages and clean up ESLint errors --- src/components/services/group.jsx | 26 +++++++++++++++++--------- src/pages/index.jsx | 8 +++++++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 94557064..49a44de4 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -1,9 +1,14 @@ import classNames from "classnames"; +import { Transition } from '@headlessui/react' +import { useState } from 'react' import List from "components/services/list"; import ResolvedIcon from "components/resolvedicon"; -export default function ServicesGroup({ group, services, layout, fiveColumns }) { +export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse}) { + + const [isShowing, setIsShowing] = useState(true) + return (
    -
    - {layout?.icon && -
    - -
    - } -

    {services.name}

    +
    + {/* eslint-disable-next-line no-shadow */} +
    - +
    ); } diff --git a/src/pages/index.jsx b/src/pages/index.jsx index d91a8339..5106e07c 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -294,7 +294,13 @@ function Home({ initialSettings }) { {services?.length > 0 && (
    {services.map((group) => ( - + ))}
    )} From 714e0a4517685dd84c32dfb419e8c208c4e95c8f Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 22 Jun 2023 10:04:12 -0700 Subject: [PATCH 319/788] Use Disclosure component for collapsible service groups, add transition hide collapse arrow if disabled dont break layout for icons in group title no-shadow --- src/components/services/group.jsx | 37 ++++++++++++++++++++++--------- tailwind.config.js | 5 +++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 49a44de4..2f94fc77 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -1,14 +1,12 @@ import classNames from "classnames"; -import { Transition } from '@headlessui/react' -import { useState } from 'react' +import { Disclosure, Transition } from '@headlessui/react'; +import { MdKeyboardArrowDown } from "react-icons/md"; import List from "components/services/list"; import ResolvedIcon from "components/resolvedicon"; export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse}) { - const [isShowing, setIsShowing] = useState(true) - return (
    -
    - {/* eslint-disable-next-line no-shadow */} - -
    - + + + + + + + + + )} +
    ); } diff --git a/tailwind.config.js b/tailwind.config.js index b981051b..a075f6e9 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -9,6 +9,11 @@ module.exports = { "./src/components/**/*.{js,ts,jsx,tsx}", "./src/widgets/**/*.{js,ts,jsx,tsx}", ], + variants: { + extend: { + display: ["group-hover"], + }, + }, theme: { extend: { colors: { From 1b6e5c4a8d55086820402daef64697d77d8a6373 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 22 Jun 2023 11:51:12 -0700 Subject: [PATCH 320/788] Update group.jsx --- src/components/services/group.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 2f94fc77..eb64cc3d 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -5,7 +5,7 @@ import { MdKeyboardArrowDown } from "react-icons/md"; import List from "components/services/list"; import ResolvedIcon from "components/resolvedicon"; -export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse}) { +export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) { return (
    Date: Thu, 22 Jun 2023 11:51:38 -0700 Subject: [PATCH 321/788] Adds collapsible feature to bookmarks --- src/components/bookmarks/group.jsx | 38 ++++++++++++++++++++++++++---- src/pages/index.jsx | 5 +++- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index 2910245c..ef0a5ab8 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -1,13 +1,41 @@ +import classNames from "classnames"; +import { Disclosure, Transition } from '@headlessui/react'; +import { MdKeyboardArrowDown } from "react-icons/md"; + import ErrorBoundary from "components/errorboundry"; import List from "components/bookmarks/list"; -export default function BookmarksGroup({ group }) { +export default function BookmarksGroup({ group, disableCollapse }) { return (
    -

    {group.name}

    - - - + + {({ open }) => ( + <> + +

    {group.name}

    + +
    + + + + + + + + + )} +
    ); } diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 5106e07c..a2993b1a 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -308,7 +308,10 @@ function Home({ initialSettings }) { {bookmarks?.length > 0 && (
    {bookmarks.map((group) => ( - + ))}
    )} From 2a4c449b77f099b2659c3c683b45c06daf856fee Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Wed, 21 Jun 2023 20:05:23 +0000 Subject: [PATCH 322/788] Translated using Weblate (Spanish) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index eb42b75e..498cb8b8 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -652,7 +652,7 @@ "downloadTotalBytes": "Tamaño" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Serie", + "totalFiles": "Archivos" } } From 27baf17e089593f5b9b3e6fb13c3efc6fef96e43 Mon Sep 17 00:00:00 2001 From: Y0plait Date: Thu, 22 Jun 2023 09:15:24 +0000 Subject: [PATCH 323/788] Translated using Weblate (French) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index b513e6b9..b1fa1772 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -5,8 +5,8 @@ "status": "Statut", "information": "Information", "url": "URL", - "raw_error": "Raw Error", - "response_data": "Response Data" + "raw_error": "Erreur brute", + "response_data": "Données de réponse" }, "search": { "placeholder": "Recherche…" From b9edea52863ca3980172fc76e5bde9cc38595f2d Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Tue, 20 Jun 2023 20:48:03 +0000 Subject: [PATCH 324/788] Translated using Weblate (French) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index b1fa1772..6902cf59 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -652,7 +652,7 @@ "downloadTotalBytes": "Taille" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Séries", + "totalFiles": "Fichiers" } } From 8ad0c9c171be2fd69cfe7fa70e85a3fea774baf9 Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 20 Jun 2023 20:47:45 +0000 Subject: [PATCH 325/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 8f4b180c..f2b5e629 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -652,7 +652,7 @@ "downloadTotalBytes": "Розмір" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Серій", + "totalFiles": "Файлів" } } From d734343b3125d72e283c1874ec29ca24f5ef75ba Mon Sep 17 00:00:00 2001 From: Ado Nishimura Date: Thu, 22 Jun 2023 15:25:30 +0000 Subject: [PATCH 326/788] Translated using Weblate (Japanese) Currently translated at 81.7% (385 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 84f56b12..61cd0983 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -239,7 +239,7 @@ "queries": "クエリ", "blocked": "ブロック中", "gravity": "グラビティ", - "blocked_percent": "Blocked %" + "blocked_percent": "ブロック %" }, "adguard": { "queries": "クエリ", From b04ed36adb0cac7456a99e182fbed1daae62d639 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 25 Jun 2023 19:24:51 +0000 Subject: [PATCH 327/788] Translated using Weblate (Croatian) Currently translated at 99.5% (469 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 6fb77826..a5390eb1 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -126,21 +126,21 @@ "wanted": "Zatraženo", "queued": "U redu čekanja", "series": "Serije", - "unknown": "Unknown", - "queue": "Queue" + "unknown": "Nepoznato", + "queue": "Red čekanja" }, "radarr": { "wanted": "Zatraženo", "queued": "U redu čekanja", "movies": "Filmovi", "missing": "Nedostaje", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Red čekanja", + "unknown": "Nepoznato" }, "lidarr": { "wanted": "Zatraženo", "queued": "U redu čekanja", - "artists": "Artists" + "artists": "Umjetnici" }, "readarr": { "wanted": "Zatraženo", @@ -646,13 +646,13 @@ "down_alerts": "Obavijest o rušenju" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Red čekanja", + "downloadSpeed": "Brzina", + "downloadBytesRemaining": "Preostalo", + "downloadTotalBytes": "Veličina" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Serije", + "totalFiles": "Datoteke" } } From a2fe1eef7acf7b415b18e2307f168c4a39e7b433 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 28 Jun 2023 08:47:55 -0700 Subject: [PATCH 328/788] Handle invalid fields syntax in service labels --- src/utils/config/service-helpers.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index f73a3f3b..a016a00d 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -291,8 +291,15 @@ export function cleanServiceGroups(groups) { enableQueue, // sonarr/radarr } = cleanedService.widget; - const fieldsList = typeof fields === 'string' ? JSON.parse(fields) : fields; - + let fieldsList = fields; + if (typeof fields === 'string') { + try { JSON.parse(fields) } + catch (e) { + logger.error("Invalid fields list detected in config for service '%s'", service.name); + fieldsList = null; + } + } + cleanedService.widget = { type, fields: fieldsList || null, From 1439b6cc9cfb92e992bd2e707c0f706b4edb4623 Mon Sep 17 00:00:00 2001 From: My Random Thoughts Date: Fri, 30 Jun 2023 19:02:00 +0000 Subject: [PATCH 329/788] Translated using Weblate (English) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/en/ --- public/locales/en/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100755 => 100644 public/locales/en/common.json diff --git a/public/locales/en/common.json b/public/locales/en/common.json old mode 100755 new mode 100644 index 718b913f..671b8b00 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -92,7 +92,7 @@ "episodes": "Episodes", "songs": "Songs" }, - "evcc": { + "evcc": { "pv_power": "Production", "battery_soc": "Battery", "grid_power": "Grid", @@ -648,7 +648,7 @@ "homeassistant": { "people_home": "People Home", "lights_on": "Lights On", - "switches_on": "Switches On" + "switches_on": "fdasfSwitches On" }, "whatsupdocker": { "monitoring": "Monitoring", From 5640798fe4c189fa6aa7ba0d44ef77d2b1ef47a5 Mon Sep 17 00:00:00 2001 From: nsankbeil Date: Mon, 3 Jul 2023 11:49:16 -0400 Subject: [PATCH 330/788] fix: handle missing EOF when decompressing response Closes: #1609 --- src/utils/proxy/http.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index 72f65be3..61f41585 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -1,6 +1,6 @@ /* eslint-disable prefer-promise-reject-errors */ /* eslint-disable no-param-reassign */ -import { createUnzip } from "node:zlib"; +import { createUnzip, constants as zlibConstants } from "node:zlib"; import { http, https } from "follow-redirects"; @@ -34,7 +34,11 @@ function handleRequest(requestor, url, params) { let responseContent = response; if (contentEncoding === 'gzip' || contentEncoding === 'deflate') { - responseContent = createUnzip(); + responseContent = createUnzip({ + flush: zlibConstants.Z_SYNC_FLUSH, + finishFlush: zlibConstants.Z_SYNC_FLUSH + }); + // zlib errors responseContent.on("error", (e) => { logger.error(e); @@ -103,6 +107,6 @@ export async function httpProxy(url, params = {}) { constructedUrl.pathname ); logger.error(err); - return [500, "application/json", { error: {message: err?.message ?? "Unknown error", url, rawError: err} }, null]; + return [500, "application/json", { error: { message: err?.message ?? "Unknown error", url, rawError: err } }, null]; } } From 1cda4371201853be8d7d4320812e5d8fb862ed6e Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Mon, 3 Jul 2023 20:30:41 +0000 Subject: [PATCH 331/788] Translated using Weblate (English) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/en/ --- public/locales/en/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 671b8b00..fc0108a1 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -648,7 +648,7 @@ "homeassistant": { "people_home": "People Home", "lights_on": "Lights On", - "switches_on": "fdasfSwitches On" + "switches_on": "Switches On" }, "whatsupdocker": { "monitoring": "Monitoring", From 10d9b2d8314998f418a9008cca6a23ca6c92bb68 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Sun, 2 Jul 2023 06:27:31 +0000 Subject: [PATCH 332/788] Translated using Weblate (French) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 6902cf59..55da9947 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -578,7 +578,7 @@ "homeassistant": { "people_home": "People Home", "lights_on": "Lumières allumées", - "switches_on": "Switches On" + "switches_on": "Commutateur On" }, "freshrss": { "unread": "Non lu", From 2279dd37f0c905ba45b13d912a9105cf5b7bdea7 Mon Sep 17 00:00:00 2001 From: Vincenzo Date: Sun, 2 Jul 2023 20:00:03 +0000 Subject: [PATCH 333/788] Translated using Weblate (Italian) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 222 +++++++++++++++++----------------- 1 file changed, 111 insertions(+), 111 deletions(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index a066c531..f59048ac 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -112,7 +112,7 @@ "queries": "Richieste", "blocked": "Bloccati", "gravity": "Severità", - "blocked_percent": "Blocked %" + "blocked_percent": "Bloccato %" }, "npm": { "enabled": "Attivi", @@ -175,7 +175,7 @@ "missingMovies": "Film Mancanti" }, "lidarr": { - "wanted": "Mancanti", + "wanted": "Richiesto", "queued": "In coda", "artists": "Artisti" }, @@ -243,11 +243,11 @@ "uptime": "UP", "days": "d", "hours": "h", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free", - "used": "Used" + "load": "Carico", + "warn": "Avviso", + "total": "Totale", + "free": "Libero", + "used": "Usato" }, "changedetectionio": { "totalObserved": "Totale Osservato", @@ -314,9 +314,9 @@ "quicklaunch": { "bookmark": "Segnalibro", "service": "Servizio", - "search": "Search", - "custom": "Custom", - "visit": "Visit", + "search": "Cerca", + "custom": "Personalizzato", + "visit": "Visita", "url": "URL" }, "homebridge": { @@ -327,7 +327,7 @@ "child_bridges": "Child Bridges", "child_bridges_status": "{{ok}}/{{total}}", "up": "Up", - "pending": "Pending", + "pending": "In attesa", "down": "Down" }, "autobrr": { @@ -432,7 +432,7 @@ "cpuLoad": "Carico della CPU", "memoryUsed": "Memoria Utilizzata", "uptime": "Tempo di attività", - "numberOfLeases": "Lease" + "numberOfLeases": "Rilasci" }, "xteve": { "streams_all": "Tutti gli stream", @@ -440,145 +440,145 @@ "streams_xepg": "Canali XEPG" }, "opnsense": { - "cpu": "Carico CPU", + "cpu": "Carico della CPU", "memory": "Memoria in uso", "wanUpload": "WAN Upload", "wanDownload": "WAN Download" }, "moonraker": { - "printer_state": "Printer State", - "print_status": "Print Status", - "print_progress": "Progress", - "layers": "Layers" + "printer_state": "Stato stampante", + "print_status": "Stato Stampante", + "print_progress": "Avanzamento", + "layers": "Livelli" }, "medusa": { - "wanted": "Wanted", - "queued": "Queued", - "series": "Series" + "wanted": "Richiesto", + "queued": "In coda", + "series": "Serie" }, "octoprint": { - "printer_state": "Status", + "printer_state": "Stato", "temp_tool": "Tool temp", "temp_bed": "Bed temp", - "job_completion": "Completion" + "job_completion": "Completamento" }, "cloudflared": { - "origin_ip": "Origin IP", - "status": "Status" + "origin_ip": "IP sorgente", + "status": "Stato" }, "proxmoxbackupserver": { "datastore_usage": "Datastore", - "failed_tasks_24h": "Failed Tasks 24h", + "failed_tasks_24h": "Attività Non Riuscite 24h", "cpu_usage": "CPU", - "memory_usage": "Memory" + "memory_usage": "Memoria" }, "immich": { - "users": "Users", - "photos": "Photos", - "videos": "Videos", - "storage": "Storage" + "users": "Utenti", + "photos": "Foto", + "videos": "Video", + "storage": "Memoria" }, "uptimekuma": { - "up": "Sites Up", - "down": "Sites Down", + "up": "Siti On", + "down": "Siti Down", "uptime": "Uptime", - "incident": "Incident", + "incident": "Incidente", "m": "m" }, "komga": { - "libraries": "Libraries", - "series": "Series", - "books": "Books" + "libraries": "Librerie", + "series": "Serie", + "books": "Libri" }, "mylar": { - "series": "Series", - "issues": "Issues", - "wanted": "Wanted" + "series": "Serie", + "issues": "Problemi", + "wanted": "Richiesto" }, "photoprism": { - "albums": "Albums", - "photos": "Photos", - "videos": "Videos", - "people": "People" + "albums": "Album", + "photos": "Foto", + "videos": "Video", + "people": "Persone" }, "diskstation": { - "days": "Days", + "days": "Giorni", "uptime": "Uptime", - "volumeAvailable": "Available" + "volumeAvailable": "Disponibile" }, "fileflows": { - "queue": "Queue", - "processing": "Processing", - "processed": "Processed", - "time": "Time" + "queue": "Coda", + "processing": "In Lavorazione", + "processed": "Elaborato", + "time": "Tempo" }, "grafana": { "dashboards": "Dashboards", - "datasources": "Data Sources", - "totalalerts": "Total Alerts", - "alertstriggered": "Alerts Triggered" + "datasources": "Origine dei Dati", + "totalalerts": "Avvisi Totali", + "alertstriggered": "Avvisi Attivati" }, "nextcloud": { - "memoryusage": "Memory Usage", - "cpuload": "Cpu Load", - "freespace": "Free Space", - "activeusers": "Active Users", - "numfiles": "Files", - "numshares": "Shared Items" + "memoryusage": "Uso della Memoria", + "cpuload": "Carico della CPU", + "freespace": "Spazio Libero", + "activeusers": "Utenti Attivi", + "numfiles": "File", + "numshares": "Oggetti Condivisi" }, "kopia": { - "status": "Status", - "size": "Size", - "lastrun": "Last Run", - "nextrun": "Next Run", - "failed": "Failed" + "status": "Stato", + "size": "Dimensione", + "lastrun": "Ultima esecuzione", + "nextrun": "Prossima esecuzione", + "failed": "Fallito" }, "unmanic": { - "active_workers": "Active Workers", - "total_workers": "Total Workers", - "records_total": "Queue Length" + "active_workers": "Lavoratori Attivi", + "total_workers": "Lavoratori Totali", + "records_total": "Lunghezza della Coda" }, "healthchecks": { - "new": "New", + "new": "Nuovo", "up": "Online", - "grace": "In Grace Period", + "grace": "Periodo di Tolleranza", "down": "Offline", - "paused": "Paused", - "status": "Status", - "last_ping": "Last Ping", - "never": "No pings yet" + "paused": "In Pausa", + "status": "Stato", + "last_ping": "Ultimo Ping", + "never": "Ancora nessun ping" }, "pterodactyl": { - "servers": "Servers", - "nodes": "Nodes" + "servers": "Server", + "nodes": "Nodi" }, "prometheus": { "targets_up": "Targets Up", "targets_down": "Targets Down", - "targets_total": "Total Targets" + "targets_total": "Targets Totali" }, "minecraft": { - "players": "Players", - "version": "Version", - "status": "Status", + "players": "Giocatori", + "version": "Versione", + "status": "Stato", "up": "Online", "down": "Offline" }, "ghostfolio": { - "gross_percent_today": "Today", - "gross_percent_1y": "One year", - "gross_percent_max": "All time" + "gross_percent_today": "Oggi", + "gross_percent_1y": "Un anno", + "gross_percent_max": "Sempre" }, "audiobookshelf": { - "podcasts": "Podcasts", - "books": "Books", - "podcastsDuration": "Duration", - "booksDuration": "Duration" + "podcasts": "Podcast", + "books": "Libri", + "podcastsDuration": "Durata", + "booksDuration": "Durata" }, "homeassistant": { - "people_home": "People Home", - "lights_on": "Lights On", - "switches_on": "Switches On" + "people_home": "Persone a Casa", + "lights_on": "Luci Accese", + "switches_on": "Switch Accesi" }, "freshrss": { "subscriptions": "Iscrizioni", @@ -591,21 +591,21 @@ "passes": "Tessere" }, "whatsupdocker": { - "monitoring": "Monitoring", - "updates": "Updates" + "monitoring": "Monitoraggio", + "updates": "Aggiornamenti" }, "tailscale": { - "never": "Never", - "address": "Address", - "expires": "Expires", - "last_seen": "Last Seen", - "now": "Now", + "never": "Mai", + "address": "Indirizzo", + "expires": "Scade", + "last_seen": "Ultima visualizzazione", + "now": "Adesso", "years": "{{number}}y", "weeks": "{{number}}w", "hours": "{{number}}h", "minutes": "{{number}}m", "seconds": "{{number}}s", - "ago": "{{value}} Ago", + "ago": "{{value}} Fa", "days": "{{number}}d" }, "qnap": { @@ -617,14 +617,14 @@ "invalid": "Invalido" }, "pfsense": { - "load": "Load Avg", - "memory": "Mem Usage", - "wanStatus": "WAN Status", + "load": "Carico Medio", + "memory": "Uso Memoria", + "wanStatus": "Stato WAN", "up": "Up", "down": "Down", - "temp": "Temp", - "disk": "Disk Usage", - "wanIP": "WAN IP" + "temp": "Temperatura", + "disk": "Uso Disco", + "wanIP": "IP WAN" }, "caddy": { "upstreams": "Upstream", @@ -641,18 +641,18 @@ }, "pialert": { "total": "Totali", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "connected": "Connesso", + "new_devices": "Nuovi Dispositivi", + "down_alerts": "Avvisi di Disservizio" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Coda", + "downloadSpeed": "Velocità Download", + "downloadBytesRemaining": "Residuo", + "downloadTotalBytes": "Dimensione" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Serie", + "totalFiles": "File" } } From d1f83c0359a09cede75d1c1fb01a080f5a465ea5 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 3 Jul 2023 22:12:17 -0700 Subject: [PATCH 334/788] Update http.js --- src/utils/proxy/http.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/utils/proxy/http.js b/src/utils/proxy/http.js index 61f41585..107a7038 100644 --- a/src/utils/proxy/http.js +++ b/src/utils/proxy/http.js @@ -34,6 +34,9 @@ function handleRequest(requestor, url, params) { let responseContent = response; if (contentEncoding === 'gzip' || contentEncoding === 'deflate') { + // https://github.com/request/request/blob/3c0cddc7c8eb60b470e9519da85896ed7ee0081e/request.js#L1018-L1025 + // Be more lenient with decoding compressed responses, in case of invalid gzip responses that are still accepted + // by common browsers. responseContent = createUnzip({ flush: zlibConstants.Z_SYNC_FLUSH, finishFlush: zlibConstants.Z_SYNC_FLUSH From 8f953c0d16a9d0efd0f05eff107ff04312a6f246 Mon Sep 17 00:00:00 2001 From: Andrej Kralj Date: Wed, 5 Jul 2023 11:00:15 +0000 Subject: [PATCH 335/788] Translated using Weblate (Slovenian) Currently translated at 100.0% (471 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index c4a9e317..cb5f57e2 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -236,21 +236,21 @@ "wanted": "Iskano", "queued": "V vrsti", "series": "Serije", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Vrsta", + "unknown": "Neznano" }, "radarr": { "wanted": "Iskano", "missing": "Manjka", "queued": "V vrsti", "movies": "Filmi", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Vrsta", + "unknown": "Neznano" }, "lidarr": { "wanted": "Iskano", "queued": "V vrsti", - "artists": "Artists" + "artists": "Avtorji" }, "readarr": { "wanted": "Iskano", @@ -359,11 +359,11 @@ "uptime": "UP", "days": "d", "hours": "u", - "free": "Free", - "load": "Load", - "warn": "Warn", - "total": "Total", - "used": "Used" + "free": "Prosto", + "load": "Obremenitev", + "warn": "Opoz.", + "total": "Skupaj", + "used": "V uporabi" }, "authentik": { "users": "Uporabniki", @@ -613,8 +613,8 @@ "memUsage": "MEM", "systemTempC": "Temperatura", "poolUsage": "Prostor", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Prostora", + "invalid": "Neveljavno" }, "pfsense": { "load": "Povp. obremenitev", @@ -640,19 +640,19 @@ "watt_hour": "Wh" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Skupaj", + "connected": "Povezanih", + "new_devices": "Nove naprave", + "down_alerts": "Izključeno" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Vrsta", + "downloadSpeed": "Hitrost prenosa", + "downloadBytesRemaining": "Še ostane", + "downloadTotalBytes": "Velikost" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Serije", + "totalFiles": "Datoteke" } } From c6b6b4d71baf042ac68c2af57a93b2007092861d Mon Sep 17 00:00:00 2001 From: antaanimosity Date: Sun, 9 Jul 2023 20:31:43 +0200 Subject: [PATCH 336/788] Added translation using Weblate (Basque) --- public/locales/eu/common.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/locales/eu/common.json diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/public/locales/eu/common.json @@ -0,0 +1 @@ +{} From 885058dd413396360e53715b0c75323863a5c292 Mon Sep 17 00:00:00 2001 From: Smexhy Date: Sun, 9 Jul 2023 00:38:55 +0000 Subject: [PATCH 337/788] Translated using Weblate (Czech) Currently translated at 94.2% (444 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 164cc194..0666943b 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -46,8 +46,8 @@ }, "unifi": { "users": "Uživatelé", - "uptime": "Doba provozu systému", - "days": "Dnů", + "uptime": "Doba provozu", + "days": "dní", "wan": "WAN", "lan": "LAN", "wlan": "WLAN", @@ -56,8 +56,8 @@ "wlan_devices": "Zařízení WLAN", "lan_users": "Uživatelé LAN", "wlan_users": "Uživatelé WLAN", - "up": "BĚŽÍ", - "down": "NEBĚŽÍ", + "up": "FUNKČNÍ", + "down": "NEFUNKČNÍ", "wait": "Počkejte prosím", "empty_data": "Stav podsystému neznámý" }, From 9c0bd8b07a4866c34b85f537141393221668b5df Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 9 Jul 2023 18:32:17 +0000 Subject: [PATCH 338/788] Translated using Weblate (Basque) Currently translated at 100.0% (0 of 0 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 659 +++++++++++++++++++++++++++++++++- 1 file changed, 658 insertions(+), 1 deletion(-) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 0967ef42..ff80359e 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -1 +1,658 @@ -{} +{ + "wmo": { + "95-night": "Thunderstorm", + "96-day": "Thunderstorm With Hail", + "96-night": "Thunderstorm With Hail", + "99-day": "Thunderstorm With Hail", + "0-day": "Sunny", + "0-night": "Clear", + "1-day": "Mainly Sunny", + "1-night": "Mainly Clear", + "2-day": "Partly Cloudy", + "2-night": "Partly Cloudy", + "3-day": "Cloudy", + "3-night": "Cloudy", + "45-day": "Foggy", + "45-night": "Foggy", + "48-day": "Foggy", + "48-night": "Foggy", + "51-day": "Light Drizzle", + "51-night": "Light Drizzle", + "53-day": "Drizzle", + "53-night": "Drizzle", + "55-day": "Heavy Drizzle", + "55-night": "Heavy Drizzle", + "56-day": "Light Freezing Drizzle", + "56-night": "Light Freezing Drizzle", + "57-day": "Freezing Drizzle", + "57-night": "Freezing Drizzle", + "61-day": "Light Rain", + "61-night": "Light Rain", + "63-day": "Rain", + "63-night": "Rain", + "65-day": "Heavy Rain", + "65-night": "Heavy Rain", + "66-day": "Freezing Rain", + "66-night": "Freezing Rain", + "67-day": "Freezing Rain", + "67-night": "Freezing Rain", + "71-day": "Light Snow", + "71-night": "Light Snow", + "73-day": "Snow", + "73-night": "Snow", + "75-day": "Heavy Snow", + "75-night": "Heavy Snow", + "77-day": "Snow Grains", + "77-night": "Snow Grains", + "80-day": "Light Showers", + "80-night": "Light Showers", + "81-day": "Showers", + "81-night": "Showers", + "82-day": "Heavy Showers", + "82-night": "Heavy Showers", + "85-day": "Snow Showers", + "85-night": "Snow Showers", + "86-day": "Snow Showers", + "86-night": "Snow Showers", + "95-day": "Thunderstorm", + "99-night": "Thunderstorm With Hail" + }, + "homebridge": { + "updates": "Updates", + "available_update": "System", + "update_available": "Update Available", + "up_to_date": "Up to Date", + "child_bridges": "Child Bridges", + "child_bridges_status": "{{ok}}/{{total}}", + "up": "Up", + "pending": "Pending", + "down": "Down" + }, + "common": { + "bibyterate": "{{value, rate(bits: false; binary: true)}}", + "bibitrate": "{{value, rate(bits: true; binary: true)}}" + }, + "widget": { + "missing_type": "Missing Widget Type: {{type}}", + "api_error": "API Error", + "information": "Information", + "status": "Status", + "url": "URL", + "raw_error": "Raw Error", + "response_data": "Response Data" + }, + "weather": { + "current": "Current Location", + "allow": "Click to allow", + "updating": "Updating", + "wait": "Please wait" + }, + "search": { + "placeholder": "Search…" + }, + "resources": { + "cpu": "CPU", + "mem": "MEM", + "total": "Total", + "free": "Free", + "used": "Used", + "load": "Load", + "temp": "TEMP", + "max": "Max", + "uptime": "UP", + "months": "mo", + "days": "d", + "hours": "h", + "minutes": "m" + }, + "unifi": { + "users": "Users", + "uptime": "System Uptime", + "days": "Days", + "wan": "WAN", + "lan": "LAN", + "wlan": "WLAN", + "devices": "Devices", + "lan_devices": "LAN Devices", + "wlan_devices": "WLAN Devices", + "lan_users": "LAN Users", + "wlan_users": "WLAN Users", + "up": "UP", + "down": "DOWN", + "wait": "Please wait", + "empty_data": "Subsystem status unknown" + }, + "docker": { + "rx": "RX", + "tx": "TX", + "mem": "MEM", + "cpu": "CPU", + "running": "Running", + "offline": "Offline", + "error": "Error", + "unknown": "Unknown", + "healthy": "Healthy", + "starting": "Starting", + "unhealthy": "Unhealthy", + "not_found": "Not Found", + "exited": "Exited", + "partial": "Partial" + }, + "ping": { + "error": "Error", + "ping": "Ping" + }, + "emby": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams", + "movies": "Movies", + "series": "Series", + "episodes": "Episodes", + "songs": "Songs" + }, + "evcc": { + "pv_power": "Production", + "battery_soc": "Battery", + "grid_power": "Grid", + "home_power": "Consumption", + "charge_power": "Charger", + "watt_hour": "Wh" + }, + "flood": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "freshrss": { + "subscriptions": "Subscriptions", + "unread": "Unread" + }, + "caddy": { + "upstreams": "Upstreams", + "requests": "Current requests", + "requests_failed": "Failed requests" + }, + "changedetectionio": { + "totalObserved": "Total Observed", + "diffsDetected": "Diffs Detected" + }, + "channelsdvrserver": { + "shows": "Shows", + "recordings": "Recordings", + "scheduled": "Scheduled", + "passes": "Passes" + }, + "tautulli": { + "playing": "Playing", + "transcoding": "Transcoding", + "bitrate": "Bitrate", + "no_active": "No Active Streams" + }, + "omada": { + "connectedAp": "Connected APs", + "activeUser": "Active devices", + "alerts": "Alerts", + "connectedGateway": "Connected gateways", + "connectedSwitches": "Connected switches" + }, + "nzbget": { + "rate": "Rate", + "remaining": "Remaining", + "downloaded": "Downloaded" + }, + "plex": { + "streams": "Active Streams", + "albums": "Albums", + "movies": "Movies", + "tv": "TV Shows" + }, + "sabnzbd": { + "rate": "Rate", + "queue": "Queue", + "timeleft": "Time Left" + }, + "rutorrent": { + "active": "Active", + "upload": "Upload", + "download": "Download" + }, + "transmission": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "qbittorrent": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "qnap": { + "cpuUsage": "CPU Usage", + "memUsage": "MEM Usage", + "systemTempC": "System Temp", + "poolUsage": "Pool Usage", + "volumeUsage": "Volume Usage", + "invalid": "Invalid" + }, + "deluge": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "downloadstation": { + "download": "Download", + "upload": "Upload", + "leech": "Leech", + "seed": "Seed" + }, + "sonarr": { + "wanted": "Wanted", + "queued": "Queued", + "series": "Series", + "queue": "Queue", + "unknown": "Unknown" + }, + "radarr": { + "wanted": "Wanted", + "missing": "Missing", + "queued": "Queued", + "movies": "Movies", + "queue": "Queue", + "unknown": "Unknown" + }, + "lidarr": { + "wanted": "Wanted", + "queued": "Queued", + "artists": "Artists" + }, + "readarr": { + "wanted": "Wanted", + "queued": "Queued", + "books": "Books" + }, + "bazarr": { + "missingEpisodes": "Missing Episodes", + "missingMovies": "Missing Movies" + }, + "ombi": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "jellyseerr": { + "pending": "Pending", + "approved": "Approved", + "available": "Available" + }, + "overseerr": { + "pending": "Pending", + "processing": "Processing", + "approved": "Approved", + "available": "Available" + }, + "pialert": { + "total": "Total", + "connected": "Connected", + "new_devices": "New Devices", + "down_alerts": "Down Alerts" + }, + "pihole": { + "queries": "Queries", + "blocked": "Blocked", + "blocked_percent": "Blocked %", + "gravity": "Gravity" + }, + "adguard": { + "queries": "Queries", + "blocked": "Blocked", + "filtered": "Filtered", + "latency": "Latency" + }, + "speedtest": { + "upload": "Upload", + "download": "Download", + "ping": "Ping" + }, + "portainer": { + "running": "Running", + "stopped": "Stopped", + "total": "Total" + }, + "tailscale": { + "address": "Address", + "expires": "Expires", + "never": "Never", + "last_seen": "Last Seen", + "now": "Now", + "years": "{{number}}y", + "weeks": "{{number}}w", + "days": "{{number}}d", + "hours": "{{number}}h", + "minutes": "{{number}}m", + "seconds": "{{number}}s", + "ago": "{{value}} Ago" + }, + "tdarr": { + "queue": "Queue", + "processed": "Processed", + "errored": "Errored", + "saved": "Saved" + }, + "traefik": { + "routers": "Routers", + "services": "Services", + "middleware": "Middleware" + }, + "navidrome": { + "nothing_streaming": "No Active Streams", + "please_wait": "Please Wait" + }, + "npm": { + "enabled": "Enabled", + "disabled": "Disabled", + "total": "Total" + }, + "coinmarketcap": { + "configure": "Configure one or more crypto currencies to track", + "1hour": "1 Hour", + "1day": "1 Day", + "7days": "7 Days", + "30days": "30 Days" + }, + "gotify": { + "apps": "Applications", + "clients": "Clients", + "messages": "Messages" + }, + "prowlarr": { + "enableIndexers": "Indexers", + "numberOfGrabs": "Grabs", + "numberOfQueries": "Queries", + "numberOfFailGrabs": "Fail Grabs", + "numberOfFailQueries": "Fail Queries" + }, + "jackett": { + "configured": "Configured", + "errored": "Errored" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" + }, + "medusa": { + "wanted": "Wanted", + "queued": "Queued", + "series": "Series" + }, + "minecraft": { + "players": "Players", + "version": "Version", + "status": "Status", + "up": "Online", + "down": "Offline" + }, + "miniflux": { + "read": "Read", + "unread": "Unread" + }, + "authentik": { + "users": "Users", + "loginsLast24H": "Logins (24h)", + "failedLoginsLast24H": "Failed Logins (24h)" + }, + "proxmox": { + "mem": "MEM", + "cpu": "CPU", + "lxc": "LXC", + "vms": "VMs" + }, + "glances": { + "cpu": "CPU", + "load": "Load", + "wait": "Please wait", + "temp": "TEMP", + "warn": "Warn", + "uptime": "UP", + "total": "Total", + "free": "Free", + "used": "Used", + "days": "d", + "hours": "h" + }, + "quicklaunch": { + "bookmark": "Bookmark", + "service": "Service", + "search": "Search", + "custom": "Custom", + "visit": "Visit", + "url": "URL" + }, + "healthchecks": { + "new": "New", + "up": "Online", + "grace": "In Grace Period", + "down": "Offline", + "paused": "Paused", + "status": "Status", + "last_ping": "Last Ping", + "never": "No pings yet" + }, + "watchtower": { + "containers_scanned": "Scanned", + "containers_updated": "Updated", + "containers_failed": "Failed" + }, + "autobrr": { + "approvedPushes": "Approved", + "rejectedPushes": "Rejected", + "filters": "Filters", + "indexers": "Indexers" + }, + "tubearchivist": { + "downloads": "Queue", + "videos": "Videos", + "channels": "Channels", + "playlists": "Playlists" + }, + "truenas": { + "load": "System Load", + "uptime": "Uptime", + "alerts": "Alerts", + "time": "{{value, number(style: unit; unitDisplay: long;)}}" + }, + "pyload": { + "speed": "Speed", + "active": "Active", + "queue": "Queue", + "total": "Total" + }, + "gluetun": { + "public_ip": "Public IP", + "region": "Region", + "country": "Country" + }, + "hdhomerun": { + "channels": "Channels", + "hd": "HD" + }, + "scrutiny": { + "passed": "Passed", + "failed": "Failed", + "unknown": "Unknown" + }, + "paperlessngx": { + "inbox": "Inbox", + "total": "Total" + }, + "nextdns": { + "wait": "Please Wait", + "no_devices": "No Device Data Received" + }, + "mikrotik": { + "cpuLoad": "CPU Load", + "memoryUsed": "Memory Used", + "uptime": "Uptime", + "numberOfLeases": "Leases" + }, + "xteve": { + "streams_all": "All Streams", + "streams_active": "Active Streams", + "streams_xepg": "XEPG Channels" + }, + "opnsense": { + "cpu": "CPU Load", + "memory": "Active Memory", + "wanUpload": "WAN Upload", + "wanDownload": "WAN Download" + }, + "moonraker": { + "printer_state": "Printer State", + "print_status": "Print Status", + "print_progress": "Progress", + "layers": "Layers" + }, + "octoprint": { + "printer_state": "Status", + "temp_tool": "Tool temp", + "temp_bed": "Bed temp", + "job_completion": "Completion" + }, + "cloudflared": { + "origin_ip": "Origin IP", + "status": "Status" + }, + "pfsense": { + "load": "Load Avg", + "memory": "Mem Usage", + "wanStatus": "WAN Status", + "up": "Up", + "down": "Down", + "temp": "Temp", + "disk": "Disk Usage", + "wanIP": "WAN IP" + }, + "proxmoxbackupserver": { + "datastore_usage": "Datastore", + "failed_tasks_24h": "Failed Tasks 24h", + "cpu_usage": "CPU", + "memory_usage": "Memory" + }, + "immich": { + "users": "Users", + "photos": "Photos", + "videos": "Videos", + "storage": "Storage" + }, + "uptimekuma": { + "up": "Sites Up", + "down": "Sites Down", + "uptime": "Uptime", + "incident": "Incident", + "m": "m" + }, + "komga": { + "libraries": "Libraries", + "series": "Series", + "books": "Books" + }, + "diskstation": { + "days": "Days", + "uptime": "Uptime", + "volumeAvailable": "Available" + }, + "mylar": { + "series": "Series", + "issues": "Issues", + "wanted": "Wanted" + }, + "photoprism": { + "albums": "Albums", + "photos": "Photos", + "videos": "Videos", + "people": "People" + }, + "fileflows": { + "queue": "Queue", + "processing": "Processing", + "processed": "Processed", + "time": "Time" + }, + "grafana": { + "dashboards": "Dashboards", + "datasources": "Data Sources", + "totalalerts": "Total Alerts", + "alertstriggered": "Alerts Triggered" + }, + "nextcloud": { + "cpuload": "Cpu Load", + "memoryusage": "Memory Usage", + "freespace": "Free Space", + "activeusers": "Active Users", + "numfiles": "Files", + "numshares": "Shared Items" + }, + "kopia": { + "status": "Status", + "size": "Size", + "lastrun": "Last Run", + "nextrun": "Next Run", + "failed": "Failed" + }, + "unmanic": { + "active_workers": "Active Workers", + "total_workers": "Total Workers", + "records_total": "Queue Length" + }, + "pterodactyl": { + "servers": "Servers", + "nodes": "Nodes" + }, + "prometheus": { + "targets_up": "Targets Up", + "targets_down": "Targets Down", + "targets_total": "Total Targets" + }, + "ghostfolio": { + "gross_percent_today": "Today", + "gross_percent_1y": "One year", + "gross_percent_max": "All time" + }, + "audiobookshelf": { + "podcasts": "Podcasts", + "books": "Books", + "podcastsDuration": "Duration", + "booksDuration": "Duration" + }, + "homeassistant": { + "people_home": "People Home", + "lights_on": "Lights On", + "switches_on": "Switches On" + }, + "whatsupdocker": { + "monitoring": "Monitoring", + "updates": "Updates" + }, + "jdownloader": { + "downloadCount": "Queue", + "downloadBytesRemaining": "Remaining", + "downloadTotalBytes": "Size", + "downloadSpeed": "Speed" + }, + "kavita": { + "seriesCount": "Series", + "totalFiles": "Files" + } +} From ca396ce96bce52f6c06a321f292aa94a66ceeb97 Mon Sep 17 00:00:00 2001 From: Jon Seager Date: Mon, 10 Jul 2023 15:44:43 +0100 Subject: [PATCH 339/788] Override config directory with env var. Until this change, the config directory was assumed to be located at '/config'. This patch retains that default behaviour, but enables users/devs to override that behaviour by setting the HOMEPAGE_CONFIG_DIR variable. --- src/pages/api/hash.js | 4 ++-- src/utils/config/api-response.js | 4 ++-- src/utils/config/config.js | 13 +++++++++---- src/utils/config/docker.js | 10 +++++----- src/utils/config/kubernetes.js | 4 ++-- src/utils/config/service-helpers.js | 6 +++--- src/utils/config/widget-helpers.js | 4 ++-- src/utils/logger.js | 7 +++---- 8 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/pages/api/hash.js b/src/pages/api/hash.js index 96369134..0e8d0261 100644 --- a/src/pages/api/hash.js +++ b/src/pages/api/hash.js @@ -2,7 +2,7 @@ import { join } from "path"; import { createHash } from "crypto"; import { readFileSync } from "fs"; -import checkAndCopyConfig from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR } from "utils/config/config"; const configs = ["docker.yaml", "settings.yaml", "services.yaml", "bookmarks.yaml", "widgets.yaml"]; @@ -15,7 +15,7 @@ function hash(buffer) { export default async function handler(req, res) { const hashes = configs.map((config) => { checkAndCopyConfig(config); - const configYaml = join(process.cwd(), "config", config); + const configYaml = join(CONF_DIR, config); return hash(readFileSync(configYaml, "utf8")); }); diff --git a/src/utils/config/api-response.js b/src/utils/config/api-response.js index fad3022d..e00846db 100644 --- a/src/utils/config/api-response.js +++ b/src/utils/config/api-response.js @@ -4,7 +4,7 @@ import path from "path"; import yaml from "js-yaml"; -import checkAndCopyConfig, { getSettings, substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { getSettings, substituteEnvironmentVars, CONF_DIR } from "utils/config/config"; import { servicesFromConfig, servicesFromDocker, @@ -27,7 +27,7 @@ function compareServices(service1, service2) { export async function bookmarksResponse() { checkAndCopyConfig("bookmarks.yaml"); - const bookmarksYaml = path.join(process.cwd(), "config", "bookmarks.yaml"); + const bookmarksYaml = path.join(CONF_DIR, "bookmarks.yaml"); const rawFileContents = await fs.readFile(bookmarksYaml, "utf8"); const fileContents = substituteEnvironmentVars(rawFileContents); const bookmarks = yaml.load(fileContents); diff --git a/src/utils/config/config.js b/src/utils/config/config.js index 6c5f4ee7..dbb0261e 100644 --- a/src/utils/config/config.js +++ b/src/utils/config/config.js @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import { join } from "path"; -import { existsSync, readFileSync, copyFileSync } from "fs"; +import { copyFileSync, existsSync, mkdirSync, readFileSync } from "fs"; import cache from "memory-cache"; import yaml from "js-yaml"; @@ -9,8 +9,14 @@ const cacheKey = "homepageEnvironmentVariables"; const homepageVarPrefix = "HOMEPAGE_VAR_"; const homepageFilePrefix = "HOMEPAGE_FILE_"; +export const CONF_DIR = process.env.HOMEPAGE_CONFIG_DIR ? process.env.HOMEPAGE_CONFIG_DIR : join(process.cwd(), "config"); + export default function checkAndCopyConfig(config) { - const configYaml = join(process.cwd(), "config", config); + if (!existsSync(CONF_DIR)) { + mkdirSync(CONF_DIR, { recursive: true }); + } + + const configYaml = join(CONF_DIR, config); if (!existsSync(configYaml)) { const configSkeleton = join(process.cwd(), "src", "skeleton", config); try { @@ -62,7 +68,7 @@ export function substituteEnvironmentVars(str) { export function getSettings() { checkAndCopyConfig("settings.yaml"); - const settingsYaml = join(process.cwd(), "config", "settings.yaml"); + const settingsYaml = join(CONF_DIR, "settings.yaml"); const rawFileContents = readFileSync(settingsYaml, "utf8"); const fileContents = substituteEnvironmentVars(rawFileContents); const initialSettings = yaml.load(fileContents) ?? {}; @@ -79,6 +85,5 @@ export function getSettings() { }) } } - return initialSettings } diff --git a/src/utils/config/docker.js b/src/utils/config/docker.js index 8f658db2..b0bb7e55 100644 --- a/src/utils/config/docker.js +++ b/src/utils/config/docker.js @@ -3,12 +3,12 @@ import { readFileSync } from "fs"; import yaml from "js-yaml"; -import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; export default function getDockerArguments(server) { checkAndCopyConfig("docker.yaml"); - const configFile = path.join(process.cwd(), "config", "docker.yaml"); + const configFile = path.join(CONF_DIR, "docker.yaml"); const rawConfigData = readFileSync(configFile, "utf8"); const configData = substituteEnvironmentVars(rawConfigData); const servers = yaml.load(configData); @@ -37,9 +37,9 @@ export default function getDockerArguments(server) { } if (servers[server].tls){ - res.conn.ca = readFileSync(path.join(process.cwd(), "config", servers[server].tls.caFile)); - res.conn.cert = readFileSync(path.join(process.cwd(), "config", servers[server].tls.certFile)); - res.conn.key = readFileSync(path.join(process.cwd(), "config", servers[server].tls.keyFile)); + res.conn.ca = readFileSync(path.join(CONF_DIR, servers[server].tls.caFile)); + res.conn.cert = readFileSync(path.join(CONF_DIR, servers[server].tls.certFile)); + res.conn.key = readFileSync(path.join(CONF_DIR, servers[server].tls.keyFile)); } return res; diff --git a/src/utils/config/kubernetes.js b/src/utils/config/kubernetes.js index ba2a37a0..ea9254e3 100644 --- a/src/utils/config/kubernetes.js +++ b/src/utils/config/kubernetes.js @@ -4,12 +4,12 @@ import { readFileSync } from "fs"; import yaml from "js-yaml"; import { KubeConfig } from "@kubernetes/client-node"; -import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; export default function getKubeConfig() { checkAndCopyConfig("kubernetes.yaml"); - const configFile = path.join(process.cwd(), "config", "kubernetes.yaml"); + const configFile = path.join(CONF_DIR, "kubernetes.yaml"); const rawConfigData = readFileSync(configFile, "utf8"); const configData = substituteEnvironmentVars(rawConfigData); const config = yaml.load(configData); diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index a016a00d..c9828c66 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -7,7 +7,7 @@ import * as shvl from "shvl"; import { CustomObjectsApi, NetworkingV1Api } from "@kubernetes/client-node"; import createLogger from "utils/logger"; -import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; import getDockerArguments from "utils/config/docker"; import getKubeConfig from "utils/config/kubernetes"; @@ -17,7 +17,7 @@ const logger = createLogger("service-helpers"); export async function servicesFromConfig() { checkAndCopyConfig("services.yaml"); - const servicesYaml = path.join(process.cwd(), "config", "services.yaml"); + const servicesYaml = path.join(CONF_DIR, "services.yaml"); const rawFileContents = await fs.readFile(servicesYaml, "utf8"); const fileContents = substituteEnvironmentVars(rawFileContents); const services = yaml.load(fileContents); @@ -51,7 +51,7 @@ export async function servicesFromConfig() { export async function servicesFromDocker() { checkAndCopyConfig("docker.yaml"); - const dockerYaml = path.join(process.cwd(), "config", "docker.yaml"); + const dockerYaml = path.join(CONF_DIR, "docker.yaml"); const rawDockerFileContents = await fs.readFile(dockerYaml, "utf8"); const dockerFileContents = substituteEnvironmentVars(rawDockerFileContents); const servers = yaml.load(dockerFileContents); diff --git a/src/utils/config/widget-helpers.js b/src/utils/config/widget-helpers.js index 6f61b7e2..0e1eac6a 100644 --- a/src/utils/config/widget-helpers.js +++ b/src/utils/config/widget-helpers.js @@ -3,12 +3,12 @@ import path from "path"; import yaml from "js-yaml"; -import checkAndCopyConfig, { substituteEnvironmentVars } from "utils/config/config"; +import checkAndCopyConfig, { CONF_DIR, substituteEnvironmentVars } from "utils/config/config"; export async function widgetsFromConfig() { checkAndCopyConfig("widgets.yaml"); - const widgetsYaml = path.join(process.cwd(), "config", "widgets.yaml"); + const widgetsYaml = path.join(CONF_DIR, "widgets.yaml"); const rawFileContents = await fs.readFile(widgetsYaml, "utf8"); const fileContents = substituteEnvironmentVars(rawFileContents); const widgets = yaml.load(fileContents); diff --git a/src/utils/logger.js b/src/utils/logger.js index 048c5356..98adbdf0 100644 --- a/src/utils/logger.js +++ b/src/utils/logger.js @@ -1,18 +1,17 @@ /* eslint-disable no-console */ -import { join } from "path"; import { format as utilFormat } from "node:util"; import winston from "winston"; -import checkAndCopyConfig, { getSettings } from "utils/config/config"; +import checkAndCopyConfig, { getSettings, CONF_DIR } from "utils/config/config"; + let winstonLogger; function init() { - const configPath = join(process.cwd(), "config"); checkAndCopyConfig("settings.yaml"); const settings = getSettings(); - const logpath = settings.logpath || configPath; + const logpath = settings.logpath || CONF_DIR; function combineMessageAndSplat() { return { From 9f4ac4e41e573f08af2bf35a973742d25c986ab3 Mon Sep 17 00:00:00 2001 From: antaanimosity Date: Sun, 9 Jul 2023 18:54:03 +0000 Subject: [PATCH 340/788] Translated using Weblate (Basque) Currently translated at 7.0% (33 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index ff80359e..bd1e8311 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -75,7 +75,7 @@ "widget": { "missing_type": "Missing Widget Type: {{type}}", "api_error": "API Error", - "information": "Information", + "information": "Informazioa", "status": "Status", "url": "URL", "raw_error": "Raw Error", @@ -84,18 +84,18 @@ "weather": { "current": "Current Location", "allow": "Click to allow", - "updating": "Updating", - "wait": "Please wait" + "updating": "Eguneratzen", + "wait": "Itxaron mesedez" }, "search": { - "placeholder": "Search…" + "placeholder": "Bilatu…" }, "resources": { "cpu": "CPU", "mem": "MEM", - "total": "Total", + "total": "Guztira", "free": "Free", - "used": "Used", + "used": "Erabilita", "load": "Load", "temp": "TEMP", "max": "Max", @@ -108,18 +108,18 @@ "unifi": { "users": "Users", "uptime": "System Uptime", - "days": "Days", + "days": "Egun", "wan": "WAN", "lan": "LAN", "wlan": "WLAN", - "devices": "Devices", - "lan_devices": "LAN Devices", - "wlan_devices": "WLAN Devices", - "lan_users": "LAN Users", - "wlan_users": "WLAN Users", + "devices": "Gailuak", + "lan_devices": "LAN Gailuak", + "wlan_devices": "WLAN Gailuak", + "lan_users": "LAN Erabiltzaileak", + "wlan_users": "WLAN Erabiltzaileak", "up": "UP", "down": "DOWN", - "wait": "Please wait", + "wait": "Itxaron mesedez", "empty_data": "Subsystem status unknown" }, "docker": { @@ -130,27 +130,27 @@ "running": "Running", "offline": "Offline", "error": "Error", - "unknown": "Unknown", - "healthy": "Healthy", - "starting": "Starting", + "unknown": "Ezezaguna", + "healthy": "Osasuntsu", + "starting": "Abiarazten", "unhealthy": "Unhealthy", "not_found": "Not Found", "exited": "Exited", "partial": "Partial" }, "ping": { - "error": "Error", + "error": "Errorea", "ping": "Ping" }, "emby": { "playing": "Playing", "transcoding": "Transcoding", - "bitrate": "Bitrate", + "bitrate": "Bit-tasa", "no_active": "No Active Streams", "movies": "Movies", "series": "Series", "episodes": "Episodes", - "songs": "Songs" + "songs": "Abestiak" }, "evcc": { "pv_power": "Production", @@ -216,8 +216,8 @@ }, "rutorrent": { "active": "Active", - "upload": "Upload", - "download": "Download" + "upload": "Kargatu", + "download": "Deskargatu" }, "transmission": { "download": "Download", @@ -398,7 +398,7 @@ "series": "Series" }, "minecraft": { - "players": "Players", + "players": "Jokalariak", "version": "Version", "status": "Status", "up": "Online", From d75505acc828ae4c1f5a772486fdd95540e426d9 Mon Sep 17 00:00:00 2001 From: alpine8 Date: Tue, 11 Jul 2023 00:43:01 +0000 Subject: [PATCH 341/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.9% (80 of 471 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index a633028c..f0944cd6 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -653,6 +653,6 @@ }, "kavita": { "seriesCount": "Series", - "totalFiles": "Files" + "totalFiles": "Filer" } } From 43b5263f41549234acd7e66f0dfe33bc4b4e25f9 Mon Sep 17 00:00:00 2001 From: Mark Walet Date: Thu, 13 Jul 2023 18:39:11 +0200 Subject: [PATCH 342/788] Improve proxmox widget --- src/utils/config/service-helpers.js | 6 +++++- src/widgets/proxmox/component.jsx | 32 ++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index c9828c66..931f15e9 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -289,6 +289,7 @@ export function cleanServiceGroups(groups) { enableNowPlaying, volume, // diskstation widget, enableQueue, // sonarr/radarr + node, // Proxmox } = cleanedService.widget; let fieldsList = fields; @@ -299,7 +300,7 @@ export function cleanServiceGroups(groups) { fieldsList = null; } } - + cleanedService.widget = { type, fields: fieldsList || null, @@ -319,6 +320,9 @@ export function cleanServiceGroups(groups) { if (type === "unifi") { if (site) cleanedService.widget.site = site; } + if (type === "proxmox") { + if (node) cleanedService.widget.node = node; + } if (type === "kubernetes") { if (namespace) cleanedService.widget.namespace = namespace; if (app) cleanedService.widget.app = app; diff --git a/src/widgets/proxmox/component.jsx b/src/widgets/proxmox/component.jsx index e022be6e..10151f59 100644 --- a/src/widgets/proxmox/component.jsx +++ b/src/widgets/proxmox/component.jsx @@ -4,6 +4,7 @@ import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; + function calcRunning(total, current) { return current.status === "running" ? total + 1 : total; } @@ -25,29 +26,40 @@ export default function Component({ service }) { - + ); } const { data } = clusterData ; - const vms = data.filter(item => item.type === "qemu" && item.template === 0) || []; - const lxc = data.filter(item => item.type === "lxc" && item.template === 0) || []; - const nodes = data.filter(item => item.type === "node") || []; - + const vms = data.filter(item => item.type === "qemu" && item.template === 0 && (widget.node === undefined || widget.node === item.node)) || []; + const lxc = data.filter(item => item.type === "lxc" && item.template === 0 && (widget.node === undefined || widget.node === item.node)) || []; + const nodes = data.filter(item => item.type === "node" && (widget.node === undefined || widget.node === item.node)) || []; const runningVMs = vms.reduce(calcRunning, 0); const runningLXC = lxc.reduce(calcRunning, 0); - // TODO: support more than one node - // TODO: better handling of cluster with zero nodes - const node = nodes.length > 0 ? nodes[0] : { cpu: 0.0, mem: 0, maxmem: 0 }; + if (nodes.length === 0) { + return ( + + + + + + + ); + } + + const maxMemory = nodes.reduce((sum, n) => n.maxmem + sum, 0); + const usedMemory = nodes.reduce((sum, n) => n.mem + sum, 0); + const maxCpu = nodes.reduce((sum, n) => n.maxcpu + sum, 0); + const usedCpu = nodes.reduce((sum, n) => (n.cpu * n.maxcpu) + sum, 0); return ( - - + + ); } From 276edb20695cafcf651005217db165c77b76054c Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 13 Jul 2023 17:14:47 -0700 Subject: [PATCH 343/788] Better handle invalid coinmarketcap data --- src/widgets/coinmarketcap/component.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/widgets/coinmarketcap/component.jsx b/src/widgets/coinmarketcap/component.jsx index 554bb044..2d51217c 100644 --- a/src/widgets/coinmarketcap/component.jsx +++ b/src/widgets/coinmarketcap/component.jsx @@ -51,6 +51,9 @@ export default function Component({ service }) { const { data } = statsData; + // Make sure API returned valid data for the symbol + const validSymbols = symbols.filter(symbol => data[symbol].quote[currencyCode][`percent_change_${dateRange}`] !== null); + return (
    @@ -58,7 +61,7 @@ export default function Component({ service }) {
    - {symbols.map((symbol) => ( + {validSymbols.map((symbol) => (
    Date: Thu, 13 Jul 2023 21:39:45 -0700 Subject: [PATCH 344/788] Allow coinmarketcap slugs --- src/pages/api/services/proxy.js | 13 ++++++++-- src/utils/config/service-helpers.js | 10 +++++--- src/widgets/coinmarketcap/component.jsx | 33 +++++++++++++++---------- src/widgets/coinmarketcap/widget.js | 3 ++- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index a33e6628..dbe6fe9e 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -22,6 +22,7 @@ export default async function handler(req, res) { if (widget?.mappings) { const mapping = widget?.mappings?.[req.query.endpoint]; const mappingParams = mapping?.params; + const optionalParams = mapping?.optionalParams; const map = mapping?.map; const endpoint = mapping?.endpoint; const endpointProxy = mapping?.proxyHandler || serviceProxyHandler; @@ -40,9 +41,17 @@ export default async function handler(req, res) { req.query.endpoint = formatApiCall(endpoint, segments); } - if (req.query.query && mappingParams) { + if (req.query.query && (mappingParams || optionalParams)) { const queryParams = JSON.parse(req.query.query); - const query = new URLSearchParams(mappingParams.map((p) => [p, queryParams[p]])); + + let filteredOptionalParams = [] + if (optionalParams) filteredOptionalParams = optionalParams.filter(p => queryParams[p] !== undefined); + + let params = []; + if (mappingParams) params = params.concat(mappingParams); + if (filteredOptionalParams) params = params.concat(filteredOptionalParams); + + const query = new URLSearchParams(params.map((p) => [p, queryParams[p]])); req.query.endpoint = `${req.query.endpoint}?${query}`; } diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index c9828c66..c26281c7 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -279,6 +279,7 @@ export function cleanServiceGroups(groups) { container, currency, // coinmarketcap widget symbols, + slugs, defaultinterval, site, // unifi widget namespace, // kubernetes widget @@ -308,9 +309,12 @@ export function cleanServiceGroups(groups) { service_group: serviceGroup.name, }; - if (currency) cleanedService.widget.currency = currency; - if (symbols) cleanedService.widget.symbols = symbols; - if (defaultinterval) cleanedService.widget.defaultinterval = defaultinterval; + if (type === "coinmarketcap") { + if (currency) cleanedService.widget.currency = currency; + if (symbols) cleanedService.widget.symbols = symbols; + if (slugs) cleanedService.widget.slugs = slugs; + if (defaultinterval) cleanedService.widget.defaultinterval = defaultinterval; + } if (type === "docker") { if (server) cleanedService.widget.server = server; diff --git a/src/widgets/coinmarketcap/component.jsx b/src/widgets/coinmarketcap/component.jsx index 2d51217c..a71a246f 100644 --- a/src/widgets/coinmarketcap/component.jsx +++ b/src/widgets/coinmarketcap/component.jsx @@ -19,17 +19,26 @@ export default function Component({ service }) { const { widget } = service; const { symbols } = widget; + const { slugs } = widget; const currencyCode = widget.currency ?? "USD"; const interval = widget.defaultinterval ?? dateRangeOptions[0].value; const [dateRange, setDateRange] = useState(interval); - const { data: statsData, error: statsError } = useWidgetAPI(widget, "v1/cryptocurrency/quotes/latest", { - symbol: `${symbols.join(",")}`, + const params = { convert: `${currencyCode}`, - }); + } - if (!symbols || symbols.length === 0) { + // slugs >> symbols, not both + if (slugs?.length) { + params.slug = slugs.join(","); + } else if (symbols?.length) { + params.symbol = symbols.join(","); + } + + const { data: statsData, error: statsError } = useWidgetAPI(widget, "v1/cryptocurrency/quotes/latest", params); + + if ((!symbols && !slugs) || (symbols?.length === 0 && slugs?.length === 0)) { return ( @@ -50,9 +59,7 @@ export default function Component({ service }) { } const { data } = statsData; - - // Make sure API returned valid data for the symbol - const validSymbols = symbols.filter(symbol => data[symbol].quote[currencyCode][`percent_change_${dateRange}`] !== null); + const validCryptos = Object.values(data).filter(crypto => crypto.quote[currencyCode][`percent_change_${dateRange}`] !== null) return ( @@ -61,28 +68,28 @@ export default function Component({ service }) {
    - {validSymbols.map((symbol) => ( + {validCryptos.map((crypto) => (
    -
    {data[symbol].name}
    +
    {crypto.name}
    {t("common.number", { - value: data[symbol].quote[currencyCode].price, + value: crypto.quote[currencyCode].price, style: "currency", currency: currencyCode, })}
    0 + crypto.quote[currencyCode][`percent_change_${dateRange}`] > 0 ? "text-emerald-300" : "text-rose-300" }`} > - {data[symbol].quote[currencyCode][`percent_change_${dateRange}`].toFixed(2)}% + {crypto.quote[currencyCode][`percent_change_${dateRange}`].toFixed(2)}%
    diff --git a/src/widgets/coinmarketcap/widget.js b/src/widgets/coinmarketcap/widget.js index fcbafadf..85062b60 100644 --- a/src/widgets/coinmarketcap/widget.js +++ b/src/widgets/coinmarketcap/widget.js @@ -7,7 +7,8 @@ const widget = { mappings: { "v1/cryptocurrency/quotes/latest": { endpoint: "v1/cryptocurrency/quotes/latest", - params: ["symbol", "convert"], + params: ["convert"], + optionalParams: ["symbol", "slug"], }, }, }; From aeac95db489cfedfba37d88b7e2f796774a397f0 Mon Sep 17 00:00:00 2001 From: jonathann92 <9582585+jonathann92@users.noreply.github.com> Date: Thu, 13 Jul 2023 22:08:00 -0700 Subject: [PATCH 345/788] early exit if tautulli's data is an empty object Fix for when tautulli cannot reach to plex --- src/widgets/tautulli/component.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/tautulli/component.jsx b/src/widgets/tautulli/component.jsx index a0328383..0768ccaa 100644 --- a/src/widgets/tautulli/component.jsx +++ b/src/widgets/tautulli/component.jsx @@ -126,7 +126,7 @@ export default function Component({ service }) { return ; } - if (!activityData) { + if (!activityData || Object.keys(activityData.response.data).length === 0) { return (
    From 78449916170a7b1eb3cf9dd9da5d4e38fc7c494d Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 13 Jul 2023 23:03:10 -0700 Subject: [PATCH 346/788] Show plex connection error --- public/locales/en/common.json | 3 ++- src/widgets/tautulli/component.jsx | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index fc0108a1..6f490c22 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -129,7 +129,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "Connected APs", diff --git a/src/widgets/tautulli/component.jsx b/src/widgets/tautulli/component.jsx index 0768ccaa..e52eeb5d 100644 --- a/src/widgets/tautulli/component.jsx +++ b/src/widgets/tautulli/component.jsx @@ -122,11 +122,11 @@ export default function Component({ service }) { refreshInterval: 5000, }); - if (activityError) { - return ; + if (activityError || (activityData && Object.keys(activityData.response.data).length === 0)) { + return ; } - if (!activityData || Object.keys(activityData.response.data).length === 0) { + if (!activityData) { return (
    From 23fd4a5a730bbdb3614ed4a731bd46a8ff4043d6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 347/788] Translated using Weblate (German) Currently translated at 96.8% (457 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 8b5dca93..0ed40270 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -56,7 +56,8 @@ "playing": "Spielen", "transcoding": "Transcodierung", "bitrate": "Bitrate", - "no_active": "Keine aktiven Streams" + "no_active": "Keine aktiven Streams", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Aktiv", From 48f9bf4f7ef6f830b1f10b1583540d81869b4849 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 348/788] Translated using Weblate (Spanish) Currently translated at 99.7% (471 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 498cb8b8..0f1a419a 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -56,7 +56,8 @@ "playing": "Reproduciendo", "transcoding": "Transcodificando", "bitrate": "Tasa de bits", - "no_active": "Sin transmisiones activas" + "no_active": "Sin transmisiones activas", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Activo", From 376ab9a6f36b654105e8438866447f5aef6f95ec Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 349/788] Translated using Weblate (French) Currently translated at 99.7% (471 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 55da9947..95e90114 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -56,7 +56,8 @@ "playing": "En lecture", "transcoding": "Transcodage", "bitrate": "Débit", - "no_active": "Aucun flux actif" + "no_active": "Aucun flux actif", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Actif", From bd467ab01fcb68894565d5880d222695fb8a1151 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 350/788] Translated using Weblate (Portuguese) Currently translated at 87.9% (415 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 3bfb6df8..ebe2bf87 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -56,7 +56,8 @@ "playing": "Reproduzindo", "transcoding": "Transcodificação", "bitrate": "Taxa de bits", - "no_active": "Sem streams ativas" + "no_active": "Sem streams ativas", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Ativo", From de6e777312f3ec539875ba6b28b7fd0de9271b75 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 351/788] Translated using Weblate (Russian) Currently translated at 87.5% (413 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index ded1be07..81df368f 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -56,7 +56,8 @@ "playing": "Воспроизведение", "transcoding": "Транскодирование", "bitrate": "Битрейт", - "no_active": "Нет активных трансляций" + "no_active": "Нет активных трансляций", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Активный", From 4e4e366e4e67222ef6f92757b8598c6cbe479cd9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 352/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 94.0% (444 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 2506671c..b22992b6 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -56,7 +56,8 @@ "playing": "播放中", "transcoding": "转码", "bitrate": "比特率", - "no_active": "暂无播放" + "no_active": "暂无播放", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "活动中", From 2deae199409bca779a86cfeea02989be2700e8e7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 353/788] Translated using Weblate (Italian) Currently translated at 99.5% (470 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index f59048ac..4eb941b3 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -29,7 +29,8 @@ "playing": "In riproduzione", "transcoding": "Transcodifica", "bitrate": "Bitrate", - "no_active": "Nessuno Stream Attivo" + "no_active": "Nessuno Stream Attivo", + "plex_connection_error": "Check Plex Connection" }, "speedtest": { "upload": "Upload", From 3b2f7561be813478420b6846b103d866e757b9d8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 354/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.9% (80 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index f0944cd6..8f55f79c 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -56,7 +56,8 @@ "playing": "Spiller", "transcoding": "Transkoding", "bitrate": "Bitrate", - "no_active": "Ingen aktive strømmer" + "no_active": "Ingen aktive strømmer", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Aktiv", From 95f1c31e9cc0364dc390a68f59ecda2be83f598b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 355/788] Translated using Weblate (Vietnamese) Currently translated at 9.3% (44 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 1fe186c9..a865f6c2 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -56,7 +56,8 @@ "playing": "Đang chơi", "transcoding": "Chuyển định dạng", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Hoạt động", From b4af77d3c4c2638bb5ea74adb15724499519ac1b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 356/788] Translated using Weblate (Dutch) Currently translated at 51.0% (241 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 88c809a9..aabb0624 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -72,7 +72,8 @@ "playing": "Afspelen", "transcoding": "Transcodering", "bitrate": "Bitsnelheid", - "no_active": "Geen Actieve Streams" + "no_active": "Geen Actieve Streams", + "plex_connection_error": "Check Plex Connection" }, "rutorrent": { "active": "Actief", From ad1a3f8395e1920a91e40a89d604ac582ead68f5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 357/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 97.4% (460 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index e4f96dd3..e2652aeb 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -44,7 +44,8 @@ "playing": "正在播放", "transcoding": "轉碼", "bitrate": "位元率", - "no_active": "無播放活動" + "no_active": "無播放活動", + "plex_connection_error": "Check Plex Connection" }, "jellyseerr": { "pending": "待下載", From b3e9bb6cc2d5683ec1f4e7dc0aa03cce290115cf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 358/788] Translated using Weblate (Catalan) Currently translated at 55.0% (260 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 5d4082da..78339842 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -80,7 +80,8 @@ "playing": "Reproduint", "transcoding": "Transcodificant", "bitrate": "Taxa de bits", - "no_active": "Sense transmissions actives" + "no_active": "Sense transmissions actives", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Taxa", From 160352d4361db9666f0fe06763aea4dfa6794acb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:42 +0000 Subject: [PATCH 359/788] Translated using Weblate (Polish) Currently translated at 79.2% (374 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 5df12a52..bb26b3a9 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -37,7 +37,8 @@ "playing": "Odtwarzanie", "transcoding": "Transkodowanie", "bitrate": "Bitrate", - "no_active": "Brak aktywnych strumieni" + "no_active": "Brak aktywnych strumieni", + "plex_connection_error": "Check Plex Connection" }, "speedtest": { "download": "Pobieranie", From 9b33d1acf169a96b81e85970222b9d4fad1b687f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 360/788] Translated using Weblate (Swedish) Currently translated at 27.9% (132 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 0d61d400..beec1e63 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -62,7 +62,8 @@ "playing": "Spelar", "transcoding": "Omkodning", "bitrate": "Bitrate", - "no_active": "Inga aktiva strömmar" + "no_active": "Inga aktiva strömmar", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Hastighet", From 4dc4ba9b2cd275f881c19de368a00dc8c99e9317 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:45 +0000 Subject: [PATCH 361/788] Translated using Weblate (Croatian) Currently translated at 99.3% (469 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index a5390eb1..26f1305b 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -104,7 +104,8 @@ "playing": "Reprodukcija", "transcoding": "Prekodiranje", "bitrate": "Stopa bitova", - "no_active": "Nema aktivnih prijenosa" + "no_active": "Nema aktivnih prijenosa", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Stopa", From e4392fc82188351185dc3e2cc79a48b61bc6dc26 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 362/788] Translated using Weblate (Hungarian) Currently translated at 25.4% (120 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index f4b1509c..b38cb94b 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -76,7 +76,8 @@ "playing": "Lejátszás folyamatban", "transcoding": "Átkódolás", "bitrate": "Bitráta", - "no_active": "Nincs aktív lejátszás" + "no_active": "Nincs aktív lejátszás", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Ráta", From e34fd362d2cb63d4605afe4136b523350164c22a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 363/788] Translated using Weblate (Hebrew) Currently translated at 21.1% (100 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 6fa54751..e23f3565 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -62,7 +62,8 @@ "playing": "מנגן", "transcoding": "מקודד", "bitrate": "סיביות", - "no_active": "אין הזרמות פעילות" + "no_active": "אין הזרמות פעילות", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "יחס", From 449d170430815b5b7c47456a44c2753501d599fb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 364/788] Translated using Weblate (Romanian) Currently translated at 31.7% (150 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 3fc07bff..03030efc 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -92,7 +92,8 @@ "no_active": "Niciun stream activ", "playing": "Activ", "transcoding": "Transcodare", - "bitrate": "Bitrate" + "bitrate": "Bitrate", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rată", From 44fbc31dd6631958cf010457aab49a03f5c92dc1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 365/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 85.5% (404 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index 57e524fe..f9f11e8a 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -90,7 +90,8 @@ "playing": "Reproduzindo", "transcoding": "Transcodificando", "bitrate": "Taxa de bits", - "no_active": "Sem transmissões ativas" + "no_active": "Sem transmissões ativas", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Taxa", From 7f8b66f72d588edabbd520f3447d03b2eb8ef3a4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 366/788] Translated using Weblate (Yue (Traditional)) Currently translated at 24.7% (117 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 48accfc0..a9f72f53 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -13,7 +13,8 @@ "playing": "播放緊", "no_active": "無任何活動", "transcoding": "轉碼緊", - "bitrate": "比特率" + "bitrate": "比特率", + "plex_connection_error": "Check Plex Connection" }, "transmission": { "download": "下載速度", From a8bb116ea1a0801d6198e3d30238794fb8b62129 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 367/788] Translated using Weblate (Finnish) Currently translated at 37.5% (177 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 306c5b2b..705d2127 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -62,7 +62,8 @@ "playing": "Toistaa", "transcoding": "Transkoodaa", "bitrate": "Bittinopeus", - "no_active": "Ei aktiivisia striimejä" + "no_active": "Ei aktiivisia striimejä", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Nopeus", From 96e9a5cc7244043e4b089d1203fb6b67ab4f0940 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 368/788] Translated using Weblate (Telugu) Currently translated at 45.5% (215 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 9957fc7d..8647276c 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -79,7 +79,8 @@ "playing": "ఆడుతున్నారు", "transcoding": "ట్రాన్స్‌కోడింగ్", "bitrate": "బిట్రేట్", - "no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు" + "no_active": "యాక్టివ్ స్ట్రీమ్‌లు లేవు", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "రేట్", From cc4bf9d2213ca2ed0c17fd6ee09768ee9f090d38 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 369/788] Translated using Weblate (Bulgarian) Currently translated at 9.7% (46 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 594d2870..9f0afa40 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -89,7 +89,8 @@ "playing": "Възпроизвежда", "transcoding": "Конвертира", "bitrate": "Честота", - "no_active": "Няма активни потоци" + "no_active": "Няма активни потоци", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rate", From 3d18618fc11f17939356febe8841546c7fcbd59e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 370/788] Translated using Weblate (Turkish) Currently translated at 83.2% (393 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index bb98d412..b6138c69 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -79,7 +79,8 @@ "playing": "Oynatılıyor", "transcoding": "Dönüştürülüyor", "bitrate": "Bit Oranı", - "no_active": "Aktif akış yok" + "no_active": "Aktif akış yok", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Oran", From b6e8952d824e862c44bfe4b3a8dde0c5aba16c9c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 371/788] Translated using Weblate (Serbian) Currently translated at 1.9% (9 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index f60d3e22..1755cd6f 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -79,7 +79,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rate", From d97e729e4182d355cdb6a261dabb9204955512a0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:46 +0000 Subject: [PATCH 372/788] Translated using Weblate (Arabic) Currently translated at 55.5% (262 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 2f80f21a..ca7b23e0 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -141,7 +141,8 @@ "playing": "يشتغل", "transcoding": "التحويل", "bitrate": "معدل البت", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "معدل", From 2251b0cb3eed638e8083be62b7503fc608d1d9ff Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 373/788] Translated using Weblate (Czech) Currently translated at 94.0% (444 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 0666943b..19cc09ba 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -95,7 +95,8 @@ "playing": "Přehrává", "transcoding": "Překódovávání", "bitrate": "Přenosová rychlost", - "no_active": "Žádný aktivní stream" + "no_active": "Žádný aktivní stream", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rychlost", From 5ef4638d8859729dcf10a17e9b7b229956bd6695 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 374/788] Translated using Weblate (Danish) Currently translated at 41.7% (197 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 3ff03563..f1f161c7 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -234,7 +234,8 @@ "playing": "Afspiller", "transcoding": "Transcoder", "bitrate": "Bitrate", - "no_active": "Ingen Aktive Streams" + "no_active": "Ingen Aktive Streams", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rate", From 328fd8b6b6dff0f3329a01de3488c157c117e8b1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 375/788] Translated using Weblate (Malay) Currently translated at 53.1% (251 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 77b3a759..f34bc2f4 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -200,7 +200,8 @@ "playing": "Sedang Dimainkan", "transcoding": "Transkoding", "bitrate": "Kadar bit", - "no_active": "Tiada Strim Aktif" + "no_active": "Tiada Strim Aktif", + "plex_connection_error": "Check Plex Connection" }, "plex": { "streams": "Strim Aktif", From 36e63e9736c9172ca520ca5dde8189cdcc4c1155 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 376/788] Translated using Weblate (Hindi) Currently translated at 1.9% (9 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 88a100c3..5620a9f1 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -117,7 +117,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rate", From d612c0073bbb4798863fe39b23680e188166e553 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 377/788] Translated using Weblate (Esperanto) Currently translated at 30.7% (145 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index c3c1c87d..0279feff 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -87,7 +87,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Rate", From d49c3dfa06255d4898a779f3c89ce795f6779184 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 378/788] Translated using Weblate (Ukrainian) Currently translated at 99.7% (471 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index f2b5e629..35d24ea4 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -198,7 +198,8 @@ "playing": "Відтворення", "transcoding": "Перекодування", "bitrate": "Бітрейт", - "no_active": "Немає активних потоків" + "no_active": "Немає активних потоків", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Швидкість", From 5636537998e00bb54be90a9f920812e6cb452ffe Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:43 +0000 Subject: [PATCH 379/788] Translated using Weblate (Japanese) Currently translated at 81.5% (385 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 61cd0983..3d09852a 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -136,7 +136,8 @@ "playing": "再生中", "transcoding": "変換中", "bitrate": "ビットレート", - "no_active": "アクティブストリームなし" + "no_active": "アクティブストリームなし", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "接続されたAP", From f091f8a6ad965814829c4bb233d6ab80d450e8ed Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 380/788] Translated using Weblate (Latvian) Currently translated at 25.0% (118 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 8022ec13..9b95cfe8 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -97,7 +97,8 @@ "playing": "Atskaņo", "transcoding": "Pārkodē", "bitrate": "Bitrate", - "no_active": "Nav aktīvu straumju" + "no_active": "Nav aktīvu straumju", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "Savienotie piekļuves punkti", From cacdd2348a8ea24bf2a8dd5ca2f50e2743e3c985 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:42 +0000 Subject: [PATCH 381/788] Translated using Weblate (Thai) Currently translated at 9.9% (47 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 6122992f..fdbe0a08 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -139,7 +139,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "Connected APs", From d7f6113fd97f70d98d95805ce86ec5ba4ca1434a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 382/788] Translated using Weblate (Slovak) Currently translated at 1.9% (9 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 8d3a80ec..1fbb4ca8 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -221,7 +221,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "Connected APs", From 84d82309b0b4370d96717b6f3785c4ffa0aadd6c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:47 +0000 Subject: [PATCH 383/788] Translated using Weblate (Korean) Currently translated at 36.6% (173 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index a3a1d9e6..be7640a6 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -111,7 +111,8 @@ "playing": "재생 중", "transcoding": "트랜스코딩", "bitrate": "비트레이트", - "no_active": "활성 스트림 없음" + "no_active": "활성 스트림 없음", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "연결된 AP", From d71893903e487fdf79871b0b6f5cef39fc021d21 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:42 +0000 Subject: [PATCH 384/788] Translated using Weblate (Greek) Currently translated at 30.2% (143 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index a3be18f2..aaaaa88b 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -162,7 +162,8 @@ "playing": "Αναπαράγει", "transcoding": "Μετακωδικοποίηση", "bitrate": "Ρυθμός bit", - "no_active": "Δεν υπάρχουν ενεργές ροές" + "no_active": "Δεν υπάρχουν ενεργές ροές", + "plex_connection_error": "Check Plex Connection" }, "nzbget": { "rate": "Ρυθμός", From 176b8fe6a91e414c205049164c1a81f06b85e3ff Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:44 +0000 Subject: [PATCH 385/788] Translated using Weblate (Slovenian) Currently translated at 99.7% (471 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index cb5f57e2..1f05dabd 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -168,7 +168,8 @@ "transcoding": "Transkodira", "bitrate": "Pasovna širina", "playing": "Predvaja", - "no_active": "Ni aktivne vsebine" + "no_active": "Ni aktivne vsebine", + "plex_connection_error": "Check Plex Connection" }, "flood": { "download": "Prenos", From f063e20dabfa123a3dd1380b8806e91a087b55d5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:42 +0000 Subject: [PATCH 386/788] Translated using Weblate (Indonesian) Currently translated at 3.1% (15 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 51daa4f1..8e9cc1d2 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -643,7 +643,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "jdownloader": { "downloadCount": "Queue Count", From ba1b075cb879b8021caeb6603bbfddd1bbf0c12c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Fri, 14 Jul 2023 06:21:48 +0000 Subject: [PATCH 387/788] Translated using Weblate (Basque) Currently translated at 6.9% (33 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index bd1e8311..6eca4339 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -189,7 +189,8 @@ "playing": "Playing", "transcoding": "Transcoding", "bitrate": "Bitrate", - "no_active": "No Active Streams" + "no_active": "No Active Streams", + "plex_connection_error": "Check Plex Connection" }, "omada": { "connectedAp": "Connected APs", From 2843ae3f797aac49849a7ea79a0621c957971ad0 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Fri, 14 Jul 2023 06:29:16 +0000 Subject: [PATCH 388/788] Translated using Weblate (French) Currently translated at 100.0% (472 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 95e90114..6ff00e8f 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -57,7 +57,7 @@ "transcoding": "Transcodage", "bitrate": "Débit", "no_active": "Aucun flux actif", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Vérifier la connexion à Plex" }, "rutorrent": { "active": "Actif", From 7f83623ded7baf34e26ada89822d0e594d586a22 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sat, 15 Jul 2023 09:35:47 +0000 Subject: [PATCH 389/788] Translated using Weblate (Spanish) Currently translated at 100.0% (472 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 0f1a419a..17c26d7c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -57,7 +57,7 @@ "transcoding": "Transcodificando", "bitrate": "Tasa de bits", "no_active": "Sin transmisiones activas", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Comprueba la conexión a Plex" }, "rutorrent": { "active": "Activo", From 29f3217abbcffc4a2373c86dad9f16c086e337d3 Mon Sep 17 00:00:00 2001 From: Ash Ed Date: Mon, 17 Jul 2023 14:20:14 +0000 Subject: [PATCH 390/788] Translated using Weblate (Russian) Currently translated at 90.2% (426 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 81df368f..a0cf1c94 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -57,7 +57,7 @@ "transcoding": "Транскодирование", "bitrate": "Битрейт", "no_active": "Нет активных трансляций", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Проверьте соединение с Plex" }, "rutorrent": { "active": "Активный", @@ -65,22 +65,22 @@ "download": "Загрузка" }, "sonarr": { - "wanted": "Хотел", + "wanted": "Желаемое", "queued": "В очереди", "series": "Серии", - "queue": "Queue", + "queue": "Очередь", "unknown": "Unknown" }, "radarr": { - "wanted": "Хотел", + "wanted": "Желаемое", "queued": "В очереди", "movies": "Фильмы", "missing": "Пропущено", - "queue": "Queue", + "queue": "Очередь", "unknown": "Unknown" }, "readarr": { - "wanted": "Хотел", + "wanted": "Желаемое", "queued": "В очереди", "books": "Книги" }, @@ -176,9 +176,9 @@ "missingMovies": "Отсутствующие фильмы" }, "lidarr": { - "wanted": "Хотел", + "wanted": "Желаемое", "queued": "В очереди", - "artists": "Artists" + "artists": "Артисты" }, "adguard": { "queries": "Запросы", @@ -613,8 +613,8 @@ "cpuUsage": "CPU Usage", "memUsage": "MEM Usage", "systemTempC": "System Temp", - "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", + "poolUsage": "Использование пула", + "volumeUsage": "Использование тома", "invalid": "Invalid" }, "pfsense": { @@ -628,23 +628,23 @@ "temp": "Temp" }, "caddy": { - "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "upstreams": "Апстримы", + "requests": "Текущие запросы", + "requests_failed": "Неудачные запросы" }, "evcc": { - "home_power": "Consumption", + "home_power": "Потребление", "pv_power": "Production", "battery_soc": "Battery", "grid_power": "Grid", - "charge_power": "Charger", + "charge_power": "Зарядка", "watt_hour": "Wh" }, "pialert": { "total": "Total", "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "new_devices": "Новые устройства", + "down_alerts": "Оповещения о сбоях" }, "jdownloader": { "downloadCount": "Queue Count", From 2aeb3f4c89a2110b27dd8d5b8a0ee52212505c83 Mon Sep 17 00:00:00 2001 From: Dan Date: Sun, 16 Jul 2023 18:54:45 +0000 Subject: [PATCH 391/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (472 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 35d24ea4..4e1a0cc9 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -199,7 +199,7 @@ "transcoding": "Перекодування", "bitrate": "Бітрейт", "no_active": "Немає активних потоків", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Перевірте з'єднання Plex" }, "nzbget": { "rate": "Швидкість", From 597a8d8b9a8a1304580392e7ce36b749d027848f Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 19 Jul 2023 22:56:11 -0700 Subject: [PATCH 392/788] Fixes oversized logo --- src/components/widgets/logo/logo.jsx | 90 ++++++++++++++-------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx index 3a4a2565..bb58a765 100644 --- a/src/components/widgets/logo/logo.jsx +++ b/src/components/widgets/logo/logo.jsx @@ -10,56 +10,58 @@ export default function Logo({ options }) { {options.icon ? : // fallback to homepage logo - - - - - - + + + + - + + + + - - - - + + +
    } From 6ceaf3686c4cfb734bfb1f7a14b58c96e6f5f010 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:37:30 -0700 Subject: [PATCH 393/788] Fix weather icon DOM warnings --- src/components/widgets/openmeteo/icon.jsx | 7 ------- src/components/widgets/openmeteo/openmeteo.jsx | 13 +++++-------- src/components/widgets/openweathermap/icon.jsx | 7 ------- src/components/widgets/openweathermap/weather.jsx | 12 ++++-------- src/components/widgets/weather/icon.jsx | 7 ------- src/components/widgets/weather/weather.jsx | 11 ++++------- src/components/widgets/widget/widget_icon.jsx | 5 ++--- 7 files changed, 15 insertions(+), 47 deletions(-) delete mode 100644 src/components/widgets/openmeteo/icon.jsx delete mode 100644 src/components/widgets/openweathermap/icon.jsx delete mode 100644 src/components/widgets/weather/icon.jsx diff --git a/src/components/widgets/openmeteo/icon.jsx b/src/components/widgets/openmeteo/icon.jsx deleted file mode 100644 index 12d93fcb..00000000 --- a/src/components/widgets/openmeteo/icon.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import mapIcon from "utils/weather/openmeteo-condition-map"; - -export default function Icon({ condition, timeOfDay }) { - const IconComponent = mapIcon(condition, timeOfDay); - - return ; -} diff --git a/src/components/widgets/openmeteo/openmeteo.jsx b/src/components/widgets/openmeteo/openmeteo.jsx index 040a3b6b..0614d925 100644 --- a/src/components/widgets/openmeteo/openmeteo.jsx +++ b/src/components/widgets/openmeteo/openmeteo.jsx @@ -10,8 +10,7 @@ import ContainerButton from "../widget/container_button"; import WidgetIcon from "../widget/widget_icon"; import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; - -import Icon from "./icon"; +import mapIcon from "../../../utils/weather/openmeteo-condition-map"; function Widget({ options }) { const { t } = useTranslation(); @@ -33,10 +32,8 @@ function Widget({ options }) { } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.current_weather.weathercode, - timeOfDay: data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night" - }; + const condition = data.current_weather.weathercode; + const timeOfDay = data.current_weather.time > data.daily.sunrise[0] && data.current_weather.time < data.daily.sunset[0] ? "day" : "night"; return @@ -47,8 +44,8 @@ function Widget({ options }) { unit, })} - {t(`wmo.${data.current_weather.weathercode}-${weatherInfo.timeOfDay}`)} - + {t(`wmo.${data.current_weather.weathercode}-${timeOfDay}`)} + ; } diff --git a/src/components/widgets/openweathermap/icon.jsx b/src/components/widgets/openweathermap/icon.jsx deleted file mode 100644 index a2b01ba1..00000000 --- a/src/components/widgets/openweathermap/icon.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import mapIcon from "utils/weather/owm-condition-map"; - -export default function Icon({ condition, timeOfDay }) { - const IconComponent = mapIcon(condition, timeOfDay); - - return ; -} diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index a857f13a..32c81f06 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -10,9 +10,7 @@ import ContainerButton from "../widget/container_button"; import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; import WidgetIcon from "../widget/widget_icon"; - -import Icon from "./icon"; - +import mapIcon from "../../../utils/weather/owm-condition-map"; function Widget({ options }) { const { t, i18n } = useTranslation(); @@ -35,15 +33,13 @@ function Widget({ options }) { const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.weather[0].id, - timeOfDay: data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night" - }; + const condition = data.weather[0].id; + const timeOfDay = data.dt > data.sys.sunrise && data.dt < data.sys.sunset ? "day" : "night"; return {options.label && `${options.label}, ` }{t("common.number", { value: data.main.temp, style: "unit", unit })} {data.weather[0].description} - + ; } diff --git a/src/components/widgets/weather/icon.jsx b/src/components/widgets/weather/icon.jsx deleted file mode 100644 index 79406ae7..00000000 --- a/src/components/widgets/weather/icon.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import mapIcon from "utils/weather/condition-map"; - -export default function Icon({ condition, timeOfDay }) { - const IconComponent = mapIcon(condition, timeOfDay); - - return ; -} diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 702ea669..20d4eeee 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -10,8 +10,7 @@ import PrimaryText from "../widget/primary_text"; import SecondaryText from "../widget/secondary_text"; import WidgetIcon from "../widget/widget_icon"; import ContainerButton from "../widget/container_button"; - -import Icon from "./icon"; +import mapIcon from "../../../utils/weather/condition-map"; function Widget({ options }) { const { t, i18n } = useTranslation(); @@ -33,10 +32,8 @@ function Widget({ options }) { } const unit = options.units === "metric" ? "celsius" : "fahrenheit"; - const weatherInfo = { - condition: data.current.condition.code, - timeOfDay: data.current.is_day ? "day" : "night", - }; + const condition = data.current.condition.code; + const timeOfDay = data.current.is_day ? "day" : "night"; return @@ -48,7 +45,7 @@ function Widget({ options }) { })} {data.current.condition.text} - + ; } diff --git a/src/components/widgets/widget/widget_icon.jsx b/src/components/widgets/widget/widget_icon.jsx index 9766a879..557cba01 100644 --- a/src/components/widgets/widget/widget_icon.jsx +++ b/src/components/widgets/widget/widget_icon.jsx @@ -1,6 +1,5 @@ -export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInfo = {} }) { +export default function WidgetIcon({ icon, size = "s", pulse = false }) { const Icon = icon; - const { condition, timeOfDay } = weatherInfo; let additionalClasses = "text-theme-800 dark:text-theme-200 "; switch (size) { @@ -14,5 +13,5 @@ export default function WidgetIcon({ icon, size = "s", pulse = false, weatherInf additionalClasses += "animate-pulse "; } - return ; + return ; } From 08ac9fe7c9b5f291aac3e3002150e51aa6783f0a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:38:45 -0700 Subject: [PATCH 394/788] Fix glances widget key warnings --- src/components/widgets/glances/glances.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index e5cf3fbd..6a65df18 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -37,7 +37,7 @@ export default function Widget({ options }) { { options.cputemp && } { options.disk && !Array.isArray(options.disk) && } - { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => )} + { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => )} { options.uptime && } { options.label && } ; @@ -108,7 +108,7 @@ export default function Widget({ options }) { expanded={options.expanded} /> {disks.map((disk) => ( - Date: Wed, 19 Jul 2023 19:37:12 +0000 Subject: [PATCH 395/788] Translated using Weblate (Croatian) Currently translated at 99.5% (470 of 472 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 26f1305b..4e9f3187 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -105,7 +105,7 @@ "transcoding": "Prekodiranje", "bitrate": "Stopa bitova", "no_active": "Nema aktivnih prijenosa", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Provjeri Plex vezu" }, "nzbget": { "rate": "Stopa", From 60fa4205d38f7d5e8e707e3364aa782c9bf0c9b8 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 20 Jul 2023 14:40:27 -0700 Subject: [PATCH 396/788] Handle sensors without warning property --- src/components/widgets/glances/glances.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index 6a65df18..cf580630 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -37,7 +37,7 @@ export default function Widget({ options }) { { options.cputemp && } { options.disk && !Array.isArray(options.disk) && } - { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => )} + { options.disk && Array.isArray(options.disk) && options.disk.map((disk) => ) } { options.uptime && } { options.label && } ; @@ -50,7 +50,7 @@ export default function Widget({ options }) { if (options.cputemp && cpuSensors) { try { mainTemp = cpuSensors.reduce((acc, s) => acc + s.value, 0) / cpuSensors.length; - maxTemp = Math.max(cpuSensors.reduce((acc, s) => acc + s.warning, 0) / cpuSensors.length, maxTemp); + maxTemp = Math.max(cpuSensors.reduce((acc, s) => acc + (s.warning > 0 ? s.warning : 0), 0) / cpuSensors.length, maxTemp); if (unit === "fahrenheit") { mainTemp = convertToFahrenheit(mainTemp); maxTemp = convertToFahrenheit(maxTemp); From 04cccfdd60f4cfe7f229481e8b23ddccc0075208 Mon Sep 17 00:00:00 2001 From: Nitzan Miranda Date: Wed, 19 Jul 2023 22:59:27 +0300 Subject: [PATCH 397/788] Adds azure pipelines widget Add translation for result and status remove buildId value translation Fixes syntax in azure pipelines hide running status if finished --- public/locales/en/common.json | 10 +++++++ src/utils/proxy/handlers/credentialed.js | 3 ++ src/widgets/azurePipelines/component.jsx | 36 ++++++++++++++++++++++++ src/widgets/azurePipelines/widget.js | 8 ++++++ src/widgets/components.js | 1 + src/widgets/widgets.js | 2 ++ 6 files changed, 60 insertions(+) create mode 100644 src/widgets/azurePipelines/component.jsx create mode 100644 src/widgets/azurePipelines/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 6f490c22..18753c46 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -664,5 +664,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 8fa975d0..3d181ead 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -61,6 +61,9 @@ export default async function credentialedProxyHandler(req, res, map) { } else { headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; } + } + else if (widget.type === "azurePipelines") { + headers.Authorization = `Basic ${Buffer.from(`$:${widget.key}`).toString("base64")}`; } else { headers["X-API-Key"] = `${widget.key}`; } diff --git a/src/widgets/azurePipelines/component.jsx b/src/widgets/azurePipelines/component.jsx new file mode 100644 index 00000000..a47296f3 --- /dev/null +++ b/src/widgets/azurePipelines/component.jsx @@ -0,0 +1,36 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { widget } = service; + + const { data: pipelineData, error: pipelineError } = useWidgetAPI(widget); + + if (pipelineError) { + return ; + } + + if (!pipelineData || !Array.isArray(pipelineData.value)) { + return ( + + + + + ); + } + + return ( + + {pipelineData.value[0].result ? + : + + } + + + ); +} diff --git a/src/widgets/azurePipelines/widget.js b/src/widgets/azurePipelines/widget.js new file mode 100644 index 00000000..708266d2 --- /dev/null +++ b/src/widgets/azurePipelines/widget.js @@ -0,0 +1,8 @@ +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; + +const widget = { + api: "https://dev.azure.com/{organization}/{project}/_apis/build/Builds?branchName={branchName}&definitions={definitionId}", + proxyHandler: credentialedProxyHandler, +}; + +export default widget; \ No newline at end of file diff --git a/src/widgets/components.js b/src/widgets/components.js index 3359dd02..de114cc4 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -5,6 +5,7 @@ const components = { audiobookshelf: dynamic(() => import("./audiobookshelf/component")), authentik: dynamic(() => import("./authentik/component")), autobrr: dynamic(() => import("./autobrr/component")), + azurePipelines: dynamic(() => import("./azurePipelines/component")), bazarr: dynamic(() => import("./bazarr/component")), caddy: dynamic(() => import("./caddy/component")), changedetectionio: dynamic(() => import("./changedetectionio/component")), diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index fc209414..f88bde59 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -2,6 +2,7 @@ import adguard from "./adguard/widget"; import audiobookshelf from "./audiobookshelf/widget"; import authentik from "./authentik/widget"; import autobrr from "./autobrr/widget"; +import azurePipelines from "./azurePipelines/widget"; import bazarr from "./bazarr/widget"; import caddy from "./caddy/widget"; import changedetectionio from "./changedetectionio/widget"; @@ -91,6 +92,7 @@ const widgets = { audiobookshelf, authentik, autobrr, + azurePipelines, bazarr, caddy, changedetectionio, From b957f57dc5885709d442fd70eae3e715b0969ec1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:46 +0000 Subject: [PATCH 398/788] Translated using Weblate (German) Currently translated at 95.2% (457 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 0ed40270..8bd743ea 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 0a2dd3f7406e148eac8dd4e821c93e3a75862731 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:47 +0000 Subject: [PATCH 399/788] Translated using Weblate (Spanish) Currently translated at 98.3% (472 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 17c26d7c..9e3e6093 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Serie", "totalFiles": "Archivos" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 85712090267fa7d14e42986ac47ecb79f5524037 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:48 +0000 Subject: [PATCH 400/788] Translated using Weblate (French) Currently translated at 98.3% (472 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 6ff00e8f..2000d6fe 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Séries", "totalFiles": "Fichiers" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 3b0cd4c3d68d2c3a3c1e811de591bf11e1b3d1bf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:49 +0000 Subject: [PATCH 401/788] Translated using Weblate (Portuguese) Currently translated at 86.4% (415 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index ebe2bf87..add4573a 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -664,5 +664,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 492e8fa5fd7615aebf91436759bd42ba953fd424 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:38 +0000 Subject: [PATCH 402/788] Translated using Weblate (Russian) Currently translated at 88.7% (426 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index a0cf1c94..ed23a2a9 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "inProgress": "In Progress", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled" } } From 8386dc2774be0cfaa1de4f9cb0a3aedd891c513f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:39 +0000 Subject: [PATCH 403/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 92.5% (444 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index b22992b6..448893aa 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b9f468bcd92c9d73ea0395312d56979ce0ecedd1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:32 +0000 Subject: [PATCH 404/788] Translated using Weblate (Italian) Currently translated at 97.9% (470 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 4eb941b3..0e45b23f 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Serie", "totalFiles": "File" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From f412b988b67a74dd16ab5d4f2057dd3132005bfd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:32 +0000 Subject: [PATCH 405/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.6% (80 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 8f55f79c..38dd3012 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Filer" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From d6201a670bdc411fc9447f24e41f00605e08d5a0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:33 +0000 Subject: [PATCH 406/788] Translated using Weblate (Vietnamese) Currently translated at 9.1% (44 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index a865f6c2..d3341c7a 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b5c1b541688d7be063122eba2a3226043ccc7031 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:36 +0000 Subject: [PATCH 407/788] Translated using Weblate (Dutch) Currently translated at 50.2% (241 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index aabb0624..5bcce505 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 027b85997b8f5d317a180c0e3c09b4fcd764e2cf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:41 +0000 Subject: [PATCH 408/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 95.8% (460 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index e2652aeb..2f9d8622 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 7ff8ba7c6a137d97535bbec8d169404c7139bddd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:36 +0000 Subject: [PATCH 409/788] Translated using Weblate (Catalan) Currently translated at 54.1% (260 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 78339842..83fc95a4 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b404337e1fa87ce809dd5f2612c6493ea280e9de Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:25 +0000 Subject: [PATCH 410/788] Translated using Weblate (Polish) Currently translated at 77.9% (374 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index bb26b3a9..c44da833 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b98131cdac3733a1d885b17c2c8d2f751049f11d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:37 +0000 Subject: [PATCH 411/788] Translated using Weblate (Swedish) Currently translated at 27.5% (132 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index beec1e63..d432afc4 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -655,5 +655,15 @@ "kavita": { "totalFiles": "Files", "seriesCount": "Series" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b9f144f5762060eb155bf2e15b7d5e5187d08db5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:39 +0000 Subject: [PATCH 412/788] Translated using Weblate (Croatian) Currently translated at 97.9% (470 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 4e9f3187..49e13492 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Serije", "totalFiles": "Datoteke" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 972a9ab3954868aeba182e1f0627e500bee517f1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:44 +0000 Subject: [PATCH 413/788] Translated using Weblate (Hungarian) Currently translated at 25.0% (120 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index b38cb94b..9c787454 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From d0f5d0bbb07849ed02e37cec0cc0d4da8f9134af Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:44 +0000 Subject: [PATCH 414/788] Translated using Weblate (Hebrew) Currently translated at 20.8% (100 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index e23f3565..78545f39 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b03a0103e88034b048b26d9c6fb66da6bfe821b2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:41 +0000 Subject: [PATCH 415/788] Translated using Weblate (Romanian) Currently translated at 31.2% (150 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 03030efc..96fd22b4 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From d1fc7a0e07975a1884b24c30fe809ff9bdc277c4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:40 +0000 Subject: [PATCH 416/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 84.1% (404 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index f9f11e8a..55e45757 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 9952123468a2d56d215737a822566c9abb7c432f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:51 +0000 Subject: [PATCH 417/788] Translated using Weblate (Yue (Traditional)) Currently translated at 24.3% (117 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index a9f72f53..91775685 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 8633db187fd85dcd348e2eb2d397d04da6b27841 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:49 +0000 Subject: [PATCH 418/788] Translated using Weblate (Finnish) Currently translated at 36.8% (177 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 705d2127..ad457f2c 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From ab03d4b1ecc407a3c2a9e90913f1b5467e091384 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:50 +0000 Subject: [PATCH 419/788] Translated using Weblate (Telugu) Currently translated at 44.7% (215 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 8647276c..a73051a4 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -655,5 +655,15 @@ "kavita": { "totalFiles": "Files", "seriesCount": "Series" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From feaf1ed503b7a87214cec38e8e9e33c4358a9f5a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:34 +0000 Subject: [PATCH 420/788] Translated using Weblate (Bulgarian) Currently translated at 9.5% (46 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 9f0afa40..d0dea6a9 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 095acc098e7e8415dd099fedea204e4720b8eb25 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:35 +0000 Subject: [PATCH 421/788] Translated using Weblate (Turkish) Currently translated at 81.8% (393 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index b6138c69..0aac8e9f 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From a898be0bd76e1b8eddedbfe836c424f57ea12349 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:42 +0000 Subject: [PATCH 422/788] Translated using Weblate (Serbian) Currently translated at 1.8% (9 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 1755cd6f..bb387d90 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 308d1e16c6a622412b0e42cfd2413d86968af32c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:43 +0000 Subject: [PATCH 423/788] Translated using Weblate (Arabic) Currently translated at 54.5% (262 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index ca7b23e0..6ff5acab 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 9879b3e27243889617d681097cc052584c49f324 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:28 +0000 Subject: [PATCH 424/788] Translated using Weblate (Czech) Currently translated at 92.5% (444 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 19cc09ba..ed5dc276 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b880b3496b72a7d30db24748131eac2de665c400 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:25 +0000 Subject: [PATCH 425/788] Translated using Weblate (Danish) Currently translated at 41.0% (197 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index f1f161c7..797f9f4a 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 687f992b5692a450b42b02a19a902ebdf7e75763 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:26 +0000 Subject: [PATCH 426/788] Translated using Weblate (Malay) Currently translated at 52.2% (251 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index f34bc2f4..a25ed71f 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 54ad99d83f496e19514b0616a1bf3148c4d781c7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:27 +0000 Subject: [PATCH 427/788] Translated using Weblate (Hindi) Currently translated at 1.8% (9 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 5620a9f1..70dd22e8 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 80432b88b17711731f7ee9514935ccee3d7c63b3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:29 +0000 Subject: [PATCH 428/788] Translated using Weblate (Esperanto) Currently translated at 30.2% (145 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 0279feff..4a1ae6f3 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From b49d9ca4090fe2bc2cd4ebdc726abdd3baf4ed4f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:30 +0000 Subject: [PATCH 429/788] Translated using Weblate (Ukrainian) Currently translated at 98.3% (472 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 4e1a0cc9..3a5b2817 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Серій", "totalFiles": "Файлів" + }, + "azurePipelines": { + "failed": "Failed", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 38235a05fbfa55f9a6e755c9dfee509fffb1a859 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:28 +0000 Subject: [PATCH 430/788] Translated using Weblate (Japanese) Currently translated at 80.2% (385 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 3d09852a..5a0eccee 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From f313be4e41f812dc66911279cf9c1b699bcc1de0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:30 +0000 Subject: [PATCH 431/788] Translated using Weblate (Latvian) Currently translated at 24.5% (118 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 9b95cfe8..696b4d85 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "result": "Result", + "inProgress": "In Progress" } } From f76d3509cedc8cc72de3c96e07bc07d18445ea6e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:22 +0000 Subject: [PATCH 432/788] Translated using Weblate (Thai) Currently translated at 9.7% (47 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index fdbe0a08..64300953 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 5f3a657ebac35290ac06aaaf660f7a93fcbe53bd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:45 +0000 Subject: [PATCH 433/788] Translated using Weblate (Slovak) Currently translated at 1.8% (9 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 1fbb4ca8..710b5007 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From a8c2e6500bc5a33b5f097b93789dd9c7c2be04de Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:46 +0000 Subject: [PATCH 434/788] Translated using Weblate (Korean) Currently translated at 36.0% (173 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index be7640a6..f1325b75 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From d223687e076bd3818b9ae00d3212e000d0101ae2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:23 +0000 Subject: [PATCH 435/788] Translated using Weblate (Greek) Currently translated at 29.7% (143 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index aaaaa88b..506a25d7 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From f230260633595901cf229548f28f98a8cf0eabfe Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:31 +0000 Subject: [PATCH 436/788] Translated using Weblate (Slovenian) Currently translated at 98.1% (471 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 1f05dabd..60cee85f 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Serije", "totalFiles": "Datoteke" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 376a66559160c1c74fceb6e32f44d7ba817b5185 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:24 +0000 Subject: [PATCH 437/788] Translated using Weblate (Indonesian) Currently translated at 3.1% (15 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 8e9cc1d2..d3cab359 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From 89e385777394910c67b126f254d13ea502d225a3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Jul 2023 21:47:51 +0000 Subject: [PATCH 438/788] Translated using Weblate (Basque) Currently translated at 6.8% (33 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 6eca4339..27685703 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -655,5 +655,15 @@ "kavita": { "seriesCount": "Series", "totalFiles": "Files" + }, + "azurePipelines": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress" } } From f410dd302b38c0d10a05f032518789ef3b6691f8 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 20 Jul 2023 23:03:15 -0700 Subject: [PATCH 439/788] Fixes handling of fields specified via labels --- src/components/services/widget/container.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/services/widget/container.jsx b/src/components/services/widget/container.jsx index 4b8a06ca..7d883336 100644 --- a/src/components/services/widget/container.jsx +++ b/src/components/services/widget/container.jsx @@ -18,7 +18,8 @@ export default function Container({ error = false, children, service }) { const childrenArray = Array.isArray(children) ? children : [children]; let visibleChildren = childrenArray; - const fields = service?.widget?.fields; + let fields = service?.widget?.fields; + if (typeof service.widget.fields === 'string') fields = JSON.parse(service.widget.fields); const type = service?.widget?.type; if (fields && type) { // if the field contains a "." then it most likely contains a common loc value From 2d1aed42522b8647510dbb8260a2135c02121be9 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Thu, 20 Jul 2023 15:13:31 -0400 Subject: [PATCH 440/788] Improve disclosure collapse animation --- src/components/bookmarks/group.jsx | 25 ++++++++++++++++--------- src/components/services/group.jsx | 26 +++++++++++++++++--------- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index ef0a5ab8..44db59fc 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -1,3 +1,4 @@ +import { useRef } from "react"; import classNames from "classnames"; import { Disclosure, Transition } from '@headlessui/react'; import { MdKeyboardArrowDown } from "react-icons/md"; @@ -6,6 +7,7 @@ import ErrorBoundary from "components/errorboundry"; import List from "components/bookmarks/list"; export default function BookmarksGroup({ group, disableCollapse }) { + const panel = useRef(); return (
    @@ -15,19 +17,24 @@ export default function BookmarksGroup({ group, disableCollapse }) {

    {group.name}

    { + panel.current.style.height = `${panel.current.scrollHeight}px`; + setTimeout(() => {panel.current.style.height = `0`}, 1); + }} + beforeEnter={() => { + panel.current.style.height = `0px`; + setTimeout(() => {panel.current.style.height = `${panel.current.scrollHeight}px`}, 1); + }} > - + diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index eb64cc3d..b3805c4f 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -1,3 +1,4 @@ +import { useRef } from "react"; import classNames from "classnames"; import { Disclosure, Transition } from '@headlessui/react'; import { MdKeyboardArrowDown } from "react-icons/md"; @@ -7,6 +8,8 @@ import ResolvedIcon from "components/resolvedicon"; export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) { + const panel = useRef(); + return (
    {services.name} { + panel.current.style.height = `${panel.current.scrollHeight}px`; + setTimeout(() => {panel.current.style.height = `0`}, 1); + }} + beforeEnter={() => { + panel.current.style.height = `0px`; + setTimeout(() => {panel.current.style.height = `${panel.current.scrollHeight}px`}, 1); + }} > - + From 7022ae9be20ef185f84eb0d9dcf23d7cef644f60 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 21 Jul 2023 14:32:15 +0000 Subject: [PATCH 441/788] Translated using Weblate (Spanish) Currently translated at 100.0% (480 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 9e3e6093..c4712669 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -657,13 +657,13 @@ "totalFiles": "Archivos" }, "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" + "result": "Resultado", + "status": "Estado", + "buildId": "ID de la compilación", + "succeeded": "Con éxito", + "notStarted": "No iniciado", + "failed": "Fallido", + "canceled": "Cancelado", + "inProgress": "En proceso" } } From a6c6b6f4c76d34c9d00d590f20da63a21fa39150 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Thu, 20 Jul 2023 22:08:21 +0000 Subject: [PATCH 442/788] Translated using Weblate (French) Currently translated at 100.0% (480 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 2000d6fe..79187db3 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -657,13 +657,13 @@ "totalFiles": "Fichiers" }, "azurePipelines": { - "result": "Result", - "status": "Status", + "result": "Résultat", + "status": "Statut", "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" + "succeeded": "Réussi", + "notStarted": "Non démarré", + "failed": "Échoué", + "canceled": "Annulé", + "inProgress": "En cours" } } From c749c02ff5529d9ca4a4eb1b4587f1500d72d6bd Mon Sep 17 00:00:00 2001 From: The Re Date: Fri, 21 Jul 2023 14:32:18 +0000 Subject: [PATCH 443/788] Translated using Weblate (Hungarian) Currently translated at 99.7% (479 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 654 +++++++++++++++++----------------- 1 file changed, 327 insertions(+), 327 deletions(-) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 9c787454..56bfd877 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -4,15 +4,15 @@ "free": "Szabad", "used": "Használt", "load": "Terhelés", - "cpu": "CPU", + "cpu": "Processzor", "mem": "MEM", "temp": "TEMP", "max": "Max", - "uptime": "UP", - "months": "mo", - "days": "d", - "hours": "h", - "minutes": "m" + "uptime": "FUT", + "months": "hó", + "days": "n", + "hours": "ó", + "minutes": "p" }, "docker": { "rx": "RX", @@ -20,20 +20,20 @@ "mem": "MEM", "cpu": "CPU", "offline": "Offline", - "error": "Error", - "unknown": "Unknown", - "unhealthy": "Unhealthy", - "running": "Running", - "starting": "Starting", - "not_found": "Not Found", - "exited": "Exited", - "partial": "Partial", - "healthy": "Healthy" + "error": "Hiba", + "unknown": "Ismeretlen", + "unhealthy": "Egészségtelen", + "running": "Futó", + "starting": "Indul", + "not_found": "Nem található", + "exited": "Kilépett", + "partial": "Részleges", + "healthy": "Egészséges" }, "lidarr": { "wanted": "Keresett", "queued": "Sorban áll", - "artists": "Artists" + "artists": "Előadók" }, "readarr": { "wanted": "Keresett", @@ -48,16 +48,16 @@ "missing_type": "Hiányzó Widget Típus: {{type}}", "api_error": "API Hiba", "status": "Státusz", - "information": "Information", + "information": "Információ", "url": "URL", - "raw_error": "Raw Error", - "response_data": "Response Data" + "raw_error": "Nyers hiba", + "response_data": "Válaszadatok" }, "weather": { "current": "Aktuális hely", "allow": "Kattints az engedélyezéshez", "updating": "Frissítés", - "wait": "Kérlek várj" + "wait": "Kérjük várjon" }, "search": { "placeholder": "Keresés…" @@ -77,7 +77,7 @@ "transcoding": "Átkódolás", "bitrate": "Bitráta", "no_active": "Nincs aktív lejátszás", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Plex kapcsolat ellenőrzése" }, "nzbget": { "rate": "Ráta", @@ -110,16 +110,16 @@ "wanted": "Keresett", "queued": "Sorban áll", "series": "Sorozat", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Várólista", + "unknown": "Ismeretlen" }, "radarr": { "wanted": "Keresett", "queued": "Sorban áll", "movies": "Filmek", - "missing": "Missing", - "queue": "Queue", - "unknown": "Unknown" + "missing": "Hiányzik", + "queue": "Várólista", + "unknown": "Ismeretlen" }, "ombi": { "pending": "Függőben", @@ -135,13 +135,13 @@ "pending": "Függőben", "approved": "Engedélyezett", "available": "Elérhető", - "processing": "Processing" + "processing": "Feldolgozás" }, "pihole": { "queries": "Lekérdezések", "blocked": "Blokkolt", "gravity": "Gravitáció", - "blocked_percent": "Blocked %" + "blocked_percent": "Blokkolt %" }, "adguard": { "queries": "Lekérdezések", @@ -193,184 +193,184 @@ "errored": "Hibás" }, "mastodon": { - "user_count": "Users", - "status_count": "Posts", - "domain_count": "Domains" + "user_count": "Felhasználók", + "status_count": "Posztok", + "domain_count": "Domainek" }, "strelaysrv": { - "numActiveSessions": "Sessions", - "numConnections": "Connections", - "dataRelayed": "Relayed", - "transferRate": "Rate" + "numActiveSessions": "Munkamenetek", + "numConnections": "Csatlakozások", + "dataRelayed": "Átirányított", + "transferRate": "Ráta" }, "authentik": { - "users": "Users", - "loginsLast24H": "Logins (24h)", - "failedLoginsLast24H": "Failed Logins (24h)" + "users": "Felhasználók", + "loginsLast24H": "Bejelentkezések (24 óra)", + "failedLoginsLast24H": "Sikertelen bejelentkezések (24h)" }, "proxmox": { - "mem": "MEM", - "cpu": "CPU", + "mem": "RAM", + "cpu": "Processzor", "lxc": "LXC", - "vms": "VMs" + "vms": "VM-ek" }, "unifi": { - "users": "Users", - "uptime": "System Uptime", - "days": "Days", + "users": "Felhasználók", + "uptime": "Rendszer üzemidő", + "days": "Napok", "wan": "WAN", - "lan_users": "LAN Users", - "wlan_users": "WLAN Users", - "up": "UP", - "down": "DOWN", - "wait": "Please wait", + "lan_users": "LAN Felhasználók", + "wlan_users": "WLAN Felhasználók", + "up": "FUT", + "down": "ÁLL", + "wait": "Kérjük várjon", "lan": "LAN", "wlan": "WLAN", - "devices": "Devices", - "lan_devices": "LAN Devices", - "wlan_devices": "WLAN Devices", - "empty_data": "Subsystem status unknown" + "devices": "Eszközök", + "lan_devices": "LAN Eszközök", + "wlan_devices": "WLAN Eszközök", + "empty_data": "Az alrendszer állapota ismeretlen" }, "plex": { - "streams": "Active Streams", - "movies": "Movies", - "tv": "TV Shows", - "albums": "Albums" + "streams": "Aktív Stream-ek", + "movies": "Filmek", + "tv": "TV műsorok", + "albums": "Albumok" }, "glances": { - "cpu": "CPU", - "wait": "Please wait", - "temp": "TEMP", - "uptime": "UP", - "days": "d", - "hours": "h", - "load": "Load", - "warn": "Warn", - "total": "Total", - "free": "Free", - "used": "Used" + "cpu": "Processzor", + "wait": "Kérjük várjon", + "temp": "HŐMÉRSÉKLET", + "uptime": "FUT", + "days": "n", + "hours": "ó", + "load": "Kapacitáskihasználás", + "warn": "Figyelmeztet", + "total": "Összes", + "free": "Szabad", + "used": "Felhasznált" }, "changedetectionio": { - "totalObserved": "Total Observed", - "diffsDetected": "Diffs Detected" + "totalObserved": "Összes Megfigyelt", + "diffsDetected": "Észlelt különbségek" }, "wmo": { "0-day": "Napos", "0-night": "Derült", - "3-day": "Cloudy", - "3-night": "Cloudy", - "45-day": "Foggy", - "53-day": "Drizzle", - "56-night": "Light Freezing Drizzle", - "57-day": "Freezing Drizzle", + "3-day": "Felhős", + "3-night": "Felhős", + "45-day": "Ködös", + "53-day": "Szitálás", + "56-night": "Enyhe fagyos szitálás", + "57-day": "Fagyos szitálás", "1-day": "Többnyire napos", "1-night": "Többnyire derült", - "2-day": "Partly Cloudy", - "2-night": "Partly Cloudy", - "45-night": "Foggy", - "48-day": "Foggy", - "48-night": "Foggy", - "51-day": "Light Drizzle", - "51-night": "Light Drizzle", - "57-night": "Freezing Drizzle", - "61-day": "Light Rain", - "61-night": "Light Rain", - "53-night": "Drizzle", - "55-day": "Heavy Drizzle", - "55-night": "Heavy Drizzle", - "56-day": "Light Freezing Drizzle", - "63-day": "Rain", - "63-night": "Rain", - "65-day": "Heavy Rain", - "65-night": "Heavy Rain", - "66-day": "Freezing Rain", - "66-night": "Freezing Rain", - "67-day": "Freezing Rain", - "67-night": "Freezing Rain", - "71-day": "Light Snow", - "71-night": "Light Snow", - "73-day": "Snow", - "73-night": "Snow", - "75-day": "Heavy Snow", - "75-night": "Heavy Snow", - "77-day": "Snow Grains", - "77-night": "Snow Grains", - "80-day": "Light Showers", - "80-night": "Light Showers", - "81-day": "Showers", - "81-night": "Showers", - "82-day": "Heavy Showers", - "82-night": "Heavy Showers", - "85-day": "Snow Showers", - "85-night": "Snow Showers", - "86-day": "Snow Showers", - "86-night": "Snow Showers", - "95-day": "Thunderstorm", - "95-night": "Thunderstorm", - "96-day": "Thunderstorm With Hail", - "96-night": "Thunderstorm With Hail", - "99-day": "Thunderstorm With Hail", - "99-night": "Thunderstorm With Hail" + "2-day": "Részben felhős", + "2-night": "Részben felhős", + "45-night": "Ködös", + "48-day": "Ködös", + "48-night": "Ködös", + "51-day": "Enyhe szitálás", + "51-night": "Enyhe szitálás", + "57-night": "Fagyos szitálás", + "61-day": "Enyhe eső", + "61-night": "Enyhe eső", + "53-night": "Szitálás", + "55-day": "Erős szitálás", + "55-night": "Erős szitálás", + "56-day": "Enyhe fagyos szitálás", + "63-day": "Eső", + "63-night": "Eső", + "65-day": "Heves eső", + "65-night": "Heves eső", + "66-day": "Ónos eső", + "66-night": "Ónos eső", + "67-day": "Ónos eső", + "67-night": "Ónos eső", + "71-day": "Enyhe havazás", + "71-night": "Enyhe havazás", + "73-day": "Hó", + "73-night": "Hó", + "75-day": "Erős havazás", + "75-night": "Erős havazás", + "77-day": "Hódara", + "77-night": "Hódara", + "80-day": "Enyhe záporok", + "80-night": "Enyhe záporok", + "81-day": "Záporok", + "81-night": "Záporok", + "82-day": "Heves záporok", + "82-night": "Heves záporok", + "85-day": "Hózáporok", + "85-night": "Hózáporok", + "86-day": "Hózáporok", + "86-night": "Hózáporok", + "95-day": "Zivatar", + "95-night": "Zivatar", + "96-day": "Zivatar jégesővel", + "96-night": "Zivatar jégesővel", + "99-day": "Zivatar jégesővel", + "99-night": "Zivatar jégesővel" }, "quicklaunch": { - "bookmark": "Bookmark", - "service": "Service", - "search": "Search", - "custom": "Custom", - "visit": "Visit", + "bookmark": "Könyvjelző", + "service": "Szolgáltatás", + "search": "Keresés", + "custom": "Egyedi", + "visit": "Megnéz", "url": "URL" }, "homebridge": { - "available_update": "System", - "updates": "Updates", - "update_available": "Update Available", - "up_to_date": "Up to Date", - "child_bridges": "Child Bridges", + "available_update": "Rendszer", + "updates": "Frissítések", + "update_available": "Elérhető Frissítés", + "up_to_date": "Naprakész", + "child_bridges": "Gyerek Hidak", "child_bridges_status": "{{ok}}/{{total}}", - "up": "Up", - "pending": "Pending", - "down": "Down" + "up": "Fut", + "pending": "Függőben", + "down": "Áll" }, "autobrr": { - "approvedPushes": "Approved", - "rejectedPushes": "Rejected", - "filters": "Filters", - "indexers": "Indexers" + "approvedPushes": "Jóváhagyott", + "rejectedPushes": "Elutasított", + "filters": "Szűrők", + "indexers": "Indexelők" }, "watchtower": { - "containers_scanned": "Scanned", - "containers_updated": "Updated", - "containers_failed": "Failed" + "containers_scanned": "Beolvasott", + "containers_updated": "Frissített", + "containers_failed": "Sikertelen" }, "tubearchivist": { - "downloads": "Queue", - "videos": "Videos", - "channels": "Channels", - "playlists": "Playlists" + "downloads": "Várólista", + "videos": "Videók", + "channels": "Csatornák", + "playlists": "Lejátszási listák" }, "truenas": { - "load": "System Load", - "uptime": "Uptime", - "alerts": "Alerts", + "load": "Rendszerterheltség", + "uptime": "Üzemidő", + "alerts": "Riasztások", "time": "{{value, number(style: unit; unitDisplay: long;)}}" }, "navidrome": { - "nothing_streaming": "No Active Streams", - "please_wait": "Please Wait" + "nothing_streaming": "Nincsenek Aktív Stream-ek", + "please_wait": "Kérjük Várjon" }, "pyload": { - "speed": "Speed", - "active": "Active", - "queue": "Queue", - "total": "Total" + "speed": "Sebesség", + "active": "Aktív", + "queue": "Várólista", + "total": "Összes" }, "gluetun": { - "public_ip": "Public IP", - "region": "Region", - "country": "Country" + "public_ip": "Nyilvános IP-cím", + "region": "Régió", + "country": "Ország" }, "hdhomerun": { - "channels": "Channels", + "channels": "Csatornák", "hd": "HD" }, "ping": { @@ -378,197 +378,197 @@ "ping": "Ping" }, "scrutiny": { - "passed": "Passed", - "failed": "Failed", - "unknown": "Unknown" + "passed": "Megfelelt", + "failed": "Sikertelen", + "unknown": "Ismeretlen" }, "paperlessngx": { - "inbox": "Inbox", - "total": "Total" + "inbox": "Beérkezett", + "total": "Összes" }, "deluge": { - "download": "Download", + "download": "Letöltés", "seed": "Seed", - "upload": "Upload", + "upload": "Feltöltés", "leech": "Leech" }, "flood": { - "download": "Download", - "upload": "Upload", + "download": "Letöltés", + "upload": "Feltöltés", "leech": "Leech", "seed": "Seed" }, "tdarr": { - "queue": "Queue", - "processed": "Processed", - "errored": "Errored", - "saved": "Saved" + "queue": "Várólista", + "processed": "Feldolgozott", + "errored": "Hibás", + "saved": "Mentett" }, "miniflux": { - "read": "Read", - "unread": "Unread" + "read": "Olvasott", + "unread": "Olvasatlan" }, "nextdns": { - "wait": "Please Wait", - "no_devices": "No Device Data Received" + "wait": "Kérjük Várjon", + "no_devices": "Nincs fogadott eszközadat" }, "common": { "bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibitrate": "{{value, rate(bits: true; binary: true)}}" }, "omada": { - "activeUser": "Active devices", - "alerts": "Alerts", - "connectedAp": "Connected APs", - "connectedGateway": "Connected gateways", - "connectedSwitches": "Connected switches" + "activeUser": "Aktív eszközök", + "alerts": "Riasztások", + "connectedAp": "Csatlakoztatott AP-k", + "connectedGateway": "Csatlakoztatott gateway-ek", + "connectedSwitches": "Csatlakoztatott switch-ek" }, "downloadstation": { - "download": "Download", - "upload": "Upload", + "download": "Letöltés", + "upload": "Feltöltés", "leech": "Leech", "seed": "Seed" }, "mikrotik": { - "cpuLoad": "CPU Load", - "memoryUsed": "Memory Used", - "uptime": "Uptime", - "numberOfLeases": "Leases" + "cpuLoad": "Processzor Terhelés", + "memoryUsed": "Felhasznált Memória", + "uptime": "Üzemidő", + "numberOfLeases": "Bérletek" }, "xteve": { - "streams_all": "All Streams", - "streams_active": "Active Streams", - "streams_xepg": "XEPG Channels" + "streams_all": "Minden Stream", + "streams_active": "Aktív Stream-ek", + "streams_xepg": "XEPG Csatornák" }, "opnsense": { - "cpu": "CPU Load", - "memory": "Active Memory", - "wanUpload": "WAN Upload", - "wanDownload": "WAN Download" + "cpu": "Processzor Terhelés", + "memory": "Aktív Memória", + "wanUpload": "WAN Feltöltés", + "wanDownload": "WAN Letöltés" }, "moonraker": { - "layers": "Layers", - "printer_state": "Printer State", - "print_status": "Print Status", - "print_progress": "Progress" + "layers": "Rétegek", + "printer_state": "Nyomtató Állapota", + "print_status": "Nyomtatás Állapota", + "print_progress": "Folyamat" }, "medusa": { - "wanted": "Wanted", - "queued": "Queued", - "series": "Series" + "wanted": "Keresett", + "queued": "Sorba állítva", + "series": "Sorozatok" }, "octoprint": { - "printer_state": "Status", - "temp_tool": "Tool temp", - "temp_bed": "Bed temp", - "job_completion": "Completion" + "printer_state": "Állapot", + "temp_tool": "Szerszám hőmérséklet", + "temp_bed": "Ágy Hőmérséklet", + "job_completion": "Teljesítés" }, "cloudflared": { - "origin_ip": "Origin IP", - "status": "Status" + "origin_ip": "Eredeti IP", + "status": "Állapot" }, "proxmoxbackupserver": { - "datastore_usage": "Datastore", - "failed_tasks_24h": "Failed Tasks 24h", - "cpu_usage": "CPU", - "memory_usage": "Memory" + "datastore_usage": "Adattár", + "failed_tasks_24h": "Sikertelen feladatok 24h", + "cpu_usage": "Processzor", + "memory_usage": "Memória" }, "immich": { - "users": "Users", - "photos": "Photos", - "videos": "Videos", - "storage": "Storage" + "users": "Felhasználók", + "photos": "Fényképek", + "videos": "Videók", + "storage": "Tárhely" }, "uptimekuma": { - "up": "Sites Up", - "down": "Sites Down", - "uptime": "Uptime", - "incident": "Incident", - "m": "m" + "up": "Futó Webhelyek", + "down": "Nem Elérhető Webhelyek", + "uptime": "Üzemidő", + "incident": "Incidens", + "m": "perc" }, "komga": { - "libraries": "Libraries", - "series": "Series", - "books": "Books" + "libraries": "Könyvtárak", + "series": "Sorozatok", + "books": "Könyvek" }, "mylar": { - "series": "Series", - "issues": "Issues", - "wanted": "Wanted" + "series": "Sorozatok", + "issues": "Problémák", + "wanted": "Keresett" }, "photoprism": { - "albums": "Albums", - "photos": "Photos", - "videos": "Videos", - "people": "People" + "albums": "Albumok", + "photos": "Fényképek", + "videos": "Videók", + "people": "Emberek" }, "diskstation": { - "days": "Days", - "uptime": "Uptime", - "volumeAvailable": "Available" + "days": "Napok", + "uptime": "Üzemidő", + "volumeAvailable": "Elérhető" }, "fileflows": { - "queue": "Queue", - "processing": "Processing", - "processed": "Processed", - "time": "Time" + "queue": "Várólista", + "processing": "Feldolgozás", + "processed": "Feldolgozott", + "time": "Idő" }, "grafana": { - "dashboards": "Dashboards", - "datasources": "Data Sources", - "totalalerts": "Total Alerts", - "alertstriggered": "Alerts Triggered" + "dashboards": "Műszerfalak", + "datasources": "Adatforrások", + "totalalerts": "Összes Riasztás", + "alertstriggered": "Aktivált riasztások" }, "nextcloud": { - "cpuload": "Cpu Load", - "memoryusage": "Memory Usage", - "freespace": "Free Space", - "activeusers": "Active Users", - "numfiles": "Files", - "numshares": "Shared Items" + "cpuload": "Processzor Terhelés", + "memoryusage": "Memória Használat", + "freespace": "Szabad hely", + "activeusers": "Aktív Felhasználók", + "numfiles": "Fájlok", + "numshares": "Megosztott Elemek" }, "kopia": { - "status": "Status", - "size": "Size", - "lastrun": "Last Run", - "nextrun": "Next Run", - "failed": "Failed" + "status": "Állapot", + "size": "Méret", + "lastrun": "Legutóbbi futtatás", + "nextrun": "Következő Futtatás", + "failed": "Sikertelen" }, "unmanic": { - "active_workers": "Active Workers", - "total_workers": "Total Workers", - "records_total": "Queue Length" + "active_workers": "Aktív Dolgozók", + "total_workers": "Összes Dolgozó", + "records_total": "Várólista Hossza" }, "healthchecks": { - "new": "New", + "new": "Új", "up": "Online", - "grace": "In Grace Period", + "grace": "Türelmi idő alatt", "down": "Offline", - "paused": "Paused", - "status": "Status", - "last_ping": "Last Ping", - "never": "No pings yet" + "paused": "Szünetel", + "status": "Állapot", + "last_ping": "Legutóbbi Ping", + "never": "Még nincsenek ping-ek" }, "pterodactyl": { - "servers": "Servers", - "nodes": "Nodes" + "servers": "Szerverek", + "nodes": "Node-ok" }, "prometheus": { - "targets_up": "Targets Up", - "targets_down": "Targets Down", - "targets_total": "Total Targets" + "targets_up": "Célpontok Futnak", + "targets_down": "Célpontok Állnak", + "targets_total": "Összes Célpont" }, "minecraft": { - "players": "Players", - "version": "Version", - "status": "Status", + "players": "Lejátszók", + "version": "Verzió", + "status": "Állapot", "up": "Online", "down": "Offline" }, "ghostfolio": { - "gross_percent_today": "Today", - "gross_percent_1y": "One year", - "gross_percent_max": "All time" + "gross_percent_today": "Ma", + "gross_percent_1y": "Egy év", + "gross_percent_max": "Mindig" }, "audiobookshelf": { "podcasts": "Podcast", @@ -577,93 +577,93 @@ "booksDuration": "Időtartam" }, "homeassistant": { - "people_home": "People Home", - "lights_on": "Lights On", - "switches_on": "Switches On" + "people_home": "Emberek otthon", + "lights_on": "Fények bekapcsolva", + "switches_on": "Kapcsolók felkapcsolva" }, "freshrss": { - "subscriptions": "Subscriptions", - "unread": "Unread" + "subscriptions": "Előfizetések", + "unread": "Olvasatlan" }, "channelsdvrserver": { - "shows": "Shows", - "recordings": "Recordings", - "scheduled": "Scheduled", - "passes": "Passes" + "shows": "Műsorok", + "recordings": "Felvételek", + "scheduled": "Ütemezett", + "passes": "Engedélyek" }, "whatsupdocker": { - "monitoring": "Monitoring", - "updates": "Updates" + "monitoring": "Nyomonkövetés", + "updates": "Frissítések" }, "tailscale": { - "address": "Address", - "expires": "Expires", - "never": "Never", - "last_seen": "Last Seen", - "now": "Now", + "address": "Cím", + "expires": "Lejár", + "never": "Soha", + "last_seen": "Utoljára látott", + "now": "Most", "years": "{{number}}y", "weeks": "{{number}}w", "days": "{{number}}d", "minutes": "{{number}}m", "seconds": "{{number}}s", - "ago": "{{value}} Ago", + "ago": "{{value}} Ezelőtt", "hours": "{{number}}h" }, "qnap": { - "cpuUsage": "CPU Usage", - "memUsage": "MEM Usage", - "systemTempC": "System Temp", - "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "cpuUsage": "Processzor Használat", + "memUsage": "Memória Használat", + "systemTempC": "Rendszerhőmérséklet", + "poolUsage": "Pool Használat", + "volumeUsage": "Kötet Használat", + "invalid": "Érvénytelen" }, "pfsense": { - "load": "Load Avg", - "memory": "Mem Usage", - "wanStatus": "WAN Status", - "up": "Up", - "down": "Down", - "temp": "Temp", - "disk": "Disk Usage", + "load": "Átlagos terhelés", + "memory": "RAM Használat", + "wanStatus": "WAN Állapot", + "up": "Fut", + "down": "Áll", + "temp": "Hőmérséklet", + "disk": "Lemezhasználat", "wanIP": "WAN IP" }, "caddy": { - "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "upstreams": "Upstreamek", + "requests": "Jelenlegi kérelmek", + "requests_failed": "Sikertelen kérelmek" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", + "pv_power": "Termelés", + "battery_soc": "Akkumulátor", + "grid_power": "Rács", + "home_power": "Fogyasztás", + "charge_power": "Töltő", "watt_hour": "Wh" }, "pialert": { - "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "total": "Összes", + "connected": "Csatlakoztatott", + "new_devices": "Új Eszközök", + "down_alerts": "Leállási Figyelmeztetések" }, "jdownloader": { - "downloadSpeed": "Download Speed", - "downloadCount": "Queue Count", - "downloadTotalBytes": "Size", - "downloadBytesRemaining": "Remaining" + "downloadSpeed": "Sebesség", + "downloadCount": "Összes függőben lévő", + "downloadTotalBytes": "Méret", + "downloadBytesRemaining": "Fennmaradó" }, "kavita": { - "seriesCount": "Series", - "totalFiles": "Files" + "seriesCount": "Sorozatok", + "totalFiles": "Fájlok" }, "azurePipelines": { - "result": "Result", - "status": "Status", + "result": "Eredmény", + "status": "Állapot", "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" + "succeeded": "Sikeres", + "notStarted": "Nincs elindítva", + "failed": "Sikertelen", + "canceled": "Megszakítva", + "inProgress": "Folyamatban" } } From d2c1226d747e9058c35023eef4a2b17160aa7641 Mon Sep 17 00:00:00 2001 From: Dan Date: Sat, 22 Jul 2023 09:32:15 +0000 Subject: [PATCH 444/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (480 of 480 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 3a5b2817..86008450 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -657,13 +657,13 @@ "totalFiles": "Файлів" }, "azurePipelines": { - "failed": "Failed", - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "canceled": "Canceled", - "inProgress": "In Progress" + "failed": "Невдача", + "result": "Результат", + "status": "Стан", + "buildId": "ID збірки", + "succeeded": "Успішно", + "notStarted": "Не розпочато", + "canceled": "Скасовано", + "inProgress": "В процесі" } } From aa9b682f5fb37a19fe22dcef438be303d45a511e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Alves?= Date: Sun, 23 Jul 2023 13:58:03 -0100 Subject: [PATCH 445/788] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index baeb5841..0a81bb08 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ pnpm dev Open [http://localhost:3000](http://localhost:3000) to start. -This is a [Next.js](https://nextjs.org/) application, see their doucmentation for more information: +This is a [Next.js](https://nextjs.org/) application, see their documentation for more information: ## Contributors From 92ed6dc1cb03f1a86eb1152e1a46b577d4b75243 Mon Sep 17 00:00:00 2001 From: Johan Steen Date: Mon, 24 Jul 2023 12:28:03 +0700 Subject: [PATCH 446/788] Add snapshot host and path to Kopia widget --- src/utils/config/service-helpers.js | 6 ++++++ src/widgets/kopia/component.jsx | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index e99582b2..dc625f2e 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -291,6 +291,8 @@ export function cleanServiceGroups(groups) { volume, // diskstation widget, enableQueue, // sonarr/radarr node, // Proxmox + snapshotHost, // kopia + snapshotPath, } = cleanedService.widget; let fieldsList = fields; @@ -345,6 +347,10 @@ export function cleanServiceGroups(groups) { if (["diskstation", "qnap"].includes(type)) { if (volume) cleanedService.widget.volume = volume; } + if (type === "kopia") { + if (snapshotHost) cleanedService.widget.snapshotHost = snapshotHost; + if (snapshotPath) cleanedService.widget.snapshotPath = snapshotPath; + } } return cleanedService; diff --git a/src/widgets/kopia/component.jsx b/src/widgets/kopia/component.jsx index 46690990..9a7a76ac 100755 --- a/src/widgets/kopia/component.jsx +++ b/src/widgets/kopia/component.jsx @@ -41,7 +41,12 @@ export default function Component({ service }) { return ; } - const source = statusData?.sources[0]; + const snapshotHost = service.widget?.snapshotHost; + const snapshotPath = service.widget?.snapshotPath; + + const source = statusData?.sources + .filter(el => snapshotHost ? el.source.host === snapshotHost : true) + .filter(el => snapshotPath ? el.source.path === snapshotPath : true)[0]; if (!statusData || !source) { return ( From 115bb432ff5f3d11f662bf1820089decbb1a9cb4 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 25 Jul 2023 12:02:13 -0700 Subject: [PATCH 447/788] Ensure spacing with custom logo --- src/components/widgets/logo/logo.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/widgets/logo/logo.jsx b/src/components/widgets/logo/logo.jsx index bb58a765..83432561 100644 --- a/src/components/widgets/logo/logo.jsx +++ b/src/components/widgets/logo/logo.jsx @@ -8,7 +8,9 @@ export default function Logo({ options }) { {options.icon ? - : +
    + +
    : // fallback to homepage logo
    Date: Wed, 26 Jul 2023 02:31:42 +0200 Subject: [PATCH 448/788] Support custom colors for icons (#1724) * Add custom colors to resolvedicon.jsx Enables appending a color code (e.g. "#123456") to all mdi and si icons, in order to change their color to a per-icon custom one. * Streamline code for custom icon colors in resolvedicon.jsx Removed redundant if statement when defaulting to theme colors if no custom icon color code is provided * Update resolvedicon.jsx Remove unnecessary variable, restoring the fallback code in case no custom icon color is provided. * Update resolvedicon.jsx - test for custom color suffix Changed if condition from string.match to string.test and expanded regex to also include upper case letters. * Update resolvedicon.jsx - DRY Removed repetition, slimmed down if statement. Also reverse previous commit as it did not work as intended. * Update resolvedicon.jsx - upper case color hex codes Update regular expression to also allow for upper case letters as part of the hex color code, as either are valid when describing an objects color. * Refactor custom color code --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- src/components/resolvedicon.jsx | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/components/resolvedicon.jsx b/src/components/resolvedicon.jsx index fa9fa68d..6e28ee24 100644 --- a/src/components/resolvedicon.jsx +++ b/src/components/resolvedicon.jsx @@ -33,11 +33,22 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log } // check mdi- or si- prefixed icons - const prefix = icon.split("-")[0] + const prefix = icon.split("-")[0]; if (prefix in iconSetURLs) { - // get icon source - const iconName = icon.replace(`${prefix}-`, "").replace(".svg", ""); + // default to theme setting + let iconName = icon.replace(`${prefix}-`, "").replace(".svg", ""); + let iconColor = settings.iconStyle === "theme" ? + `rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` : + "linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))"; + + // use custom hex color if provided + const colorMatches = icon.match(/[#][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]$/i) + if (colorMatches?.length) { + iconName = icon.replace(`${prefix}-`, "").replace(".svg", "").replace(`-${colorMatches[0]}`, ""); + iconColor = `${colorMatches[0]}`; + } + const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`; return ( @@ -47,16 +58,13 @@ export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "log height, maxWidth: '100%', maxHeight: '100%', - background: settings.iconStyle === "theme" ? - `rgb(var(--color-${ theme === "dark" ? 300 : 900 }) / var(--tw-text-opacity, 1))` : - "linear-gradient(180deg, rgb(var(--color-logo-start)), rgb(var(--color-logo-stop)))", + background: `${iconColor}`, mask: `url(${iconSource}) no-repeat center / contain`, WebkitMask: `url(${iconSource}) no-repeat center / contain`, }} /> ); } - // fallback to dashboard-icons if (icon.endsWith(".svg")) { From 454d8d03c239ffb88ed89211bc7fbdd207286c6e Mon Sep 17 00:00:00 2001 From: Mega-Volti <119437326+Mega-Volti@users.noreply.github.com> Date: Thu, 27 Jul 2023 01:35:48 +0200 Subject: [PATCH 449/788] Add custom refresh rate setting to resources Simplify resources refresh variable, enforce minimum Add custom refresh rate to uptime Add custom refresh rate to memory Add custom refresh rate to disk Add custom refresh rate to cputemp Add custom refresh rate to CPU --- src/components/widgets/resources/cpu.jsx | 4 ++-- src/components/widgets/resources/cputemp.jsx | 4 ++-- src/components/widgets/resources/disk.jsx | 4 ++-- src/components/widgets/resources/memory.jsx | 4 ++-- src/components/widgets/resources/resources.jsx | 14 ++++++++------ src/components/widgets/resources/uptime.jsx | 4 ++-- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/components/widgets/resources/cpu.jsx b/src/components/widgets/resources/cpu.jsx index 12972fe8..514b845f 100644 --- a/src/components/widgets/resources/cpu.jsx +++ b/src/components/widgets/resources/cpu.jsx @@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next"; import Resource from "../widget/resource"; import Error from "../widget/error"; -export default function Cpu({ expanded }) { +export default function Cpu({ expanded, refresh = 1500 }) { const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/resources?type=cpu`, { - refreshInterval: 1500, + refreshInterval: refresh, }); if (error || data?.error) { diff --git a/src/components/widgets/resources/cputemp.jsx b/src/components/widgets/resources/cputemp.jsx index ba6d9b73..684fe2f6 100644 --- a/src/components/widgets/resources/cputemp.jsx +++ b/src/components/widgets/resources/cputemp.jsx @@ -9,11 +9,11 @@ function convertToFahrenheit(t) { return t * 9/5 + 32 } -export default function CpuTemp({ expanded, units }) { +export default function CpuTemp({ expanded, units, refresh = 1500 }) { const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/resources?type=cputemp`, { - refreshInterval: 1500, + refreshInterval: refresh, }); if (error || data?.error) { diff --git a/src/components/widgets/resources/disk.jsx b/src/components/widgets/resources/disk.jsx index ab56624d..ccda2410 100644 --- a/src/components/widgets/resources/disk.jsx +++ b/src/components/widgets/resources/disk.jsx @@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next"; import Resource from "../widget/resource"; import Error from "../widget/error"; -export default function Disk({ options, expanded }) { +export default function Disk({ options, expanded, refresh = 1500 }) { const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/resources?type=disk&target=${options.disk}`, { - refreshInterval: 1500, + refreshInterval: refresh, }); if (error || data?.error) { diff --git a/src/components/widgets/resources/memory.jsx b/src/components/widgets/resources/memory.jsx index 19ae8687..c3dbb277 100644 --- a/src/components/widgets/resources/memory.jsx +++ b/src/components/widgets/resources/memory.jsx @@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next"; import Resource from "../widget/resource"; import Error from "../widget/error"; -export default function Memory({ expanded }) { +export default function Memory({ expanded, refresh = 1500 }) { const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/resources?type=memory`, { - refreshInterval: 1500, + refreshInterval: refresh, }); if (error || data?.error) { diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 0cc2c301..7b226ecb 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -9,16 +9,18 @@ import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units } = options; + let { refresh } = options; + refresh = Math.max(refresh, 1000); return
    - {options.cpu && } - {options.memory && } + {options.cpu && } + {options.memory && } {Array.isArray(options.disk) - ? options.disk.map((disk) => ) - : options.disk && } - {options.cputemp && } - {options.uptime && } + ? options.disk.map((disk) => ) + : options.disk && } + {options.cputemp && } + {options.uptime && }
    {options.label && (
    {options.label}
    diff --git a/src/components/widgets/resources/uptime.jsx b/src/components/widgets/resources/uptime.jsx index 3984975f..73ec0a35 100644 --- a/src/components/widgets/resources/uptime.jsx +++ b/src/components/widgets/resources/uptime.jsx @@ -5,11 +5,11 @@ import { useTranslation } from "next-i18next"; import Resource from "../widget/resource"; import Error from "../widget/error"; -export default function Uptime() { +export default function Uptime({ refresh = 1500 }) { const { t } = useTranslation(); const { data, error } = useSWR(`/api/widgets/resources?type=uptime`, { - refreshInterval: 1500, + refreshInterval: refresh, }); if (error || data?.error) { From 420aa896d7d9c50adc998639e82d29cc3fa2020d Mon Sep 17 00:00:00 2001 From: fredodiable Date: Thu, 27 Jul 2023 07:06:45 +0200 Subject: [PATCH 450/788] Feature: GameDig Widget (#1717) * Adding Counter-Strike: Global Offensive (CSGO) Adding Counter-Strike: Global Offensive (CSGO) widget * Changed to GameDig Converted csgo widget to gamedig Added game server type as widget parameter Added more fields * Limited widget displayed fields to 4 * Moved fields limit to gamedig widget --- package.json | 1 + pnpm-lock.yaml | 375 +++++++++++++++++++++++++++++- public/locales/en/common.json | 9 + public/locales/fr/common.json | 9 + src/widgets/components.js | 1 + src/widgets/gamedig/component.jsx | 59 +++++ src/widgets/gamedig/proxy.js | 37 +++ src/widgets/gamedig/widget.js | 7 + src/widgets/widgets.js | 2 + 9 files changed, 497 insertions(+), 3 deletions(-) create mode 100644 src/widgets/gamedig/component.jsx create mode 100644 src/widgets/gamedig/proxy.js create mode 100644 src/widgets/gamedig/widget.js diff --git a/package.json b/package.json index b46cea8d..8c774188 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "compare-versions": "^5.0.1", "dockerode": "^3.3.4", "follow-redirects": "^1.15.2", + "gamedig": "^4.0.6", "i18next": "^21.9.2", "js-yaml": "^4.1.0", "json-rpc-2.0": "^1.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 344998b0..78cff342 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,6 +19,9 @@ dependencies: follow-redirects: specifier: ^1.15.2 version: 1.15.2 + gamedig: + specifier: ^4.0.6 + version: 4.0.6 i18next: specifier: ^21.9.2 version: 21.10.0 @@ -402,12 +405,24 @@ packages: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: true + /@sindresorhus/is@5.4.1: + resolution: {integrity: sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==} + engines: {node: '>=14.16'} + dev: false + /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: tslib: 2.5.0 dev: false + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + dependencies: + defer-to-connect: 2.0.1 + dev: false + /@tailwindcss/forms@0.5.3(tailwindcss@3.3.0): resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==} peerDependencies: @@ -424,6 +439,10 @@ packages: hoist-non-react-statics: 3.3.2 dev: false + /@types/http-cache-semantics@4.0.1: + resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: false + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -531,6 +550,11 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -545,7 +569,6 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -687,6 +710,12 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /barse@0.4.3: + resolution: {integrity: sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==} + dependencies: + readable-stream: 1.0.34 + dev: false + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false @@ -710,6 +739,10 @@ packages: readable-stream: 3.6.2 dev: false + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -756,6 +789,24 @@ packages: engines: {node: '>= 0.8'} dev: false + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: false + + /cacheable-request@10.2.12: + resolution: {integrity: sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.1 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.2 + mimic-response: 4.0.0 + normalize-url: 8.0.0 + responselike: 3.0.0 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -788,6 +839,30 @@ packages: supports-color: 7.2.0 dev: true + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + dev: false + + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -868,6 +943,13 @@ packages: delayed-stream: 1.0.0 dev: false + /commander@2.8.1: + resolution: {integrity: sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==} + engines: {node: '>= 0.6.x'} + dependencies: + graceful-readlink: 1.0.1 + dev: false + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -877,6 +959,14 @@ packages: resolution: {integrity: sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==} dev: false + /compressjs@1.0.3: + resolution: {integrity: sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q==} + hasBin: true + dependencies: + amdefine: 1.0.1 + commander: 2.8.1 + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -911,6 +1001,21 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -953,6 +1058,13 @@ packages: dependencies: ms: 2.1.2 + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: false + /deep-equal@2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: @@ -979,6 +1091,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: false + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -1049,6 +1166,33 @@ packages: esutils: 2.0.3 dev: true + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: @@ -1074,6 +1218,11 @@ packages: once: 1.4.0 dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} @@ -1491,6 +1640,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /event-to-promise@0.7.0: + resolution: {integrity: sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==} + deprecated: Use promise-toolbox/fromEvent instead + dev: false + /execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -1608,6 +1762,11 @@ packages: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: false + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: false + /form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} @@ -1660,6 +1819,33 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /gamedig@4.0.6: + resolution: {integrity: sha512-h0k9n/e5vNrd9Mh2wyFUp2Vo7ABWbDkdBxKC6FNJLOZiU5d9Z29bntGeYbXtOkcRWoV6Q63wSAJ3jLWxYQkpZw==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + cheerio: 1.0.0-rc.12 + compressjs: 1.0.3 + gbxremote: 0.2.1 + got: 12.6.1 + iconv-lite: 0.6.3 + long: 5.2.3 + minimist: 1.2.8 + punycode: 2.3.0 + varint: 6.0.0 + dev: false + + /gbxremote@0.2.1: + resolution: {integrity: sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==} + engines: {node: '>=0.10'} + dependencies: + any-promise: 1.3.0 + barse: 0.4.3 + event-to-promise: 0.7.0 + string-to-stream: 1.1.1 + xmlrpc: 1.3.2 + dev: false + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: @@ -1765,6 +1951,27 @@ packages: get-intrinsic: 1.2.0 dev: true + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + dependencies: + '@sindresorhus/is': 5.4.1 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.12 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.0 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + dev: false + + /graceful-readlink@1.0.1: + resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} + dev: false + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true @@ -1832,6 +2039,19 @@ packages: void-elements: 3.1.0 dev: false + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -1852,6 +2072,14 @@ packages: sshpk: 1.17.0 dev: false + /http2-wrapper@2.2.0: + resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -1874,6 +2102,13 @@ packages: safer-buffer: 2.1.2 dev: false + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false @@ -2084,6 +2319,14 @@ packages: get-intrinsic: 1.2.0 dev: true + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -2128,6 +2371,10 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: false + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false + /json-rpc-2.0@1.5.1: resolution: {integrity: sha512-ZY/vYl/uUgKN3tNrZMq7w+CGLcoUT+8AzDO/HJZVa+K4XcwgfgES1QDa5y7ieAeh4NgRo3hLexMxgdaiEiK9aA==} dev: false @@ -2176,6 +2423,12 @@ packages: object.assign: 4.1.4 dev: true + /keyv@4.5.2: + resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + dependencies: + json-buffer: 3.0.1 + dev: false + /kuler@2.0.0: resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} dev: false @@ -2229,11 +2482,20 @@ packages: triple-beam: 1.3.0 dev: false + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} dependencies: js-tokens: 4.0.0 + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2278,6 +2540,16 @@ packages: engines: {node: '>=6'} dev: false + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false + + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /minecraft-ping-js@1.0.2: resolution: {integrity: sha512-h9QYG2n+fBKgp520tXBwR354XRzR/w5wXe8CJCmxKm6jbLpAoLODM8Nj5+ssuIVQF8rtxkAnjwv7PH+7ehFzQQ==} dependencies: @@ -2296,7 +2568,6 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} @@ -2438,6 +2709,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /normalize-url@8.0.0: + resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + engines: {node: '>=14.16'} + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -2445,6 +2721,12 @@ packages: path-key: 3.1.1 dev: false + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: false + /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: false @@ -2581,6 +2863,11 @@ packages: dev: false optional: true + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: false + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2602,6 +2889,19 @@ packages: callsites: 3.1.0 dev: true + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: false + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: false + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2746,6 +3046,10 @@ packages: engines: {node: ^14.13.1 || >=16.0.0} dev: false + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -2785,7 +3089,6 @@ packages: /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - dev: true /raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} @@ -2851,6 +3154,27 @@ packages: pify: 2.3.0 dev: true + /readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -2916,6 +3240,10 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: false + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2936,6 +3264,13 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + dependencies: + lowercase-keys: 3.0.0 + dev: false + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2956,6 +3291,10 @@ packages: queue-microtask: 1.2.3 dev: true + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false @@ -3104,6 +3443,13 @@ packages: engines: {node: '>= 0.10.0'} dev: false + /string-to-stream@1.1.1: + resolution: {integrity: sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: @@ -3142,6 +3488,16 @@ packages: es-abstract: 1.21.2 dev: true + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -3601,6 +3957,19 @@ packages: sax: 1.2.4 dev: false + /xmlbuilder@8.2.2: + resolution: {integrity: sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==} + engines: {node: '>=4.0'} + dev: false + + /xmlrpc@1.3.2: + resolution: {integrity: sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==} + engines: {node: '>=0.8', npm: '>=1.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 8.2.2 + dev: false + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 18753c46..6091c0b1 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -674,5 +674,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 79187db3..9bf6d6ef 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -665,5 +665,14 @@ "failed": "Échoué", "canceled": "Annulé", "inProgress": "En cours" + }, + "gamedig": { + "name": "Nom", + "map": "Carte", + "currentPlayers": "Joueurs actuels", + "players": "Joueurs", + "maxPlayers": "Joueurs max", + "bots": "Bots", + "ping": "Ping" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index de114cc4..4b7ef50c 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -22,6 +22,7 @@ const components = { fileflows: dynamic(() => import("./fileflows/component")), flood: dynamic(() => import("./flood/component")), freshrss: dynamic(() => import("./freshrss/component")), + gamedig: dynamic(() => import("./gamedig/component")), ghostfolio: dynamic(() => import("./ghostfolio/component")), gluetun: dynamic(() => import("./gluetun/component")), gotify: dynamic(() => import("./gotify/component")), diff --git a/src/widgets/gamedig/component.jsx b/src/widgets/gamedig/component.jsx new file mode 100644 index 00000000..3ddf909a --- /dev/null +++ b/src/widgets/gamedig/component.jsx @@ -0,0 +1,59 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { widget } = service; + const { data: serverData, error: serverError } = useWidgetAPI(widget, "status"); + const { t } = useTranslation(); + + if(serverError){ + return ; + } + + // Default fields + if (widget.fields == null || widget.fields.length === 0) { + widget.fields = ["map", "currentPlayers", "ping"]; + } + const MAX_ALLOWED_FIELDS = 4; + // Limits max number of displayed fields + if (widget.fields != null && widget.fields.length > MAX_ALLOWED_FIELDS) { + widget.fields = widget.fields.slice(0, MAX_ALLOWED_FIELDS); + } + + if (!serverData) { + return ( + + + + + + + + + + ); + } + + const name = serverData.online ? serverData.name : "-"; + const map = serverData.online ? serverData.map : "-"; + const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-"; + const players = serverData.online ? `${serverData.players}` : "-"; + const maxPlayers = serverData.online ? `${serverData.maxplayers}` : "-"; + const bots = serverData.online ? `${serverData.bots}` : "-"; + const ping = serverData.online ? `${serverData.ping}` : 0; + + return ( + + + + + + + + + + ); +} diff --git a/src/widgets/gamedig/proxy.js b/src/widgets/gamedig/proxy.js new file mode 100644 index 00000000..f0b2e1d9 --- /dev/null +++ b/src/widgets/gamedig/proxy.js @@ -0,0 +1,37 @@ +import createLogger from "utils/logger"; +import getServiceWidget from "utils/config/service-helpers"; + +const proxyName = "gamedigProxyHandler"; +const logger = createLogger(proxyName); +const gamedig = require("gamedig"); + +export default async function gamedigProxyHandler(req, res) { + const { group, service } = req.query; + const serviceWidget = await getServiceWidget(group, service); + const url = new URL(serviceWidget.url); + + try { + const serverData = await gamedig.query({ + type: serviceWidget.serverType, + host: url.hostname, + port: url.port, + givenPortOnly: true, + }); + + res.status(200).send({ + online: true, + name: serverData.name, + map: serverData.map, + players: serverData.players.length, + maxplayers: serverData.maxplayers, + bots: serverData.bots.length, + ping: serverData.ping, + }); + } catch (e) { + logger.error(e); + + res.status(200).send({ + online: false + }); + } +} diff --git a/src/widgets/gamedig/widget.js b/src/widgets/gamedig/widget.js new file mode 100644 index 00000000..c84e95bb --- /dev/null +++ b/src/widgets/gamedig/widget.js @@ -0,0 +1,7 @@ +import gamedigProxyHandler from "./proxy"; + +const widget = { + proxyHandler: gamedigProxyHandler +} + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index f88bde59..6ae47efd 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -17,6 +17,7 @@ import evcc from "./evcc/widget"; import fileflows from "./fileflows/widget"; import flood from "./flood/widget"; import freshrss from "./freshrss/widget"; +import gamedig from "./gamedig/widget"; import ghostfolio from "./ghostfolio/widget"; import gluetun from "./gluetun/widget"; import gotify from "./gotify/widget"; @@ -107,6 +108,7 @@ const widgets = { fileflows, flood, freshrss, + gamedig, ghostfolio, gluetun, gotify, From 259cb955d03b6a3832675b268633e8a5060dfd43 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:38 +0000 Subject: [PATCH 451/788] Translated using Weblate (German) Currently translated at 93.8% (457 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 8bd743ea..a173355c 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "bots": "Bots", + "ping": "Ping", + "maxPlayers": "Max players" } } From fc39c1b45ad01f49bf2459978baf503fbe338f22 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:39 +0000 Subject: [PATCH 452/788] Translated using Weblate (Spanish) Currently translated at 98.5% (480 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c4712669..ba0e64f1 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -665,5 +665,14 @@ "failed": "Fallido", "canceled": "Cancelado", "inProgress": "En proceso" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 3572b53ad6b3616a4619871aa617d75bd1518fcc Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:40 +0000 Subject: [PATCH 453/788] Translated using Weblate (Portuguese) Currently translated at 85.2% (415 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index add4573a..0cedbe01 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -674,5 +674,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 2b21d50ce256b00da56953155898a2bd6b039a97 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:31 +0000 Subject: [PATCH 454/788] Translated using Weblate (Russian) Currently translated at 87.4% (426 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index ed23a2a9..4f73ea7e 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -665,5 +665,14 @@ "notStarted": "Not Started", "failed": "Failed", "canceled": "Canceled" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 2c84b378ef7d12808e773b49e2a29fb1a1b031d9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:32 +0000 Subject: [PATCH 455/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 91.1% (444 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 448893aa..ae3c8ccb 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 374e0c215ec80d3b35b10ea8ef7e917761a19871 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:27 +0000 Subject: [PATCH 456/788] Translated using Weblate (Italian) Currently translated at 96.5% (470 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 0e45b23f..663b9f90 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 16daf4e97caefe265cc7299f9c793e608fbe6d6b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:27 +0000 Subject: [PATCH 457/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.4% (80 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 38dd3012..5619ba90 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 28026a7fa1360458187433c553b39d76f81c61f7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:42 +0000 Subject: [PATCH 458/788] Translated using Weblate (Vietnamese) Currently translated at 9.0% (44 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index d3341c7a..4ea3945e 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From c48d10adcbd5465b682a4d5fbed79237f24fefae Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:29 +0000 Subject: [PATCH 459/788] Translated using Weblate (Dutch) Currently translated at 49.4% (241 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 5bcce505..b01e40cd 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From c43cec32d0be28bbba02114a73eb7223a6bc98f3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:34 +0000 Subject: [PATCH 460/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 94.4% (460 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 2f9d8622..0adcba93 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From c379f3592e216746494dd7343faa46658eb4b6a2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:30 +0000 Subject: [PATCH 461/788] Translated using Weblate (Catalan) Currently translated at 53.3% (260 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 83fc95a4..8849d7c7 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 05ca31ecb6114eb955863f7b2d28413b35530c54 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:21 +0000 Subject: [PATCH 462/788] Translated using Weblate (Polish) Currently translated at 76.7% (374 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index c44da833..4853224d 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From f1e7b2b92ff8df8d5d6ad542da56f2d9c82b7beb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:31 +0000 Subject: [PATCH 463/788] Translated using Weblate (Swedish) Currently translated at 27.1% (132 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index d432afc4..814d5534 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From d7be22c7c8d457061ea06e5e1104bdc5473f068c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:32 +0000 Subject: [PATCH 464/788] Translated using Weblate (Croatian) Currently translated at 96.5% (470 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 49e13492..3dd31841 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From f28ce55e429be52cce3a31898ad1b3b5dfd2a8b2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:37 +0000 Subject: [PATCH 465/788] Translated using Weblate (Hungarian) Currently translated at 98.3% (479 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 56bfd877..2ee5c2d4 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -665,5 +665,14 @@ "failed": "Sikertelen", "canceled": "Megszakítva", "inProgress": "Folyamatban" + }, + "gamedig": { + "ping": "Ping", + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots" } } From 8ebc7937c187fc264b81a6b19c06f6a963926cc7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:36 +0000 Subject: [PATCH 466/788] Translated using Weblate (Hebrew) Currently translated at 20.5% (100 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 78545f39..335ee8fc 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 70aab41ffc7992078966e0f325fd928d9299e6b6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:34 +0000 Subject: [PATCH 467/788] Translated using Weblate (Romanian) Currently translated at 30.8% (150 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 96fd22b4..ec4016cd 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 078b1cbfd6ff68f0cf460d7123b65a56dc99b078 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:33 +0000 Subject: [PATCH 468/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 82.9% (404 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index 55e45757..acf7fa0a 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From b94a4834c19ddce13a72a6bdd6dd87e12f860b6b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:41 +0000 Subject: [PATCH 469/788] Translated using Weblate (Yue (Traditional)) Currently translated at 24.0% (117 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 91775685..37cfeeba 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From bb2b2de97e24a3f531f633712f4cb552bc5a808d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:40 +0000 Subject: [PATCH 470/788] Translated using Weblate (Finnish) Currently translated at 36.3% (177 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index ad457f2c..e276fb98 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From bd229a7f8f08d650d058c662cd25ac86d9848b36 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:41 +0000 Subject: [PATCH 471/788] Translated using Weblate (Telugu) Currently translated at 44.1% (215 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index a73051a4..60c0c70c 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 9dfc9f261b9aad3a99d8f9604b24a3eb3afa744f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:28 +0000 Subject: [PATCH 472/788] Translated using Weblate (Bulgarian) Currently translated at 9.4% (46 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index d0dea6a9..192002a5 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 8658d24d15ac307a5fa2f084e036cff748a16cd0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:29 +0000 Subject: [PATCH 473/788] Translated using Weblate (Turkish) Currently translated at 80.6% (393 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 0aac8e9f..8ef13783 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From de47fc6e7fb4a2a8bc609fa350b6b784e1e1aa18 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:35 +0000 Subject: [PATCH 474/788] Translated using Weblate (Serbian) Currently translated at 1.8% (9 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index bb387d90..dcdbce18 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 7aa3220e508024555605c73c6da35b8029ee403a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:35 +0000 Subject: [PATCH 475/788] Translated using Weblate (Arabic) Currently translated at 53.7% (262 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 6ff5acab..376cb1fe 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 5aa82ae92867dd8288e58f0bce5b0308d2b0c370 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:24 +0000 Subject: [PATCH 476/788] Translated using Weblate (Czech) Currently translated at 91.1% (444 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index ed5dc276..73ce54ac 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "map": "Map", + "currentPlayers": "Current players", + "name": "Name", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 28acc9207c512bb23f76a100bf753e5a04474d70 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:22 +0000 Subject: [PATCH 477/788] Translated using Weblate (Danish) Currently translated at 40.4% (197 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 797f9f4a..bb45619d 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 5b9a478a0fde775161e16c31ba2635ac9cf45ed5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:22 +0000 Subject: [PATCH 478/788] Translated using Weblate (Malay) Currently translated at 51.5% (251 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index a25ed71f..4d729745 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From f7ffb87e7c2c024f522099ccc7baa3b701a539b1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:23 +0000 Subject: [PATCH 479/788] Translated using Weblate (Hindi) Currently translated at 1.8% (9 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 70dd22e8..3ab11d3c 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 4863bf924915fae888be0a7f5d8bcc26cdbd733a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:24 +0000 Subject: [PATCH 480/788] Translated using Weblate (Esperanto) Currently translated at 29.7% (145 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 4a1ae6f3..ccc953d0 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 29a7336b74343a7496d1095cfc6ccca11f1d7e13 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:25 +0000 Subject: [PATCH 481/788] Translated using Weblate (Ukrainian) Currently translated at 98.5% (480 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 86008450..f831a41a 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -665,5 +665,14 @@ "notStarted": "Не розпочато", "canceled": "Скасовано", "inProgress": "В процесі" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From e39734e101d0854bb7823b04ad0c272d98811f20 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:23 +0000 Subject: [PATCH 482/788] Translated using Weblate (Japanese) Currently translated at 79.0% (385 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 5a0eccee..ec84d85a 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 51c386e9b38c117cd6ffd39efcd3b888cfd89cc1 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:26 +0000 Subject: [PATCH 483/788] Translated using Weblate (Latvian) Currently translated at 24.2% (118 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 696b4d85..f6aeba06 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -665,5 +665,14 @@ "canceled": "Canceled", "result": "Result", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 4203d2d45c97c4ac716ca8b63754d478f3f81fde Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:19 +0000 Subject: [PATCH 484/788] Translated using Weblate (Thai) Currently translated at 9.6% (47 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 64300953..d6c1d48e 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 970842cee219a64e543198a783736a31bfdb5194 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:37 +0000 Subject: [PATCH 485/788] Translated using Weblate (Slovak) Currently translated at 1.8% (9 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 710b5007..29595948 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 3f1fdc2426b584df15c340c76e10500ecc4a338c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:38 +0000 Subject: [PATCH 486/788] Translated using Weblate (Korean) Currently translated at 35.5% (173 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index f1325b75..92b18b49 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "ping": "Ping", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots" } } From 6de158897cd6c7d1accbe68fdedf21b023a66114 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:20 +0000 Subject: [PATCH 487/788] Translated using Weblate (Greek) Currently translated at 29.3% (143 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 506a25d7..661e36ac 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 846181eaeba8ae41f93c59425af4e716c73702ae Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:26 +0000 Subject: [PATCH 488/788] Translated using Weblate (Slovenian) Currently translated at 96.7% (471 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 60cee85f..c727bcf8 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 4a051bdaed6400b927baf5338b4160845b6e0e3f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:20 +0000 Subject: [PATCH 489/788] Translated using Weblate (Indonesian) Currently translated at 3.0% (15 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index d3cab359..a0f17261 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "name": "Name", + "map": "Map", + "currentPlayers": "Current players", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From 4d50ca21dc01859091a2940a304feb75279e5ae5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 27 Jul 2023 05:07:43 +0000 Subject: [PATCH 490/788] Translated using Weblate (Basque) Currently translated at 6.7% (33 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 27685703..2b99e769 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -665,5 +665,14 @@ "failed": "Failed", "canceled": "Canceled", "inProgress": "In Progress" + }, + "gamedig": { + "currentPlayers": "Current players", + "name": "Name", + "map": "Map", + "players": "Players", + "maxPlayers": "Max players", + "bots": "Bots", + "ping": "Ping" } } From e9ebf67cdaafaa44fab8f1d48d42c579d8f8f976 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Thu, 27 Jul 2023 12:24:44 +0000 Subject: [PATCH 491/788] Translated using Weblate (Spanish) Currently translated at 100.0% (487 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index ba0e64f1..d0f7025e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -667,11 +667,11 @@ "inProgress": "En proceso" }, "gamedig": { - "name": "Name", - "map": "Map", - "currentPlayers": "Current players", - "players": "Players", - "maxPlayers": "Max players", + "name": "Nombre", + "map": "Mapa", + "currentPlayers": "Jugadores actuales", + "players": "Jugadores", + "maxPlayers": "Jugadores máximos", "bots": "Bots", "ping": "Ping" } From ac61dc5d0c5b6de9aa9d3544207c4f196eff6e12 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 27 Jul 2023 09:37:38 +0000 Subject: [PATCH 492/788] Translated using Weblate (Ukrainian) Currently translated at 100.0% (487 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index f831a41a..b532eccd 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -667,12 +667,12 @@ "inProgress": "В процесі" }, "gamedig": { - "name": "Name", - "map": "Map", - "currentPlayers": "Current players", - "players": "Players", - "maxPlayers": "Max players", - "bots": "Bots", - "ping": "Ping" + "name": "Назва", + "map": "Мапа", + "currentPlayers": "Поточні гравці", + "players": "Гравці", + "maxPlayers": "Максимум гравців", + "bots": "Ботів", + "ping": "Пінг" } } From 7e05adc02a00ec4cfeedef1b85ffc85a4b9b1dbe Mon Sep 17 00:00:00 2001 From: Nitzan Miranda <59150911+Nizzan943@users.noreply.github.com> Date: Sun, 30 Jul 2023 08:17:30 +0300 Subject: [PATCH 493/788] Add Azure DevOps (#1715) * add azure pullrequrests * add creatorId * rename azurePullrequests->azurePullRequests * pass creatorId to FE * expose userEmail to frontend * tolower * remove unused code * merge to AzureDevOps * fix userEmail * remove whitespace in const and set true endpoint in widget * use widget params in endpoint * change approvedNotCompleted to Approved * change to lower * rename * rename * merge widgets together * limit pipeline result to 1 result * Better handle azuredevops PR call failures * change to have repositoryId and not branchName * Fix field filtering, avoid PR call if not needed --------- Co-authored-by: Nitzan Miranda Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- public/locales/en/common.json | 7 ++- src/utils/config/service-helpers.js | 7 +++ src/utils/proxy/api-helpers.js | 2 +- src/utils/proxy/handlers/credentialed.js | 2 +- src/widgets/azurePipelines/component.jsx | 36 ------------- src/widgets/azurePipelines/widget.js | 8 --- src/widgets/azuredevops/component.jsx | 65 ++++++++++++++++++++++++ src/widgets/azuredevops/widget.js | 18 +++++++ src/widgets/components.js | 2 +- src/widgets/widgets.js | 4 +- 10 files changed, 100 insertions(+), 51 deletions(-) delete mode 100644 src/widgets/azurePipelines/component.jsx delete mode 100644 src/widgets/azurePipelines/widget.js create mode 100644 src/widgets/azuredevops/component.jsx create mode 100644 src/widgets/azuredevops/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 6091c0b1..66aa19ab 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -665,7 +665,7 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { + "azuredevops": { "result": "Result", "status": "Status", "buildId": "Build ID", @@ -673,7 +673,10 @@ "notStarted": "Not Started", "failed": "Failed", "canceled": "Canceled", - "inProgress": "In Progress" + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" }, "gamedig": { "name": "Name", diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index dc625f2e..92fa7b22 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -293,6 +293,8 @@ export function cleanServiceGroups(groups) { node, // Proxmox snapshotHost, // kopia snapshotPath, + userEmail, // azuredevops + repositoryId } = cleanedService.widget; let fieldsList = fields; @@ -312,6 +314,11 @@ export function cleanServiceGroups(groups) { service_group: serviceGroup.name, }; + if (type === "azuredevops") { + if (userEmail) cleanedService.widget.userEmail = userEmail; + if (repositoryId) cleanedService.widget.repositoryId = repositoryId; + } + if (type === "coinmarketcap") { if (currency) cleanedService.widget.currency = currency; if (symbols) cleanedService.widget.symbols = symbols; diff --git a/src/utils/proxy/api-helpers.js b/src/utils/proxy/api-helpers.js index ca2721ec..be73a5b7 100644 --- a/src/utils/proxy/api-helpers.js +++ b/src/utils/proxy/api-helpers.js @@ -5,7 +5,7 @@ export function formatApiCall(url, args) { return args[key] || ""; }; - return url.replace(/\/+$/, "").replace(find, replace); + return url.replace(/\/+$/, "").replace(find, replace).replace(find,replace); } function getURLSearchParams(widget, endpoint) { diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 3d181ead..498c0d6d 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -62,7 +62,7 @@ export default async function credentialedProxyHandler(req, res, map) { headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; } } - else if (widget.type === "azurePipelines") { + else if (widget.type === "azuredevops") { headers.Authorization = `Basic ${Buffer.from(`$:${widget.key}`).toString("base64")}`; } else { headers["X-API-Key"] = `${widget.key}`; diff --git a/src/widgets/azurePipelines/component.jsx b/src/widgets/azurePipelines/component.jsx deleted file mode 100644 index a47296f3..00000000 --- a/src/widgets/azurePipelines/component.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import { useTranslation } from "next-i18next"; - -import Container from "components/services/widget/container"; -import Block from "components/services/widget/block"; -import useWidgetAPI from "utils/proxy/use-widget-api"; - -export default function Component({ service }) { - const { t } = useTranslation(); - - const { widget } = service; - - const { data: pipelineData, error: pipelineError } = useWidgetAPI(widget); - - if (pipelineError) { - return ; - } - - if (!pipelineData || !Array.isArray(pipelineData.value)) { - return ( - - - - - ); - } - - return ( - - {pipelineData.value[0].result ? - : - - } - - - ); -} diff --git a/src/widgets/azurePipelines/widget.js b/src/widgets/azurePipelines/widget.js deleted file mode 100644 index 708266d2..00000000 --- a/src/widgets/azurePipelines/widget.js +++ /dev/null @@ -1,8 +0,0 @@ -import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; - -const widget = { - api: "https://dev.azure.com/{organization}/{project}/_apis/build/Builds?branchName={branchName}&definitions={definitionId}", - proxyHandler: credentialedProxyHandler, -}; - -export default widget; \ No newline at end of file diff --git a/src/widgets/azuredevops/component.jsx b/src/widgets/azuredevops/component.jsx new file mode 100644 index 00000000..a9db4403 --- /dev/null +++ b/src/widgets/azuredevops/component.jsx @@ -0,0 +1,65 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const { userEmail, repositoryId } = widget; + const includePR = userEmail !== undefined && repositoryId !== undefined; + const { data: prData, error: prError } = useWidgetAPI(widget, includePR ? "pr" : null); + const { data: pipelineData, error: pipelineError } = useWidgetAPI(widget, "pipeline"); + + if ( + pipelineError || + (includePR && (prError || prData?.errorCode !== undefined)) + ) { + let finalError = pipelineError ?? prError; + if (includePR && prData?.errorCode !== null) { + // pr call failed possibly with more specific message + finalError = { message: prData?.message ?? 'Error communicating with Azure API' } + } + return ; + } + + if (!pipelineData || !Array.isArray(pipelineData.value) || (includePR && !prData)) { + return ( + + + + + + + ); + } + + return ( + + {pipelineData.value[0].result ? ( + + ) : ( + + )} + + {includePR && } + {includePR && item.createdBy.uniqueName.toLowerCase() === userEmail.toLowerCase()) + .length, + })} + />} + {includePR && item.createdBy.uniqueName.toLowerCase() === userEmail.toLowerCase()) + .filter((item) => item.reviewers.some((reviewer) => reviewer.vote === 10)).length, + })} + />} + + + ); +} diff --git a/src/widgets/azuredevops/widget.js b/src/widgets/azuredevops/widget.js new file mode 100644 index 00000000..84c9fdf3 --- /dev/null +++ b/src/widgets/azuredevops/widget.js @@ -0,0 +1,18 @@ +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; + +const widget = { + api: "https://dev.azure.com/{organization}/{project}/_apis/{endpoint}", + proxyHandler: credentialedProxyHandler, + + mappings: { + pr: { + endpoint: "git/repositories/{repositoryId}/pullrequests" + }, + + pipeline: { + endpoint: "build/Builds?branchName={branchName}&definitions={definitionId}&$top=1" + }, + }, +}; + +export default widget; diff --git a/src/widgets/components.js b/src/widgets/components.js index 4b7ef50c..0c372ce9 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -5,7 +5,7 @@ const components = { audiobookshelf: dynamic(() => import("./audiobookshelf/component")), authentik: dynamic(() => import("./authentik/component")), autobrr: dynamic(() => import("./autobrr/component")), - azurePipelines: dynamic(() => import("./azurePipelines/component")), + azuredevops: dynamic(() => import("./azuredevops/component")), bazarr: dynamic(() => import("./bazarr/component")), caddy: dynamic(() => import("./caddy/component")), changedetectionio: dynamic(() => import("./changedetectionio/component")), diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 6ae47efd..14dc2cd2 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -2,7 +2,7 @@ import adguard from "./adguard/widget"; import audiobookshelf from "./audiobookshelf/widget"; import authentik from "./authentik/widget"; import autobrr from "./autobrr/widget"; -import azurePipelines from "./azurePipelines/widget"; +import azuredevops from "./azuredevops/widget"; import bazarr from "./bazarr/widget"; import caddy from "./caddy/widget"; import changedetectionio from "./changedetectionio/widget"; @@ -93,7 +93,7 @@ const widgets = { audiobookshelf, authentik, autobrr, - azurePipelines, + azuredevops, bazarr, caddy, changedetectionio, From d2c565da2764eaa011309b3a57efcab9a91b1308 Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 30 Jul 2023 03:02:24 +0000 Subject: [PATCH 494/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 95.8% (467 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 124 +++++++++++++++---------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index acf7fa0a..8746c3f9 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -91,7 +91,7 @@ "transcoding": "Transcodificando", "bitrate": "Taxa de bits", "no_active": "Sem transmissões ativas", - "plex_connection_error": "Check Plex Connection" + "plex_connection_error": "Verifique a conexão do Plex" }, "nzbget": { "rate": "Taxa", @@ -114,21 +114,21 @@ "wanted": "Desejado", "queued": "Na fila", "series": "Séries", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Fila", + "unknown": "Desconhecido" }, "radarr": { "wanted": "Desejado", "queued": "Na fila", "movies": "Filmes", "missing": "Faltando", - "queue": "Queue", - "unknown": "Unknown" + "queue": "Fila", + "unknown": "Desconhecido" }, "lidarr": { "wanted": "Desejado", "queued": "Na fila", - "artists": "Artists" + "artists": "Artistas" }, "readarr": { "wanted": "Desejado", @@ -159,7 +159,7 @@ "queries": "Consultas", "blocked": "Bloqueados", "gravity": "Gravidade", - "blocked_percent": "Blocked %" + "blocked_percent": "Bloqueado %" }, "adguard": { "queries": "Consultas", @@ -244,11 +244,11 @@ "uptime": "LIGADO", "days": "d", "hours": "h", - "load": "Load", - "warn": "Warn", + "load": "Carga", + "warn": "Aviso", "total": "Total", - "free": "Free", - "used": "Used" + "free": "Livre", + "used": "Usado" }, "changedetectionio": { "totalObserved": "Observados", @@ -524,8 +524,8 @@ "memoryusage": "Memória Utilizada", "freespace": "Espaço Livre", "activeusers": "Usuários Ativos", - "numfiles": "Files", - "numshares": "Shared Items" + "numfiles": "Arquivos", + "numshares": "Itens Compartilhados" }, "kopia": { "status": "Status", @@ -582,97 +582,97 @@ "switches_on": "Interruptores Ligados" }, "freshrss": { - "subscriptions": "Subscriptions", - "unread": "Unread" + "subscriptions": "Assinaturas", + "unread": "Não lida" }, "channelsdvrserver": { "shows": "Shows", - "recordings": "Recordings", - "scheduled": "Scheduled", + "recordings": "Gravações", + "scheduled": "Agendado", "passes": "Passes" }, "whatsupdocker": { - "monitoring": "Monitoring", - "updates": "Updates" + "monitoring": "Monitorando", + "updates": "Atualizações" }, "tailscale": { - "address": "Address", - "expires": "Expires", - "never": "Never", - "last_seen": "Last Seen", - "now": "Now", - "years": "{{number}}y", - "weeks": "{{number}}w", + "address": "Endereço", + "expires": "Expira", + "never": "Nunca", + "last_seen": "Visto pela última vez", + "now": "Agora", + "years": "{{number}}a", + "weeks": "{{number}}s", "hours": "{{number}}h", "days": "{{number}}d", "minutes": "{{number}}m", "seconds": "{{number}}s", - "ago": "{{value}} Ago" + "ago": "{{value}} Atrás" }, "qnap": { - "systemTempC": "System Temp", - "cpuUsage": "CPU Usage", - "memUsage": "MEM Usage", + "systemTempC": "Temp Sistema", + "cpuUsage": "Uso CPU", + "memUsage": "Uso MEM", "poolUsage": "Pool Usage", - "volumeUsage": "Volume Usage", - "invalid": "Invalid" + "volumeUsage": "Uso Volume", + "invalid": "Invalido" }, "pfsense": { - "load": "Load Avg", - "memory": "Mem Usage", + "load": "Média de carga", + "memory": "Uso Mem", "wanStatus": "WAN Status", "up": "Up", "down": "Down", "temp": "Temp", - "disk": "Disk Usage", + "disk": "Uso de disco", "wanIP": "WAN IP" }, "caddy": { "upstreams": "Upstreams", - "requests": "Current requests", - "requests_failed": "Failed requests" + "requests": "Solicitações atuais", + "requests_failed": "Solicitações com falha" }, "evcc": { - "pv_power": "Production", - "battery_soc": "Battery", - "grid_power": "Grid", - "home_power": "Consumption", - "charge_power": "Charger", + "pv_power": "Produção", + "battery_soc": "Bateria", + "grid_power": "Grade", + "home_power": "Consumo", + "charge_power": "Carregador", "watt_hour": "Wh" }, "pialert": { "total": "Total", - "connected": "Connected", - "new_devices": "New Devices", - "down_alerts": "Down Alerts" + "connected": "Conectado", + "new_devices": "Novos dispositivos", + "down_alerts": "Alertas de Quedas" }, "jdownloader": { - "downloadCount": "Queue Count", - "downloadSpeed": "Download Speed", - "downloadBytesRemaining": "Remaining", - "downloadTotalBytes": "Size" + "downloadCount": "Fila", + "downloadSpeed": "Velocidade de download", + "downloadBytesRemaining": "Restante", + "downloadTotalBytes": "Tamanho" }, "kavita": { "seriesCount": "Series", - "totalFiles": "Files" + "totalFiles": "Arquivos" }, "azurePipelines": { - "result": "Result", + "result": "Resultado", "status": "Status", "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" + "succeeded": "Sucesso", + "notStarted": "Não foi iniciado", + "failed": "Falhou", + "canceled": "Cancelado", + "inProgress": "Em Andamento" }, "gamedig": { - "name": "Name", - "map": "Map", - "currentPlayers": "Current players", - "players": "Players", - "maxPlayers": "Max players", - "bots": "Bots", + "name": "Nome", + "map": "Mapa", + "currentPlayers": "Jogadores atuais", + "players": "Jogadores", + "maxPlayers": "Jogadores Max", + "bots": "Robos", "ping": "Ping" } } From 90545612123939911c8119e896c50ecbb10c9157 Mon Sep 17 00:00:00 2001 From: liimee Date: Sun, 30 Jul 2023 00:38:22 +0000 Subject: [PATCH 495/788] Translated using Weblate (Indonesian) Currently translated at 4.9% (24 of 487 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index a0f17261..ec541847 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -494,9 +494,9 @@ }, "weather": { "wait": "Harap tunggu", - "current": "Current Location", - "allow": "Click to allow", - "updating": "Updating" + "current": "Lokasi Saat Ini", + "allow": "Klik untuk mengizinkan", + "updating": "Memperbarui" }, "search": { "placeholder": "Telusuri…" @@ -590,11 +590,11 @@ "cpu": "CPU", "mem": "MEM", "total": "Total", - "free": "Free", - "used": "Used", + "free": "Luang", + "used": "Digunakan", "load": "Load", "temp": "TEMP", - "max": "Max", + "max": "Maks", "uptime": "UP", "months": "mo", "hours": "h", From 556cb0f0394353e423a5febdfdc2cd22bcdeba7c Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Sun, 30 Jul 2023 07:17:41 +0200 Subject: [PATCH 496/788] Update translation files Updated by "Cleanup translation files" hook in Weblate. Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ --- public/locales/ar/common.json | 10 ---------- public/locales/bg/common.json | 10 ---------- public/locales/ca/common.json | 10 ---------- public/locales/cs/common.json | 10 ---------- public/locales/da/common.json | 10 ---------- public/locales/de/common.json | 10 ---------- public/locales/el/common.json | 10 ---------- public/locales/eo/common.json | 10 ---------- public/locales/es/common.json | 10 ---------- public/locales/eu/common.json | 10 ---------- public/locales/fi/common.json | 10 ---------- public/locales/fr/common.json | 10 ---------- public/locales/he/common.json | 10 ---------- public/locales/hi/common.json | 10 ---------- public/locales/hr/common.json | 10 ---------- public/locales/hu/common.json | 10 ---------- public/locales/id/common.json | 10 ---------- public/locales/it/common.json | 10 ---------- public/locales/ja/common.json | 10 ---------- public/locales/ko/common.json | 10 ---------- public/locales/lv/common.json | 10 ---------- public/locales/ms/common.json | 10 ---------- public/locales/nb-NO/common.json | 10 ---------- public/locales/nl/common.json | 10 ---------- public/locales/pl/common.json | 10 ---------- public/locales/pt-BR/common.json | 10 ---------- public/locales/pt/common.json | 10 ---------- public/locales/ro/common.json | 10 ---------- public/locales/ru/common.json | 10 ---------- public/locales/sk/common.json | 10 ---------- public/locales/sl/common.json | 10 ---------- public/locales/sr/common.json | 10 ---------- public/locales/sv/common.json | 10 ---------- public/locales/te/common.json | 10 ---------- public/locales/th/common.json | 10 ---------- public/locales/tr/common.json | 10 ---------- public/locales/uk/common.json | 10 ---------- public/locales/vi/common.json | 10 ---------- public/locales/yue/common.json | 10 ---------- public/locales/zh-CN/common.json | 10 ---------- public/locales/zh-Hant/common.json | 10 ---------- 41 files changed, 410 deletions(-) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 376cb1fe..510d1bcb 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index 192002a5..b3f77b74 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 8849d7c7..a4e9bc01 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 73ce54ac..8c2ef694 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "map": "Map", "currentPlayers": "Current players", diff --git a/public/locales/da/common.json b/public/locales/da/common.json index bb45619d..5b2910a3 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/de/common.json b/public/locales/de/common.json index a173355c..69a12cef 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 661e36ac..65d922fe 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index ccc953d0..4745402e 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d0f7025e..c52e8859 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -656,16 +656,6 @@ "seriesCount": "Serie", "totalFiles": "Archivos" }, - "azurePipelines": { - "result": "Resultado", - "status": "Estado", - "buildId": "ID de la compilación", - "succeeded": "Con éxito", - "notStarted": "No iniciado", - "failed": "Fallido", - "canceled": "Cancelado", - "inProgress": "En proceso" - }, "gamedig": { "name": "Nombre", "map": "Mapa", diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 2b99e769..3302d8be 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "currentPlayers": "Current players", "name": "Name", diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index e276fb98..c62247cb 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 9bf6d6ef..2664e0dc 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -656,16 +656,6 @@ "seriesCount": "Séries", "totalFiles": "Fichiers" }, - "azurePipelines": { - "result": "Résultat", - "status": "Statut", - "buildId": "Build ID", - "succeeded": "Réussi", - "notStarted": "Non démarré", - "failed": "Échoué", - "canceled": "Annulé", - "inProgress": "En cours" - }, "gamedig": { "name": "Nom", "map": "Carte", diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 335ee8fc..e7b742c5 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 3ab11d3c..8fc94e29 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 3dd31841..9eef834e 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -656,16 +656,6 @@ "seriesCount": "Serije", "totalFiles": "Datoteke" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 2ee5c2d4..a0a60666 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -656,16 +656,6 @@ "seriesCount": "Sorozatok", "totalFiles": "Fájlok" }, - "azurePipelines": { - "result": "Eredmény", - "status": "Állapot", - "buildId": "Build ID", - "succeeded": "Sikeres", - "notStarted": "Nincs elindítva", - "failed": "Sikertelen", - "canceled": "Megszakítva", - "inProgress": "Folyamatban" - }, "gamedig": { "ping": "Ping", "name": "Name", diff --git a/public/locales/id/common.json b/public/locales/id/common.json index ec541847..974857b4 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 663b9f90..5281fe24 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -656,16 +656,6 @@ "seriesCount": "Serie", "totalFiles": "File" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index ec84d85a..279fd0fa 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 92b18b49..8e9af0e1 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index f6aeba06..70d1fafc 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "result": "Result", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 4d729745..6ad8ab4d 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 5619ba90..d3007a3a 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Filer" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index b01e40cd..ddc8547c 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 4853224d..9889f245 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index 8746c3f9..a58220f5 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Arquivos" }, - "azurePipelines": { - "result": "Resultado", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Sucesso", - "notStarted": "Não foi iniciado", - "failed": "Falhou", - "canceled": "Cancelado", - "inProgress": "Em Andamento" - }, "gamedig": { "name": "Nome", "map": "Mapa", diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 0cedbe01..ac21d6e2 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -665,16 +665,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index ec4016cd..af5a3e0e 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 4f73ea7e..fad75cc2 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "inProgress": "In Progress", - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 29595948..44ac0e7f 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index c727bcf8..d95f1192 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -656,16 +656,6 @@ "seriesCount": "Serije", "totalFiles": "Datoteke" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index dcdbce18..caac0934 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 814d5534..7f24a767 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -656,16 +656,6 @@ "totalFiles": "Files", "seriesCount": "Series" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/te/common.json b/public/locales/te/common.json index 60c0c70c..a5de0ec0 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -656,16 +656,6 @@ "totalFiles": "Files", "seriesCount": "Series" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/th/common.json b/public/locales/th/common.json index d6c1d48e..292a3992 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 8ef13783..7e3ab04a 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index b532eccd..06d3c8a4 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -656,16 +656,6 @@ "seriesCount": "Серій", "totalFiles": "Файлів" }, - "azurePipelines": { - "failed": "Невдача", - "result": "Результат", - "status": "Стан", - "buildId": "ID збірки", - "succeeded": "Успішно", - "notStarted": "Не розпочато", - "canceled": "Скасовано", - "inProgress": "В процесі" - }, "gamedig": { "name": "Назва", "map": "Мапа", diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 4ea3945e..64fbd5ec 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index 37cfeeba..f08d6075 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index ae3c8ccb..0c780e9b 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 0adcba93..f5c9a570 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -656,16 +656,6 @@ "seriesCount": "Series", "totalFiles": "Files" }, - "azurePipelines": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress" - }, "gamedig": { "name": "Name", "map": "Map", From 59c7bcb392a84fc7e85560af1ea98c0e2976f6de Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:44 +0000 Subject: [PATCH 497/788] Translated using Weblate (German) Currently translated at 93.2% (457 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 69a12cef..079ba76a 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -664,5 +664,18 @@ "bots": "Bots", "ping": "Ping", "maxPlayers": "Max players" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved", + "inProgress": "In Progress" } } From 19c56de8b0da880f7ab2685d2178f59892eac99a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:45 +0000 Subject: [PATCH 498/788] Translated using Weblate (Spanish) Currently translated at 97.7% (479 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c52e8859..788dd60f 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Jugadores máximos", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 99a55c85bbcf8b7154cc29c32a960ae2022b5839 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:46 +0000 Subject: [PATCH 499/788] Translated using Weblate (French) Currently translated at 97.7% (479 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 2664e0dc..0b59f5aa 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Joueurs max", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 7fbac755bc9c8392c3be2920bc921c8fe20c1939 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:47 +0000 Subject: [PATCH 500/788] Translated using Weblate (Portuguese) Currently translated at 84.6% (415 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index ac21d6e2..8b645644 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -673,5 +673,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "approved": "Approved", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs" } } From fcecdd3c4a287c79328bb450c9d045688ece7c46 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:32 +0000 Subject: [PATCH 501/788] Translated using Weblate (Russian) Currently translated at 86.9% (426 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index fad75cc2..f33f112a 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 9058613b97efabc8f38aff1d3e69f09214cf8997 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:34 +0000 Subject: [PATCH 502/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 90.6% (444 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 0c780e9b..1cf467d2 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "canceled": "Canceled", + "inProgress": "In Progress", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From cf8efb38f7aef58900cc0143803ba3275fc5ea88 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:25 +0000 Subject: [PATCH 503/788] Translated using Weblate (Italian) Currently translated at 95.9% (470 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 5281fe24..67d19847 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "myPrs": "My PRs", + "approved": "Approved", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs" } } From 1590029aecac08f7526791bafaf39bc2ebd89014 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:26 +0000 Subject: [PATCH 504/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.3% (80 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index d3007a3a..d1d13c59 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From f66a4e4a425287e0a377e79311353c8c2b70466f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:51 +0000 Subject: [PATCH 505/788] Translated using Weblate (Vietnamese) Currently translated at 8.9% (44 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 64fbd5ec..7be92570 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 4545b785f0744653a4fc1256583170cc4006a078 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:29 +0000 Subject: [PATCH 506/788] Translated using Weblate (Dutch) Currently translated at 49.1% (241 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index ddc8547c..2f80472b 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From b5ec54b3196a5848642564ddadbede21bfa856a8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:37 +0000 Subject: [PATCH 507/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 93.8% (460 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index f5c9a570..2a8c7474 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 76ff3d142c8642036372fc7b5f0736c7d97f93d3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:30 +0000 Subject: [PATCH 508/788] Translated using Weblate (Catalan) Currently translated at 53.0% (260 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index a4e9bc01..0f8507a3 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From f5855514fa9f5e8e781cc13a46cecaf51b0ffd81 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:16 +0000 Subject: [PATCH 509/788] Translated using Weblate (Polish) Currently translated at 76.3% (374 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 9889f245..9543cc08 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "myPrs": "My PRs", + "approved": "Approved", + "result": "Result", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs" } } From 5a3f141f9daad9d234ad334d9e533a2a5f7d9c2e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:32 +0000 Subject: [PATCH 510/788] Translated using Weblate (Swedish) Currently translated at 26.9% (132 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 7f24a767..9a236530 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "approved": "Approved", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs" } } From 84cca259a64cd621763616d8a421b30f0fc7b711 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:34 +0000 Subject: [PATCH 511/788] Translated using Weblate (Croatian) Currently translated at 95.9% (470 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 9eef834e..c90d87fe 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 771f5493fd60c3d89bcccc705dd32ceee94a8f07 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:41 +0000 Subject: [PATCH 512/788] Translated using Weblate (Hungarian) Currently translated at 96.1% (471 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index a0a60666..f98ca9d3 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -664,5 +664,18 @@ "players": "Players", "maxPlayers": "Max players", "bots": "Bots" + }, + "azuredevops": { + "status": "Status", + "myPrs": "My PRs", + "approved": "Approved", + "result": "Result", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs" } } From 36f48cf8632f6b7dacf5b4bcfa471e28917c7fc8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:40 +0000 Subject: [PATCH 513/788] Translated using Weblate (Hebrew) Currently translated at 20.4% (100 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index e7b742c5..cf504e8a 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "myPrs": "My PRs", + "totalPrs": "Total PRs", + "approved": "Approved" } } From 6bdad763666877b0234afab879679174593974b7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:36 +0000 Subject: [PATCH 514/788] Translated using Weblate (Romanian) Currently translated at 30.6% (150 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index af5a3e0e..87e7620a 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed" } } From 61aac831cb721456e62d01dfb963294cb5569ffa Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:35 +0000 Subject: [PATCH 515/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 94.0% (461 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index a58220f5..278e2167 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Jogadores Max", "bots": "Robos", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 8d347d8b266b63f7738e55637a0f254895e659ac Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:50 +0000 Subject: [PATCH 516/788] Translated using Weblate (Yue (Traditional)) Currently translated at 23.8% (117 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index f08d6075..c7216daa 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 04ff0593798d4a51bcd4036fbdcf4a2ba03636a5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:48 +0000 Subject: [PATCH 517/788] Translated using Weblate (Finnish) Currently translated at 36.1% (177 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index c62247cb..6d0f62c1 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 25d7fb893008dff5dbf7a7071fe0391398bc3314 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:49 +0000 Subject: [PATCH 518/788] Translated using Weblate (Telugu) Currently translated at 43.8% (215 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index a5de0ec0..adee9c1f 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "myPrs": "My PRs", + "approved": "Approved", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs" } } From 634e169d0dfb14e3be8fd39931391fdf196f4847 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:27 +0000 Subject: [PATCH 519/788] Translated using Weblate (Bulgarian) Currently translated at 9.3% (46 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index b3f77b74..f6a5a60a 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 40d6afcec2a866a13ff15f0cb5e763f61bd00a17 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:28 +0000 Subject: [PATCH 520/788] Translated using Weblate (Turkish) Currently translated at 80.2% (393 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index 7e3ab04a..c4c24e43 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed" } } From 6d403511ceb564f252dcdfcabc4cc488912796be Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:38 +0000 Subject: [PATCH 521/788] Translated using Weblate (Serbian) Currently translated at 1.8% (9 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index caac0934..6af0ee76 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From c142991a21000b39ca94fdf43e42d94e49114ecf Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:39 +0000 Subject: [PATCH 522/788] Translated using Weblate (Arabic) Currently translated at 53.4% (262 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index 510d1bcb..b92975a0 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "approved": "Approved" } } From eb08d989adf54685f3a9cd82729963164877a62b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:20 +0000 Subject: [PATCH 523/788] Translated using Weblate (Czech) Currently translated at 90.6% (444 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 8c2ef694..284431b8 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 8e41853d58e1ad8dd88437ad9d8bfb1c597b7454 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:17 +0000 Subject: [PATCH 524/788] Translated using Weblate (Danish) Currently translated at 40.2% (197 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 5b2910a3..2e6b2642 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From cc7b5350ac6653cf0a05a18a345b2042999fd655 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:18 +0000 Subject: [PATCH 525/788] Translated using Weblate (Malay) Currently translated at 51.2% (251 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 6ad8ab4d..43cc59e2 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 291baa97b72a9074a6025cc841da13c99f58b8a2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:19 +0000 Subject: [PATCH 526/788] Translated using Weblate (Hindi) Currently translated at 1.8% (9 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 8fc94e29..c2d059cb 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "myPrs": "My PRs", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "approved": "Approved" } } From 0996cba02e5c710e94df7a7208a359fc3d64c606 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:21 +0000 Subject: [PATCH 527/788] Translated using Weblate (Esperanto) Currently translated at 29.5% (145 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index 4745402e..bc88d8ca 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From f6484bb23c38e3e70acdc46f72396696a30ce1fb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:22 +0000 Subject: [PATCH 528/788] Translated using Weblate (Ukrainian) Currently translated at 97.7% (479 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index 06d3c8a4..ecdd721f 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Максимум гравців", "bots": "Ботів", "ping": "Пінг" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 5ec8a1204da87569ec24939d853c99f479313ac4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:20 +0000 Subject: [PATCH 529/788] Translated using Weblate (Japanese) Currently translated at 78.5% (385 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 279fd0fa..93619bdc 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From e4e822a1e293101bebee700e9f8db9c7a43894e8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:23 +0000 Subject: [PATCH 530/788] Translated using Weblate (Latvian) Currently translated at 24.0% (118 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index 70d1fafc..d7f92ab6 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed" } } From 8aeff333d800aa71c27629ed01f59d53c3362b2d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:12 +0000 Subject: [PATCH 531/788] Translated using Weblate (Thai) Currently translated at 9.5% (47 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 292a3992..5aab1684 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 9bbb28dbc2f6b1ae7d152e849bd9982a13fe8b74 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:42 +0000 Subject: [PATCH 532/788] Translated using Weblate (Slovak) Currently translated at 1.8% (9 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 44ac0e7f..6c381759 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "succeeded": "Succeeded", + "notStarted": "Not Started", + "inProgress": "In Progress", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "failed": "Failed", + "canceled": "Canceled", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From fbf20d5b8e14ba75b7d6b5854f58916e13028f27 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:43 +0000 Subject: [PATCH 533/788] Translated using Weblate (Korean) Currently translated at 35.3% (173 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 8e9af0e1..3eaeff63 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -664,5 +664,18 @@ "players": "Players", "maxPlayers": "Max players", "bots": "Bots" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 523909f63b9a2de1e4f8539beb785f4cb4677adb Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:14 +0000 Subject: [PATCH 534/788] Translated using Weblate (Greek) Currently translated at 29.1% (143 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 65d922fe..9329908d 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "myPrs": "My PRs", + "approved": "Approved", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs" } } From d3c0ad21900f75f95e2e45e5d09538fd2a3d3c27 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:24 +0000 Subject: [PATCH 535/788] Translated using Weblate (Slovenian) Currently translated at 96.1% (471 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index d95f1192..31003e2c 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 1f0d1bc393764fd4e2c4a864ba55d3642dfd6300 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:15 +0000 Subject: [PATCH 536/788] Translated using Weblate (Indonesian) Currently translated at 4.8% (24 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 974857b4..80702d0a 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "notStarted": "Not Started", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 2f4d4e52bede538f7a597932a90a263aa00349dd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 05:18:52 +0000 Subject: [PATCH 537/788] Translated using Weblate (Basque) Currently translated at 6.7% (33 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 3302d8be..6c1a495c 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -664,5 +664,18 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "azuredevops": { + "notStarted": "Not Started", + "result": "Result", + "status": "Status", + "buildId": "Build ID", + "succeeded": "Succeeded", + "failed": "Failed", + "canceled": "Canceled", + "inProgress": "In Progress", + "totalPrs": "Total PRs", + "myPrs": "My PRs", + "approved": "Approved" } } From 992516cebdc7efeaaed375d60e47762d776d993a Mon Sep 17 00:00:00 2001 From: Stephen Donchez Date: Sun, 30 Jul 2023 10:19:31 -0400 Subject: [PATCH 538/788] Feature: UrBackup Widget (#1735) * Add initial UrBackup widget with counts of ok, errored, and out-of date clients * Add configurable number of days since last backup before a client is considered out-of-date * Don't count a lack of recent (or error free) image backup if image backup isn't supported. * Add support for reporting total disk usage * add support for "fields" from services.yaml * fix field filtering, syntax * Consolidate urbackup code, syntax changes * Revert pnpm changes * re-add urbackup-server-api --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- package.json | 1 + pnpm-lock.yaml | 45 +++++++++++++++ public/locales/en/common.json | 6 ++ src/widgets/components.js | 1 + src/widgets/urbackup/component.jsx | 93 ++++++++++++++++++++++++++++++ src/widgets/urbackup/proxy.js | 33 +++++++++++ src/widgets/urbackup/widget.js | 7 +++ src/widgets/widgets.js | 2 + 8 files changed, 188 insertions(+) create mode 100644 src/widgets/urbackup/component.jsx create mode 100644 src/widgets/urbackup/proxy.js create mode 100644 src/widgets/urbackup/widget.js diff --git a/package.json b/package.json index 8c774188..14fedf03 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "swr": "^1.3.0", "systeminformation": "^5.17.12", "tough-cookie": "^4.1.2", + "urbackup-server-api": "^0.8.9", "winston": "^3.8.2", "xml-js": "^1.6.11" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78cff342..a1231d8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,6 +73,9 @@ dependencies: tough-cookie: specifier: ^4.1.2 version: 4.1.2 + urbackup-server-api: + specifier: ^0.8.9 + version: 0.8.9 winston: specifier: ^3.8.2 version: 3.8.2 @@ -659,6 +662,12 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true + /async-mutex@0.3.2: + resolution: {integrity: sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==} + dependencies: + tslib: 2.5.0 + dev: false + /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false @@ -2691,6 +2700,18 @@ packages: - babel-plugin-macros dev: false + /node-fetch@2.6.12: + resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: false @@ -3719,6 +3740,10 @@ packages: url-parse: 1.5.10 dev: false + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + /triple-beam@1.3.0: resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} dev: false @@ -3822,6 +3847,15 @@ packages: picocolors: 1.0.0 dev: true + /urbackup-server-api@0.8.9: + resolution: {integrity: sha512-Igu6A0xSZeMsiN6PWT7zG4aD+iJR5fXT/j5+xwAvnD/vCNfvVrettIsXv6MftxOajvTmtlgaYu8KDoH1EJQ6DQ==} + dependencies: + async-mutex: 0.3.2 + node-fetch: 2.6.12 + transitivePeerDependencies: + - encoding + dev: false + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -3867,6 +3901,17 @@ packages: engines: {node: '>=0.10.0'} dev: false + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 66aa19ab..46d8e991 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -686,5 +686,11 @@ "maxPlayers": "Max players", "bots": "Bots", "ping": "Ping" + }, + "urbackup": { + "ok" : "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index 0c372ce9..ddaca4cf 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -90,6 +90,7 @@ const components = { unifi: dynamic(() => import("./unifi/component")), unmanic: dynamic(() => import("./unmanic/component")), uptimekuma: dynamic(() => import("./uptimekuma/component")), + urbackup: dynamic(() => import("./urbackup/component")), watchtower: dynamic(() => import("./watchtower/component")), whatsupdocker: dynamic(() => import("./whatsupdocker/component")), xteve: dynamic(() => import("./xteve/component")), diff --git a/src/widgets/urbackup/component.jsx b/src/widgets/urbackup/component.jsx new file mode 100644 index 00000000..9b03b595 --- /dev/null +++ b/src/widgets/urbackup/component.jsx @@ -0,0 +1,93 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const Status = Object.freeze({ + ok: Symbol("Ok"), + errored: Symbol("Errored"), + noRecent: Symbol("No Recent Backups") +}); + +function hasRecentBackups(client, maxDays){ + const days = maxDays || 3; + const diffTime = days*24*60*60 // 7 days + const recentFile = (client.lastbackup > (Date.now() / 1000 - diffTime)); + const recentImage = ((client.lastbackup_image > (Date.now() / 1000 - diffTime)||client.image_not_supported)); + return (recentFile && recentImage); +} + +function determineStatuses(urbackupData) { + let ok = 0; + let errored = 0; + let noRecent = 0; + let status; + urbackupData.clientStatuses.forEach((client) => { + status = Status.noRecent; + if (hasRecentBackups(client, urbackupData.maxDays)) { + status = (client.file_ok && (client.image_ok || client.image_not_supported)) ? Status.ok : Status.errored; + } + switch (status) { + case Status.ok: + ok += 1; + break; + case Status.errored: + errored += 1; + break; + case Status.noRecent: + noRecent += 1; + break; + default: + break; + } + }); + + let totalUsage = false; + + // calculate total disk space if provided + if (urbackupData.diskUsage) { + totalUsage = 0.0; + urbackupData.diskUsage.forEach((client) => { + totalUsage += client.used; + }); + } + + return { ok, errored, noRecent, totalUsage }; +} + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { widget } = service; + + const showDiskUsage = widget.fields?.includes('totalUsed') + + const { data: urbackupData, error: urbackupError } = useWidgetAPI(widget, "status"); + + if (urbackupError) { + return ; + } + + if (!urbackupData) { + return ( + + + + + {showDiskUsage && } + + ); + } + + const statusData = determineStatuses(urbackupData, widget); + + return ( + + + + + {showDiskUsage && } + + ); +} diff --git a/src/widgets/urbackup/proxy.js b/src/widgets/urbackup/proxy.js new file mode 100644 index 00000000..3075afd0 --- /dev/null +++ b/src/widgets/urbackup/proxy.js @@ -0,0 +1,33 @@ +import {UrbackupServer} from "urbackup-server-api"; + +import getServiceWidget from "utils/config/service-helpers"; + +export default async function urbackupProxyHandler(req, res) { + const {group, service} = req.query; + const serviceWidget = await getServiceWidget(group, service); + + const server = new UrbackupServer({ + url: serviceWidget.url, + username: serviceWidget.username, + password: serviceWidget.password + }); + +await (async () => { + try { + const allClients = await server.getStatus({includeRemoved: false}); + let diskUsage = false + if (serviceWidget.fields?.includes("totalUsed")) { + diskUsage = await server.getUsage(); + } + res.status(200).send({ + clientStatuses: allClients, + diskUsage, + maxDays: serviceWidget.maxDays + }); + } catch (error) { + res.status(500).json({ error: "Something Broke" }) + } + })(); + + +} diff --git a/src/widgets/urbackup/widget.js b/src/widgets/urbackup/widget.js new file mode 100644 index 00000000..5eac66d0 --- /dev/null +++ b/src/widgets/urbackup/widget.js @@ -0,0 +1,7 @@ +import urbackupProxyHandler from "./proxy"; + +const widget = { + proxyHandler: urbackupProxyHandler, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 14dc2cd2..46143447 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -87,6 +87,7 @@ import uptimekuma from "./uptimekuma/widget"; import watchtower from "./watchtower/widget"; import whatsupdocker from "./whatsupdocker/widget"; import xteve from "./xteve/widget"; +import urbackup from "./urbackup/widget"; const widgets = { adguard, @@ -177,6 +178,7 @@ const widgets = { unifi_console: unifi, unmanic, uptimekuma, + urbackup, watchtower, whatsupdocker, xteve, From 31ec795c610036598ff3fff7ffae78541c9efd42 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Sun, 30 Jul 2023 05:30:50 +0000 Subject: [PATCH 539/788] Translated using Weblate (French) Currently translated at 100.0% (490 of 490 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 0b59f5aa..434483c4 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -666,16 +666,16 @@ "ping": "Ping" }, "azuredevops": { - "result": "Result", - "status": "Status", + "result": "Résultat", + "status": "Statut", "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress", - "totalPrs": "Total PRs", - "myPrs": "My PRs", - "approved": "Approved" + "succeeded": "Réussi", + "notStarted": "Arrêté", + "failed": "Échoué", + "canceled": "Annulé", + "inProgress": "En cours", + "totalPrs": "PRs Total", + "myPrs": "Mes PRs", + "approved": "Approuvé" } } From e64a4108b2e9367bc2c49fd57468a42bead2b913 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:21 +0000 Subject: [PATCH 540/788] Translated using Weblate (German) Currently translated at 92.5% (457 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 079ba76a..2f6cc296 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -677,5 +677,11 @@ "myPrs": "My PRs", "approved": "Approved", "inProgress": "In Progress" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e957a033343fb044f5e386fa7eedd978edde162f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:21 +0000 Subject: [PATCH 541/788] Translated using Weblate (Spanish) Currently translated at 96.9% (479 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 788dd60f..69151731 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From ec12139da296fed16f58626a41a56baf842096bd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:22 +0000 Subject: [PATCH 542/788] Translated using Weblate (French) Currently translated at 99.1% (490 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 434483c4..1f2ac278 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -677,5 +677,11 @@ "totalPrs": "PRs Total", "myPrs": "Mes PRs", "approved": "Approuvé" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From c3dce716ee0930d3afbb0f76672f7287fbb96592 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:22 +0000 Subject: [PATCH 543/788] Translated using Weblate (Portuguese) Currently translated at 84.0% (415 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 8b645644..47644342 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -686,5 +686,11 @@ "inProgress": "In Progress", "totalPrs": "Total PRs", "myPrs": "My PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e4a4c64c2b2306c8d0232f53612ebcc22b02a99b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:16 +0000 Subject: [PATCH 544/788] Translated using Weblate (Russian) Currently translated at 86.2% (426 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index f33f112a..879f4e2a 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From f1ad45a0101ac4ce6604c6ea90794a4f9b03a204 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:16 +0000 Subject: [PATCH 545/788] Translated using Weblate (Chinese (Simplified)) Currently translated at 89.8% (444 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 1cf467d2..404b7b79 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 791e9fd95a33c246c4be40b888c3c800d35a7ff3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:13 +0000 Subject: [PATCH 546/788] Translated using Weblate (Italian) Currently translated at 95.1% (470 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 67d19847..a59e1b51 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -677,5 +677,11 @@ "canceled": "Canceled", "inProgress": "In Progress", "totalPrs": "Total PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 0071cadfac5ece707bbadc57543e58c550b670d6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:13 +0000 Subject: [PATCH 547/788] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 16.1% (80 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index d1d13c59..cfe46c8b 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 9053ef53f377cf38d14f1183d02b898a68fb5838 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:24 +0000 Subject: [PATCH 548/788] Translated using Weblate (Vietnamese) Currently translated at 8.9% (44 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 7be92570..821a76e7 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 16ecd7b42600bcb62b0a1c3a5f203198ee3c9a53 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:14 +0000 Subject: [PATCH 549/788] Translated using Weblate (Dutch) Currently translated at 48.7% (241 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 2f80472b..a595171d 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e5490fd5e8364116ff74c4d28ac39430187bfd88 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:18 +0000 Subject: [PATCH 550/788] Translated using Weblate (Chinese (Traditional)) Currently translated at 93.1% (460 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 2a8c7474..ec8262e8 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 1a63587ceb244fde354dcae7343143d51088fc9b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:15 +0000 Subject: [PATCH 551/788] Translated using Weblate (Catalan) Currently translated at 52.6% (260 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 0f8507a3..c147aca3 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "totalUsed": "Used Storage", + "noRecent": "Out of Date" } } From 8138dd832d6f44fd8deecdb79b261e9ab1b9aad8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:08 +0000 Subject: [PATCH 552/788] Translated using Weblate (Polish) Currently translated at 75.7% (374 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 9543cc08..9d02a103 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -677,5 +677,11 @@ "canceled": "Canceled", "inProgress": "In Progress", "totalPrs": "Total PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e338328c23ae103503dc015d124c0cd482e7b05c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:15 +0000 Subject: [PATCH 553/788] Translated using Weblate (Swedish) Currently translated at 26.7% (132 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 9a236530..b570ad19 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -677,5 +677,11 @@ "inProgress": "In Progress", "totalPrs": "Total PRs", "myPrs": "My PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From ea8514fc19e2783b6bb2e2b4418f15cd3ff4e30a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:17 +0000 Subject: [PATCH 554/788] Translated using Weblate (Croatian) Currently translated at 95.1% (470 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index c90d87fe..a8207463 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "noRecent": "Out of Date", + "totalUsed": "Used Storage", + "ok": "Ok", + "errored": "Errors" } } From aecf77c0ef957db880c9645c59ca0e668855867f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:19 +0000 Subject: [PATCH 555/788] Translated using Weblate (Hungarian) Currently translated at 95.3% (471 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index f98ca9d3..d3afc9dc 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -677,5 +677,11 @@ "canceled": "Canceled", "inProgress": "In Progress", "totalPrs": "Total PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 1ae33d6925d1957e2a07ba882c749aedc7351b6c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:19 +0000 Subject: [PATCH 556/788] Translated using Weblate (Hebrew) Currently translated at 20.2% (100 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index cf504e8a..d7a9abb2 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -677,5 +677,11 @@ "myPrs": "My PRs", "totalPrs": "Total PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 59520e4a694c082c972e0c3cffb24ea99ac03147 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:17 +0000 Subject: [PATCH 557/788] Translated using Weblate (Romanian) Currently translated at 30.3% (150 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/ --- public/locales/ro/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ro/common.json b/public/locales/ro/common.json index 87e7620a..6378ef98 100644 --- a/public/locales/ro/common.json +++ b/public/locales/ro/common.json @@ -677,5 +677,11 @@ "succeeded": "Succeeded", "notStarted": "Not Started", "failed": "Failed" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 67608ef79fd157556be38b395defbe682cd71e72 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:17 +0000 Subject: [PATCH 558/788] Translated using Weblate (Portuguese (Brazil)) Currently translated at 93.3% (461 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/ --- public/locales/pt-BR/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/pt-BR/common.json b/public/locales/pt-BR/common.json index 278e2167..63294bfa 100644 --- a/public/locales/pt-BR/common.json +++ b/public/locales/pt-BR/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 0482e86cd18d574b8e281d52da761b096901b1d6 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:24 +0000 Subject: [PATCH 559/788] Translated using Weblate (Yue (Traditional)) Currently translated at 23.6% (117 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/ --- public/locales/yue/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/yue/common.json b/public/locales/yue/common.json index c7216daa..ac44d34f 100644 --- a/public/locales/yue/common.json +++ b/public/locales/yue/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From f5d1ae2c4e3c4f8860e04d7570d988826f367072 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:23 +0000 Subject: [PATCH 560/788] Translated using Weblate (Finnish) Currently translated at 35.8% (177 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/ --- public/locales/fi/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/fi/common.json b/public/locales/fi/common.json index 6d0f62c1..b4f3eead 100644 --- a/public/locales/fi/common.json +++ b/public/locales/fi/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From d935cb35bf96c75f4c458d0fa203544839aeb962 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:23 +0000 Subject: [PATCH 561/788] Translated using Weblate (Telugu) Currently translated at 43.5% (215 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/ --- public/locales/te/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/te/common.json b/public/locales/te/common.json index adee9c1f..8a430982 100644 --- a/public/locales/te/common.json +++ b/public/locales/te/common.json @@ -677,5 +677,11 @@ "canceled": "Canceled", "inProgress": "In Progress", "totalPrs": "Total PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 1666034f1f109be680855b9e8fd41ec5b3564d1f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:13 +0000 Subject: [PATCH 562/788] Translated using Weblate (Bulgarian) Currently translated at 9.3% (46 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/ --- public/locales/bg/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/bg/common.json b/public/locales/bg/common.json index f6a5a60a..630136f2 100644 --- a/public/locales/bg/common.json +++ b/public/locales/bg/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 7a18ec05f18e24e6099db6f82d6df0ffc8444d21 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:14 +0000 Subject: [PATCH 563/788] Translated using Weblate (Turkish) Currently translated at 79.5% (393 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/ --- public/locales/tr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index c4c24e43..206d1a6b 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -677,5 +677,11 @@ "succeeded": "Succeeded", "notStarted": "Not Started", "failed": "Failed" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 4b752bb63a0c7aa0457d897ceb2a18840add0422 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:18 +0000 Subject: [PATCH 564/788] Translated using Weblate (Serbian) Currently translated at 1.8% (9 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/ --- public/locales/sr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/sr/common.json b/public/locales/sr/common.json index 6af0ee76..2a50f318 100644 --- a/public/locales/sr/common.json +++ b/public/locales/sr/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 70ab3984320883232e3b160ccf4abf9253d486b5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:19 +0000 Subject: [PATCH 565/788] Translated using Weblate (Arabic) Currently translated at 53.0% (262 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/ --- public/locales/ar/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ar/common.json b/public/locales/ar/common.json index b92975a0..e4fc6b74 100644 --- a/public/locales/ar/common.json +++ b/public/locales/ar/common.json @@ -677,5 +677,11 @@ "failed": "Failed", "canceled": "Canceled", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From ee4b0ca450e5aeb8880af5ef9c3050a97cd712d4 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:11 +0000 Subject: [PATCH 566/788] Translated using Weblate (Czech) Currently translated at 89.8% (444 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/ --- public/locales/cs/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json index 284431b8..a74e5633 100644 --- a/public/locales/cs/common.json +++ b/public/locales/cs/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 94b2c9c8228266016baa0adb9560e8336a1147f7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:09 +0000 Subject: [PATCH 567/788] Translated using Weblate (Danish) Currently translated at 39.8% (197 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/ --- public/locales/da/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/da/common.json b/public/locales/da/common.json index 2e6b2642..ba89a64f 100644 --- a/public/locales/da/common.json +++ b/public/locales/da/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From c987df8f81253be6f1d7fdc24c2edbbc95429b28 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:09 +0000 Subject: [PATCH 568/788] Translated using Weblate (Malay) Currently translated at 50.8% (251 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/ --- public/locales/ms/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ms/common.json b/public/locales/ms/common.json index 43cc59e2..ca587492 100644 --- a/public/locales/ms/common.json +++ b/public/locales/ms/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 00b0265350931bfa1cecfd37454d1e5ea8c6da7d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:10 +0000 Subject: [PATCH 569/788] Translated using Weblate (Hindi) Currently translated at 1.8% (9 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/ --- public/locales/hi/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index c2d059cb..649daf0c 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -677,5 +677,11 @@ "inProgress": "In Progress", "totalPrs": "Total PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e884707bfc02e2b498a57a225507b1ae27f5a34c Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:11 +0000 Subject: [PATCH 570/788] Translated using Weblate (Esperanto) Currently translated at 29.3% (145 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/ --- public/locales/eo/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/eo/common.json b/public/locales/eo/common.json index bc88d8ca..072f964a 100644 --- a/public/locales/eo/common.json +++ b/public/locales/eo/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 32d803c54b97c8b820161c7ca305db19b2a09fc2 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:11 +0000 Subject: [PATCH 571/788] Translated using Weblate (Ukrainian) Currently translated at 96.9% (479 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/ --- public/locales/uk/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/uk/common.json b/public/locales/uk/common.json index ecdd721f..f781b020 100644 --- a/public/locales/uk/common.json +++ b/public/locales/uk/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 34bea0c0768d6a65c34f35be4b75c97a24b7abc0 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:10 +0000 Subject: [PATCH 572/788] Translated using Weblate (Japanese) Currently translated at 77.9% (385 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/ --- public/locales/ja/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 93619bdc..9b0dd6cf 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 962c34508370d0637dcb543ff0419d888c4a3e00 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:12 +0000 Subject: [PATCH 573/788] Translated using Weblate (Latvian) Currently translated at 23.8% (118 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/ --- public/locales/lv/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/lv/common.json b/public/locales/lv/common.json index d7f92ab6..c0774218 100644 --- a/public/locales/lv/common.json +++ b/public/locales/lv/common.json @@ -677,5 +677,11 @@ "succeeded": "Succeeded", "notStarted": "Not Started", "failed": "Failed" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From d2d2041dd197b69bc8613ca43d9e16bef37b255a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:07 +0000 Subject: [PATCH 574/788] Translated using Weblate (Thai) Currently translated at 9.5% (47 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/ --- public/locales/th/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/th/common.json b/public/locales/th/common.json index 5aab1684..7bd69133 100644 --- a/public/locales/th/common.json +++ b/public/locales/th/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From f3eefd917c93a40a6931fc7d502b2ea43f4bea28 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:20 +0000 Subject: [PATCH 575/788] Translated using Weblate (Slovak) Currently translated at 1.8% (9 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/ --- public/locales/sk/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/sk/common.json b/public/locales/sk/common.json index 6c381759..0479ae26 100644 --- a/public/locales/sk/common.json +++ b/public/locales/sk/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From a4b5cb490c3a1d15ae239a09a25e2894d3a8767f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:20 +0000 Subject: [PATCH 576/788] Translated using Weblate (Korean) Currently translated at 35.0% (173 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/ --- public/locales/ko/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index 3eaeff63..c1f86678 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 43ee714fb06552a0649bd4bd5e628a50e22fa268 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:07 +0000 Subject: [PATCH 577/788] Translated using Weblate (Greek) Currently translated at 28.9% (143 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/ --- public/locales/el/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/el/common.json b/public/locales/el/common.json index 9329908d..96b593ce 100644 --- a/public/locales/el/common.json +++ b/public/locales/el/common.json @@ -677,5 +677,11 @@ "canceled": "Canceled", "inProgress": "In Progress", "totalPrs": "Total PRs" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From e9c7118e53d532eb63858c72130d57fdafc1af01 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:12 +0000 Subject: [PATCH 578/788] Translated using Weblate (Slovenian) Currently translated at 95.3% (471 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/ --- public/locales/sl/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/sl/common.json b/public/locales/sl/common.json index 31003e2c..ff0b6a16 100644 --- a/public/locales/sl/common.json +++ b/public/locales/sl/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From f7aa4f13c8e3c4decf640dfc0fc23dff49cf0e84 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:08 +0000 Subject: [PATCH 579/788] Translated using Weblate (Indonesian) Currently translated at 4.8% (24 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/ --- public/locales/id/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/id/common.json b/public/locales/id/common.json index 80702d0a..2e7682c9 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 62e294a715757ead084677e9e4a2341ab473f0d8 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Sun, 30 Jul 2023 14:20:24 +0000 Subject: [PATCH 580/788] Translated using Weblate (Basque) Currently translated at 6.6% (33 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/ --- public/locales/eu/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/eu/common.json b/public/locales/eu/common.json index 6c1a495c..2c709217 100644 --- a/public/locales/eu/common.json +++ b/public/locales/eu/common.json @@ -677,5 +677,11 @@ "totalPrs": "Total PRs", "myPrs": "My PRs", "approved": "Approved" + }, + "urbackup": { + "ok": "Ok", + "errored": "Errors", + "noRecent": "Out of Date", + "totalUsed": "Used Storage" } } From 206e5034c509d67b47e53e0fac456d70a0215684 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sun, 30 Jul 2023 22:22:30 -0700 Subject: [PATCH 581/788] Include default resource refresh rate --- src/components/widgets/resources/resources.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/widgets/resources/resources.jsx b/src/components/widgets/resources/resources.jsx index 7b226ecb..1a88157e 100644 --- a/src/components/widgets/resources/resources.jsx +++ b/src/components/widgets/resources/resources.jsx @@ -10,6 +10,7 @@ import Uptime from "./uptime"; export default function Resources({ options }) { const { expanded, units } = options; let { refresh } = options; + if (!refresh) refresh = 1500; refresh = Math.max(refresh, 1000); return From 45ee37c86d3bfc584e85ab5495ad806f73699fcb Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 31 Jul 2023 08:31:15 -0700 Subject: [PATCH 582/788] Fix for usage bar percent is 0 --- src/components/widgets/widget/resource.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/widgets/widget/resource.jsx b/src/components/widgets/widget/resource.jsx index 18e7c800..7ca50367 100644 --- a/src/components/widgets/widget/resource.jsx +++ b/src/components/widgets/widget/resource.jsx @@ -15,7 +15,7 @@ export default function Resource({ children, icon, value, label, expandedValue =
    {expandedLabel}
    } - { percentage && } + { percentage >= 0 && } { children }
    ; From 804d9f66deca59b60a3dafbc48b6b6c17d99680a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 31 Jul 2023 09:01:55 -0700 Subject: [PATCH 583/788] Fix authentik queries --- src/widgets/authentik/widget.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/widgets/authentik/widget.js b/src/widgets/authentik/widget.js index 7a7b532f..051c2514 100644 --- a/src/widgets/authentik/widget.js +++ b/src/widgets/authentik/widget.js @@ -9,10 +9,10 @@ const widget = { endpoint: "core/users?page_size=1", }, login: { - endpoint: "events/events/per_month/?action=login&query={}", + endpoint: "events/events/per_month/?action=login", }, login_failed: { - endpoint: "events/events/per_month/?action=login_failed&query={}", + endpoint: "events/events/per_month/?action=login_failed", }, }, }; From 302bff865c24c0ca1ca012f05434d20228c428d7 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Sun, 30 Jul 2023 15:12:12 +0000 Subject: [PATCH 584/788] Translated using Weblate (French) Currently translated at 100.0% (494 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 1f2ac278..29c563c2 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -680,8 +680,8 @@ }, "urbackup": { "ok": "Ok", - "errored": "Errors", - "noRecent": "Out of Date", - "totalUsed": "Used Storage" + "errored": "Erreurs", + "noRecent": "Obsolète", + "totalUsed": "Esp. Utilisé" } } From 9aba70d214d7f3a5b7c66b58fd1482ed19f9d17a Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Tue, 1 Aug 2023 03:54:19 +0300 Subject: [PATCH 585/788] glances widget test 1 --- package.json | 1 + pnpm-lock.yaml | 260 ++++++++++++++++++++++- public/locales/en/common.json | 5 +- src/components/services/item.jsx | 10 +- src/utils/config/service-helpers.js | 6 +- src/utils/proxy/handlers/credentialed.js | 2 + src/widgets/components.js | 1 + src/widgets/glances/chart.jsx | 46 ++++ src/widgets/glances/chart_dual.jsx | 61 ++++++ src/widgets/glances/component.jsx | 34 +++ src/widgets/glances/cpu.jsx | 100 +++++++++ src/widgets/glances/custom_tooltip.jsx | 15 ++ src/widgets/glances/disk.jsx | 113 ++++++++++ src/widgets/glances/memory.jsx | 96 +++++++++ src/widgets/glances/net.jsx | 96 +++++++++ src/widgets/glances/process.jsx | 72 +++++++ src/widgets/glances/sensor.jsx | 99 +++++++++ src/widgets/glances/widget.js | 8 + src/widgets/widgets.js | 2 + 19 files changed, 1018 insertions(+), 9 deletions(-) create mode 100644 src/widgets/glances/chart.jsx create mode 100644 src/widgets/glances/chart_dual.jsx create mode 100644 src/widgets/glances/component.jsx create mode 100644 src/widgets/glances/cpu.jsx create mode 100644 src/widgets/glances/custom_tooltip.jsx create mode 100644 src/widgets/glances/disk.jsx create mode 100644 src/widgets/glances/memory.jsx create mode 100644 src/widgets/glances/net.jsx create mode 100644 src/widgets/glances/process.jsx create mode 100644 src/widgets/glances/sensor.jsx create mode 100644 src/widgets/glances/widget.js diff --git a/package.json b/package.json index 14fedf03..fd9965fd 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "react-dom": "^18.2.0", "react-i18next": "^11.18.6", "react-icons": "^4.4.0", + "recharts": "^2.7.2", "shvl": "^3.0.0", "swr": "^1.3.0", "systeminformation": "^5.17.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1231d8c..d5f41294 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@headlessui/react': specifier: ^1.7.2 @@ -61,6 +65,9 @@ dependencies: react-icons: specifier: ^4.4.0 version: 4.8.0(react@18.2.0) + recharts: + specifier: ^2.7.2 + version: 2.7.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) shvl: specifier: ^3.0.0 version: 3.0.0 @@ -435,6 +442,48 @@ packages: tailwindcss: 3.3.0(postcss@8.4.21) dev: true + /@types/d3-array@3.0.5: + resolution: {integrity: sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==} + dev: false + + /@types/d3-color@3.1.0: + resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + dev: false + + /@types/d3-ease@3.0.0: + resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} + dev: false + + /@types/d3-interpolate@3.0.1: + resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + dependencies: + '@types/d3-color': 3.1.0 + dev: false + + /@types/d3-path@3.0.0: + resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} + dev: false + + /@types/d3-scale@4.0.3: + resolution: {integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==} + dependencies: + '@types/d3-time': 3.0.0 + dev: false + + /@types/d3-shape@3.1.1: + resolution: {integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==} + dependencies: + '@types/d3-path': 3.0.0 + dev: false + + /@types/d3-time@3.0.0: + resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} + dev: false + + /@types/d3-timer@3.0.0: + resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} + dev: false + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: @@ -785,6 +834,7 @@ packages: /buildcheck@0.0.3: resolution: {integrity: sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==} engines: {node: '>=10.0.0'} + requiresBuild: true dev: false optional: true @@ -1020,6 +1070,10 @@ packages: nth-check: 2.1.1 dev: false + /css-unit-converter@1.1.2: + resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} + dev: false + /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -1034,6 +1088,77 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: false + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true @@ -1067,6 +1192,10 @@ packages: dependencies: ms: 2.1.2 + /decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + dev: false + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -1175,6 +1304,12 @@ packages: esutils: 2.0.3 dev: true + /dom-helpers@3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + /dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: @@ -1654,6 +1789,10 @@ packages: deprecated: Use promise-toolbox/fromEvent instead dev: false + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + /execa@5.0.0: resolution: {integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==} engines: {node: '>=10'} @@ -1685,6 +1824,11 @@ packages: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true + /fast-equals@5.0.1: + resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} + engines: {node: '>=6.0.0'} + dev: false + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -2158,6 +2302,11 @@ packages: side-channel: 1.0.4 dev: true + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false + /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -2361,6 +2510,7 @@ packages: /jose@4.13.1: resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} + requiresBuild: true dev: false optional: true @@ -2480,6 +2630,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + /logform@2.5.1: resolution: {integrity: sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==} dependencies: @@ -2623,6 +2777,7 @@ packages: /nan@2.17.0: resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + requiresBuild: true dev: false optional: true @@ -2755,11 +2910,11 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} + requiresBuild: true dev: false optional: true @@ -2832,6 +2987,7 @@ packages: /oidc-token-hash@5.0.1: resolution: {integrity: sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==} engines: {node: ^10.13.0 || >=12.0.0} + requiresBuild: true dev: false optional: true @@ -3023,6 +3179,10 @@ packages: util-deprecate: 1.0.2 dev: true + /postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + dev: false + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true @@ -3077,7 +3237,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: true /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -3162,6 +3321,49 @@ packages: /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-smooth@2.0.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yl4y3XiMorss7ayF5QnBiSprig0+qFHui8uh7Hgg46QX5O+aRMRKlfGGNGLHno35JkQSvSYY8eCWkBfHfrSHfg==} + peerDependencies: + prop-types: ^15.6.0 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + fast-equals: 5.0.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 2.9.0(react-dom@18.2.0)(react@18.2.0) + dev: false + + /react-transition-group@2.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + dependencies: + dom-helpers: 3.4.0 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -3212,6 +3414,34 @@ packages: picomatch: 2.3.1 dev: true + /recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + dependencies: + decimal.js-light: 2.5.1 + dev: false + + /recharts@2.7.2(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HMKRBkGoOXHW+7JcRa6+MukPSifNtJlqbc+JreGVNA407VLE/vOP+8n3YYjprDVVIF9E2ZgwWnL3D7K/LUFzBg==} + engines: {node: '>=12'} + peerDependencies: + prop-types: ^15.6.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.3.2 + eventemitter3: 4.0.7 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + react-resize-detector: 8.1.0(react-dom@18.2.0)(react@18.2.0) + react-smooth: 2.0.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) + recharts-scale: 0.4.5 + reduce-css-calc: 2.1.8 + victory-vendor: 36.6.11 + dev: false + /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -3219,6 +3449,13 @@ packages: resolve: 1.22.1 dev: false + /reduce-css-calc@2.1.8: + resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} + dependencies: + css-unit-converter: 1.1.2 + postcss-value-parser: 3.3.1 + dev: false + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -3896,6 +4133,25 @@ packages: extsprintf: 1.3.0 dev: false + /victory-vendor@36.6.11: + resolution: {integrity: sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==} + dependencies: + '@types/d3-array': 3.0.5 + '@types/d3-ease': 3.0.0 + '@types/d3-interpolate': 3.0.1 + '@types/d3-scale': 4.0.3 + '@types/d3-shape': 3.1.1 + '@types/d3-time': 3.0.0 + '@types/d3-timer': 3.0.0 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + dev: false + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 46d8e991..7a8fe023 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -371,7 +371,10 @@ "free": "Free", "used": "Used", "days": "d", - "hours": "h" + "hours": "h", + "crit": "Crit", + "read": "Read", + "write": "Write" }, "quicklaunch": { "bookmark": "Bookmark", diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 36e454ce..a5743fb1 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -34,9 +34,9 @@ export default function Item({ service, group }) {
    -
    +
    {service.icon && (hasLink ? ( -
    +
    {service.name}

    {service.description}

    ) : (
    -
    +
    {service.name}

    {service.description}

    )} -
    +
    {service.ping && (
    diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 92fa7b22..1e241e46 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -294,7 +294,8 @@ export function cleanServiceGroups(groups) { snapshotHost, // kopia snapshotPath, userEmail, // azuredevops - repositoryId + repositoryId, + metric, // glances } = cleanedService.widget; let fieldsList = fields; @@ -358,6 +359,9 @@ export function cleanServiceGroups(groups) { if (snapshotHost) cleanedService.widget.snapshotHost = snapshotHost; if (snapshotPath) cleanedService.widget.snapshotPath = snapshotPath; } + if (type === "glances") { + if (metric) cleanedService.widget.metric = metric; + } } return cleanedService; diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 498c0d6d..d0321cb8 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -64,6 +64,8 @@ export default async function credentialedProxyHandler(req, res, map) { } else if (widget.type === "azuredevops") { headers.Authorization = `Basic ${Buffer.from(`$:${widget.key}`).toString("base64")}`; + } else if (widget.type === "glances") { + headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; } else { headers["X-API-Key"] = `${widget.key}`; } diff --git a/src/widgets/components.js b/src/widgets/components.js index ddaca4cf..851322e7 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -24,6 +24,7 @@ const components = { freshrss: dynamic(() => import("./freshrss/component")), gamedig: dynamic(() => import("./gamedig/component")), ghostfolio: dynamic(() => import("./ghostfolio/component")), + glances: dynamic(() => import("./glances/component")), gluetun: dynamic(() => import("./gluetun/component")), gotify: dynamic(() => import("./gotify/component")), grafana: dynamic(() => import("./grafana/component")), diff --git a/src/widgets/glances/chart.jsx b/src/widgets/glances/chart.jsx new file mode 100644 index 00000000..448bb99b --- /dev/null +++ b/src/widgets/glances/chart.jsx @@ -0,0 +1,46 @@ +import { PureComponent } from "react"; +import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; + +import CustomTooltip from "./custom_tooltip"; + +class Chart extends PureComponent { + render() { + const { dataPoints, formatter, label } = this.props; + + return ( +
    + + + + + + + + + + } + classNames="rounded-md text-xs p-0.5" + contentStyle={{ + backgroundColor: "rgb(var(--color-800))", + color: "rgb(var(--color-100))" + }} + /> + + +
    + ); + } +} + +export default Chart; diff --git a/src/widgets/glances/chart_dual.jsx b/src/widgets/glances/chart_dual.jsx new file mode 100644 index 00000000..ceecacba --- /dev/null +++ b/src/widgets/glances/chart_dual.jsx @@ -0,0 +1,61 @@ +import { PureComponent } from "react"; +import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; + +import CustomTooltip from "./custom_tooltip"; + +class ChartDual extends PureComponent { + render() { + const { dataPoints, formatter, stack, label } = this.props; + + return ( +
    + + + + + + + + + + + + + + + + } + classNames="rounded-md text-xs p-0.5" + contentStyle={{ + backgroundColor: "rgb(var(--color-800))", + color: "rgb(var(--color-100))" + }} + + /> + + +
    + ); + } +} + +export default ChartDual; diff --git a/src/widgets/glances/component.jsx b/src/widgets/glances/component.jsx new file mode 100644 index 00000000..5eeff280 --- /dev/null +++ b/src/widgets/glances/component.jsx @@ -0,0 +1,34 @@ +import Memory from "./memory"; +import Cpu from "./cpu"; +import Sensor from "./sensor"; +import Net from "./net"; +import Process from "./process"; +import Disk from "./disk"; + +export default function Component({ service }) { + const { widget } = service; + + if (widget.metric === "memory") { + return ; + } + + if (widget.metric === "process") { + return ; + } + + if (widget.metric.match(/^network:/)) { + return ; + } + + if (widget.metric.match(/^sensor:/)) { + return ; + } + + if (widget.metric.match(/^disk:/)) { + return ; + } + + if (widget.metric === "cpu") { + return ; + } +} diff --git a/src/widgets/glances/cpu.jsx b/src/widgets/glances/cpu.jsx new file mode 100644 index 00000000..daec91e0 --- /dev/null +++ b/src/widgets/glances/cpu.jsx @@ -0,0 +1,100 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const Chart = dynamic(() => import("./chart"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'cpu', { + refreshInterval: 1000, + }); + + const { data: systemData, error: systemError } = useWidgetAPI(service.widget, 'system'); + + useEffect(() => { + if (data) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { value: data.total }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data]); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + + return ( + <> +
    + t("common.number", { + value, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} + /> +
    +
    + {systemData && !systemError && ( + <> + {systemData.linux_distro && ( +
    + {systemData.linux_distro} +
    + )} + {systemData.os_version && ( +
    + {systemData.os_version} +
    + )} + {systemData.hostname && ( +
    + {systemData.hostname} +
    + )} + + )} +
    +
    + {t("common.number", { + value: data.total, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} {t("resources.used")} +
    +
    + + ); +} diff --git a/src/widgets/glances/custom_tooltip.jsx b/src/widgets/glances/custom_tooltip.jsx new file mode 100644 index 00000000..ef3881ef --- /dev/null +++ b/src/widgets/glances/custom_tooltip.jsx @@ -0,0 +1,15 @@ +export default function Tooltip({ active, payload, formatter }) { + if (active && payload && payload.length) { + return ( +
    + {payload.map((pld, id) => ( +
    +
    {formatter(pld.value)} {payload[id].name}
    +
    + ))} +
    + ); + } + + return null; +}; diff --git a/src/widgets/glances/disk.jsx b/src/widgets/glances/disk.jsx new file mode 100644 index 00000000..7ad783ac --- /dev/null +++ b/src/widgets/glances/disk.jsx @@ -0,0 +1,113 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const [, diskName] = widget.metric.split(':'); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ read_bytes: 0, write_bytes: 0, time_since_update: 0 }, 0, pointsLimit)); + const [ratePoints, setRatePoints] = useState(new Array(pointsLimit).fill({ a: 0, b: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'diskio', { + refreshInterval: 1000, + }); + + const calculateRates = (d) => d.map(item => ({ + a: item.read_bytes / item.time_since_update, + b: item.write_bytes / item.time_since_update + })); + + useEffect(() => { + if (data) { + const diskData = data.find((item) => item.disk_name === diskName); + + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, diskData]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data, diskName]); + + useEffect(() => { + setRatePoints(calculateRates(dataPoints)); + }, [dataPoints]); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + + const diskData = data.find((item) => item.disk_name === diskName); + + if (!diskData) { + return
    +
    +
    ; + } + + const diskRates = calculateRates(dataPoints); + const currentRate = diskRates[diskRates.length - 1]; + + return ( + <> +
    + t("common.bitrate", { + value, + })} + /> +
    +
    + {currentRate && !error && ( + <> +
    + {t("common.bitrate", { + value: currentRate.a, + })} {t("glances.read")} +
    +
    + {t("common.bitrate", { + value: currentRate.b, + })} {t("glances.write")} +
    + + )} +
    +
    + {t("common.bitrate", { + value: currentRate.a + currentRate.b, + })} +
    +
    + + ); +} diff --git a/src/widgets/glances/memory.jsx b/src/widgets/glances/memory.jsx new file mode 100644 index 00000000..0e6002ee --- /dev/null +++ b/src/widgets/glances/memory.jsx @@ -0,0 +1,96 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'mem', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { a: data.used, b: data.free }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data]); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + + return ( + <> +
    + t("common.bytes", { + value, + maximumFractionDigits: 0, + })} + /> +
    +
    + {data && !error && ( + <> + {data.free && ( +
    + {t("common.bytes", { + value: data.free, + maximumFractionDigits: 0, + })} {t("resources.free")} +
    + )} + + {data.total && ( +
    + {t("common.bytes", { + value: data.total, + maximumFractionDigits: 0, + })} {t("resources.total")} +
    + )} + + )} +
    +
    + {t("common.bytes", { + value: data.used, + maximumFractionDigits: 0, + })} {t("resources.used")} +
    +
    + + ); +} diff --git a/src/widgets/glances/net.jsx b/src/widgets/glances/net.jsx new file mode 100644 index 00000000..a630ae74 --- /dev/null +++ b/src/widgets/glances/net.jsx @@ -0,0 +1,96 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const [, interfaceName] = widget.metric.split(':'); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(widget, 'network', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + const interfaceData = data.find((item) => item[item.key] === interfaceName); + + if (interfaceData) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { a: interfaceData.tx, b: interfaceData.rx }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + } + }, [data, interfaceName]); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + const interfaceData = data.find((item) => item[item.key] === interfaceName); + + if (!interfaceData) { + return
    +
    +
    ; + } + + return ( + <> +
    + t("common.byterate", { + value, + maximumFractionDigits: 0, + })} + /> +
    +
    + {interfaceData && interfaceData.interface_name && ( +
    + {interfaceData.interface_name} +
    + )} + {t("common.bitrate", { + value: interfaceData.tx, + maximumFractionDigits: 0, + })} {t("docker.tx")} +
    +
    + {t("common.bitrate", { + value: interfaceData.rx, + maximumFractionDigits: 0, + })} {t("docker.rx")} +
    +
    + + ); +} diff --git a/src/widgets/glances/process.jsx b/src/widgets/glances/process.jsx new file mode 100644 index 00000000..7d9785e6 --- /dev/null +++ b/src/widgets/glances/process.jsx @@ -0,0 +1,72 @@ +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; +import ResolvedIcon from "components/resolvedicon"; + +const statusMap = { + "R": , // running + "S": , // sleeping + "D": , // disk sleep + "Z": , // zombie + "T": , // traced + "t": , // traced + "X": , // dead +}; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { data, error } = useWidgetAPI(service.widget, 'processlist', { + refreshInterval: 1000, + }); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + + data.splice(5); + + return ( + <> +
    +
    +
    +
    {t("resources.cpu")}
    +
    {t("resources.mem")}
    +
    +
    +
    + { data.map((item) =>
    +
    +
    + {statusMap[item.status]} +
    +
    {item.name}
    +
    {item.cpu_percent.toFixed(1)}%
    +
    {t("common.bytes", { + value: item.memory_info[0], + maximumFractionDigits: 0, + })}
    +
    +
    ) } +
    +
    + + ); +} diff --git a/src/widgets/glances/sensor.jsx b/src/widgets/glances/sensor.jsx new file mode 100644 index 00000000..32d01eb2 --- /dev/null +++ b/src/widgets/glances/sensor.jsx @@ -0,0 +1,99 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const Chart = dynamic(() => import("./chart"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const [, sensorName] = widget.metric.split(':'); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'sensors', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + const sensorData = data.find((item) => item.label === sensorName); + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { value: sensorData.value }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data, sensorName]); + + if (error) { + return
    +
    +
    + {t("widget.api_error")} +
    +
    +
    ; + } + + if (!data) { + return
    +
    +
    + - +
    +
    +
    ; + } + + const sensorData = data.find((item) => item.label === sensorName); + + if (!sensorData) { + return
    +
    +
    ; + } + + return ( + <> +
    + t("common.number", { + value, + })} + /> +
    +
    + {sensorData && !error && ( + <> + {sensorData.warning && ( +
    + {sensorData.warning}{sensorData.unit} {t("glances.warn")} +
    + )} + {sensorData.critical && ( +
    + {sensorData.critical} {sensorData.unit} {t("glances.crit")} +
    + )} + + )} +
    +
    + {t("common.number", { + value: sensorData.value, + })} {sensorData.unit} +
    +
    + + ); +} diff --git a/src/widgets/glances/widget.js b/src/widgets/glances/widget.js new file mode 100644 index 00000000..3da1c6d1 --- /dev/null +++ b/src/widgets/glances/widget.js @@ -0,0 +1,8 @@ +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; + +const widget = { + api: "{url}/api/3/{endpoint}", + proxyHandler: credentialedProxyHandler, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 46143447..41a31253 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -19,6 +19,7 @@ import flood from "./flood/widget"; import freshrss from "./freshrss/widget"; import gamedig from "./gamedig/widget"; import ghostfolio from "./ghostfolio/widget"; +import glances from "./glances/widget"; import gluetun from "./gluetun/widget"; import gotify from "./gotify/widget"; import grafana from "./grafana/widget"; @@ -111,6 +112,7 @@ const widgets = { freshrss, gamedig, ghostfolio, + glances, gluetun, gotify, grafana, From b77909a360c3d4329fa4a3ec90c1f3add5f1c67b Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Tue, 1 Aug 2023 13:05:17 +0300 Subject: [PATCH 586/788] refactor widget --- src/widgets/glances/chart.jsx | 46 -------- src/widgets/glances/chart_dual.jsx | 61 ----------- src/widgets/glances/component.jsx | 12 +-- src/widgets/glances/components/block.jsx | 9 ++ src/widgets/glances/components/chart.jsx | 48 +++++++++ src/widgets/glances/components/chart_dual.jsx | 63 +++++++++++ src/widgets/glances/components/container.jsx | 8 ++ .../{ => components}/custom_tooltip.jsx | 0 src/widgets/glances/components/error.jsx | 9 ++ src/widgets/glances/cpu.jsx | 100 ------------------ src/widgets/glances/memory.jsx | 96 ----------------- src/widgets/glances/metrics/cpu.jsx | 91 ++++++++++++++++ src/widgets/glances/{ => metrics}/disk.jsx | 91 +++++++--------- src/widgets/glances/metrics/memory.jsx | 88 +++++++++++++++ src/widgets/glances/{ => metrics}/net.jsx | 84 +++++++-------- src/widgets/glances/{ => metrics}/process.jsx | 46 ++++---- src/widgets/glances/metrics/sensor.jsx | 88 +++++++++++++++ src/widgets/glances/sensor.jsx | 99 ----------------- 18 files changed, 510 insertions(+), 529 deletions(-) delete mode 100644 src/widgets/glances/chart.jsx delete mode 100644 src/widgets/glances/chart_dual.jsx create mode 100644 src/widgets/glances/components/block.jsx create mode 100644 src/widgets/glances/components/chart.jsx create mode 100644 src/widgets/glances/components/chart_dual.jsx create mode 100644 src/widgets/glances/components/container.jsx rename src/widgets/glances/{ => components}/custom_tooltip.jsx (100%) create mode 100644 src/widgets/glances/components/error.jsx delete mode 100644 src/widgets/glances/cpu.jsx delete mode 100644 src/widgets/glances/memory.jsx create mode 100644 src/widgets/glances/metrics/cpu.jsx rename src/widgets/glances/{ => metrics}/disk.jsx (50%) create mode 100644 src/widgets/glances/metrics/memory.jsx rename src/widgets/glances/{ => metrics}/net.jsx (50%) rename src/widgets/glances/{ => metrics}/process.jsx (60%) create mode 100644 src/widgets/glances/metrics/sensor.jsx delete mode 100644 src/widgets/glances/sensor.jsx diff --git a/src/widgets/glances/chart.jsx b/src/widgets/glances/chart.jsx deleted file mode 100644 index 448bb99b..00000000 --- a/src/widgets/glances/chart.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import { PureComponent } from "react"; -import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; - -import CustomTooltip from "./custom_tooltip"; - -class Chart extends PureComponent { - render() { - const { dataPoints, formatter, label } = this.props; - - return ( -
    - - - - - - - - - - } - classNames="rounded-md text-xs p-0.5" - contentStyle={{ - backgroundColor: "rgb(var(--color-800))", - color: "rgb(var(--color-100))" - }} - /> - - -
    - ); - } -} - -export default Chart; diff --git a/src/widgets/glances/chart_dual.jsx b/src/widgets/glances/chart_dual.jsx deleted file mode 100644 index ceecacba..00000000 --- a/src/widgets/glances/chart_dual.jsx +++ /dev/null @@ -1,61 +0,0 @@ -import { PureComponent } from "react"; -import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; - -import CustomTooltip from "./custom_tooltip"; - -class ChartDual extends PureComponent { - render() { - const { dataPoints, formatter, stack, label } = this.props; - - return ( -
    - - - - - - - - - - - - - - - - } - classNames="rounded-md text-xs p-0.5" - contentStyle={{ - backgroundColor: "rgb(var(--color-800))", - color: "rgb(var(--color-100))" - }} - - /> - - -
    - ); - } -} - -export default ChartDual; diff --git a/src/widgets/glances/component.jsx b/src/widgets/glances/component.jsx index 5eeff280..4fa1a9ff 100644 --- a/src/widgets/glances/component.jsx +++ b/src/widgets/glances/component.jsx @@ -1,9 +1,9 @@ -import Memory from "./memory"; -import Cpu from "./cpu"; -import Sensor from "./sensor"; -import Net from "./net"; -import Process from "./process"; -import Disk from "./disk"; +import Memory from "./metrics/memory"; +import Cpu from "./metrics/cpu"; +import Sensor from "./metrics/sensor"; +import Net from "./metrics/net"; +import Process from "./metrics/process"; +import Disk from "./metrics/disk"; export default function Component({ service }) { const { widget } = service; diff --git a/src/widgets/glances/components/block.jsx b/src/widgets/glances/components/block.jsx new file mode 100644 index 00000000..73cf86c9 --- /dev/null +++ b/src/widgets/glances/components/block.jsx @@ -0,0 +1,9 @@ +export default function Block({ position, children }) { + const positionClasses = Object.entries(position).map(([key, value]) => `${key}-${value}`).join(' '); + + return ( +
    + {children} +
    + ); +} diff --git a/src/widgets/glances/components/chart.jsx b/src/widgets/glances/components/chart.jsx new file mode 100644 index 00000000..2cd01107 --- /dev/null +++ b/src/widgets/glances/components/chart.jsx @@ -0,0 +1,48 @@ +import { PureComponent } from "react"; +import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; + +import CustomTooltip from "./custom_tooltip"; + +class Chart extends PureComponent { + render() { + const { dataPoints, formatter, label } = this.props; + + return ( +
    +
    + + + + + + + + + + } + classNames="rounded-md text-xs p-0.5" + contentStyle={{ + backgroundColor: "rgb(var(--color-800))", + color: "rgb(var(--color-100))" + }} + /> + + +
    +
    + ); + } +} + +export default Chart; diff --git a/src/widgets/glances/components/chart_dual.jsx b/src/widgets/glances/components/chart_dual.jsx new file mode 100644 index 00000000..14f5e4e6 --- /dev/null +++ b/src/widgets/glances/components/chart_dual.jsx @@ -0,0 +1,63 @@ +import { PureComponent } from "react"; +import { AreaChart, Area, ResponsiveContainer, Tooltip } from "recharts"; + +import CustomTooltip from "./custom_tooltip"; + +class ChartDual extends PureComponent { + render() { + const { dataPoints, formatter, stack, label } = this.props; + + return ( +
    +
    + + + + + + + + + + + + + + + + } + classNames="rounded-md text-xs p-0.5" + contentStyle={{ + backgroundColor: "rgb(var(--color-800))", + color: "rgb(var(--color-100))" + }} + + /> + + +
    +
    + ); + } +} + +export default ChartDual; diff --git a/src/widgets/glances/components/container.jsx b/src/widgets/glances/components/container.jsx new file mode 100644 index 00000000..d141cab6 --- /dev/null +++ b/src/widgets/glances/components/container.jsx @@ -0,0 +1,8 @@ +export default function Container({ children }) { + return ( +
    + {children} +
    +
    + ); +} diff --git a/src/widgets/glances/custom_tooltip.jsx b/src/widgets/glances/components/custom_tooltip.jsx similarity index 100% rename from src/widgets/glances/custom_tooltip.jsx rename to src/widgets/glances/components/custom_tooltip.jsx diff --git a/src/widgets/glances/components/error.jsx b/src/widgets/glances/components/error.jsx new file mode 100644 index 00000000..6e3b4da0 --- /dev/null +++ b/src/widgets/glances/components/error.jsx @@ -0,0 +1,9 @@ +import { useTranslation } from "next-i18next"; + +export default function Error() { + const { t } = useTranslation(); + + return
    + {t("widget.api_error")} +
    ; +} diff --git a/src/widgets/glances/cpu.jsx b/src/widgets/glances/cpu.jsx deleted file mode 100644 index daec91e0..00000000 --- a/src/widgets/glances/cpu.jsx +++ /dev/null @@ -1,100 +0,0 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; -import { useTranslation } from "next-i18next"; - -import useWidgetAPI from "utils/proxy/use-widget-api"; - -const Chart = dynamic(() => import("./chart"), { ssr: false }); - -const pointsLimit = 15; - -export default function Component({ service }) { - const { t } = useTranslation(); - - const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); - - const { data, error } = useWidgetAPI(service.widget, 'cpu', { - refreshInterval: 1000, - }); - - const { data: systemData, error: systemError } = useWidgetAPI(service.widget, 'system'); - - useEffect(() => { - if (data) { - setDataPoints((prevDataPoints) => { - const newDataPoints = [...prevDataPoints, { value: data.total }]; - if (newDataPoints.length > pointsLimit) { - newDataPoints.shift(); - } - return newDataPoints; - }); - } - }, [data]); - - if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; - } - - if (!data) { - return
    -
    -
    - - -
    -
    -
    ; - } - - return ( - <> -
    - t("common.number", { - value, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} - /> -
    -
    - {systemData && !systemError && ( - <> - {systemData.linux_distro && ( -
    - {systemData.linux_distro} -
    - )} - {systemData.os_version && ( -
    - {systemData.os_version} -
    - )} - {systemData.hostname && ( -
    - {systemData.hostname} -
    - )} - - )} -
    -
    - {t("common.number", { - value: data.total, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, - })} {t("resources.used")} -
    -
    - - ); -} diff --git a/src/widgets/glances/memory.jsx b/src/widgets/glances/memory.jsx deleted file mode 100644 index 0e6002ee..00000000 --- a/src/widgets/glances/memory.jsx +++ /dev/null @@ -1,96 +0,0 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; -import { useTranslation } from "next-i18next"; - -import useWidgetAPI from "utils/proxy/use-widget-api"; - -const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); - -const pointsLimit = 15; - -export default function Component({ service }) { - const { t } = useTranslation(); - - const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); - - const { data, error } = useWidgetAPI(service.widget, 'mem', { - refreshInterval: 1000, - }); - - useEffect(() => { - if (data) { - setDataPoints((prevDataPoints) => { - const newDataPoints = [...prevDataPoints, { a: data.used, b: data.free }]; - if (newDataPoints.length > pointsLimit) { - newDataPoints.shift(); - } - return newDataPoints; - }); - } - }, [data]); - - if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; - } - if (!data) { - return
    -
    -
    - - -
    -
    -
    ; - } - - return ( - <> -
    - t("common.bytes", { - value, - maximumFractionDigits: 0, - })} - /> -
    -
    - {data && !error && ( - <> - {data.free && ( -
    - {t("common.bytes", { - value: data.free, - maximumFractionDigits: 0, - })} {t("resources.free")} -
    - )} - - {data.total && ( -
    - {t("common.bytes", { - value: data.total, - maximumFractionDigits: 0, - })} {t("resources.total")} -
    - )} - - )} -
    -
    - {t("common.bytes", { - value: data.used, - maximumFractionDigits: 0, - })} {t("resources.used")} -
    -
    - - ); -} diff --git a/src/widgets/glances/metrics/cpu.jsx b/src/widgets/glances/metrics/cpu.jsx new file mode 100644 index 00000000..a93abbc7 --- /dev/null +++ b/src/widgets/glances/metrics/cpu.jsx @@ -0,0 +1,91 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const Chart = dynamic(() => import("../components/chart"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'cpu', { + refreshInterval: 1000, + }); + + const { data: systemData, error: systemError } = useWidgetAPI(service.widget, 'system'); + + useEffect(() => { + if (data) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { value: data.total }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data]); + + if (error) { + return ; + } + + if (!data) { + return -; + } + + return ( + + t("common.number", { + value, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} + /> + + {systemData && !systemError && ( + + {systemData.linux_distro && ( +
    + {systemData.linux_distro} +
    + )} + {systemData.os_version && ( +
    + {systemData.os_version} +
    + )} + {systemData.hostname && ( +
    + {systemData.hostname} +
    + )} +
    + )} + + +
    + {t("common.number", { + value: data.total, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} {t("resources.used")} +
    +
    +
    + ); +} diff --git a/src/widgets/glances/disk.jsx b/src/widgets/glances/metrics/disk.jsx similarity index 50% rename from src/widgets/glances/disk.jsx rename to src/widgets/glances/metrics/disk.jsx index 7ad783ac..dcb1dc71 100644 --- a/src/widgets/glances/disk.jsx +++ b/src/widgets/glances/metrics/disk.jsx @@ -2,9 +2,13 @@ import dynamic from "next/dynamic"; import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + import useWidgetAPI from "utils/proxy/use-widget-api"; -const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); +const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false }); const pointsLimit = 15; @@ -44,70 +48,55 @@ export default function Component({ service }) { }, [dataPoints]); if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; + return ; } if (!data) { - return
    -
    -
    - - -
    -
    -
    ; + return -; } const diskData = data.find((item) => item.disk_name === diskName); if (!diskData) { - return
    -
    -
    ; + return -; } const diskRates = calculateRates(dataPoints); const currentRate = diskRates[diskRates.length - 1]; return ( - <> -
    + t("common.bitrate", { - value, - })} - /> -
    -
    - {currentRate && !error && ( - <> -
    - {t("common.bitrate", { - value: currentRate.a, - })} {t("glances.read")} -
    -
    - {t("common.bitrate", { - value: currentRate.b, - })} {t("glances.write")} -
    - - )} -
    -
    - {t("common.bitrate", { - value: currentRate.a + currentRate.b, - })} -
    -
    - + dataPoints={ratePoints} + label={[t("glances.read"), t("glances.write")]} + max={diskData.critical} + formatter={(value) => t("common.bitrate", { + value, + })} + /> + + {currentRate && !error && ( + +
    + {t("common.bitrate", { + value: currentRate.a, + })} {t("glances.read")} +
    +
    + {t("common.bitrate", { + value: currentRate.b, + })} {t("glances.write")} +
    +
    + )} + + +
    + {t("common.bitrate", { + value: currentRate.a + currentRate.b, + })} +
    +
    + ); } diff --git a/src/widgets/glances/metrics/memory.jsx b/src/widgets/glances/metrics/memory.jsx new file mode 100644 index 00000000..f9d0cd15 --- /dev/null +++ b/src/widgets/glances/metrics/memory.jsx @@ -0,0 +1,88 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'mem', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { a: data.used, b: data.free }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data]); + + if (error) { + return ; + } + + if (!data) { + return -; + } + + return ( + + t("common.bytes", { + value, + maximumFractionDigits: 0, + })} + /> + + {data && !error && ( + + {data.free && ( +
    + {t("common.bytes", { + value: data.free, + maximumFractionDigits: 0, + })} {t("resources.free")} +
    + )} + + {data.total && ( +
    + {t("common.bytes", { + value: data.total, + maximumFractionDigits: 0, + })} {t("resources.total")} +
    + )} +
    + )} + + +
    + {t("common.bytes", { + value: data.used, + maximumFractionDigits: 0, + })} {t("resources.used")} +
    +
    +
    + ); +} diff --git a/src/widgets/glances/net.jsx b/src/widgets/glances/metrics/net.jsx similarity index 50% rename from src/widgets/glances/net.jsx rename to src/widgets/glances/metrics/net.jsx index a630ae74..15233b42 100644 --- a/src/widgets/glances/net.jsx +++ b/src/widgets/glances/metrics/net.jsx @@ -2,9 +2,13 @@ import dynamic from "next/dynamic"; import { useState, useEffect } from "react"; import { useTranslation } from "next-i18next"; +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + import useWidgetAPI from "utils/proxy/use-widget-api"; -const ChartDual = dynamic(() => import("./chart_dual"), { ssr: false }); +const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false }); const pointsLimit = 15; @@ -36,61 +40,53 @@ export default function Component({ service }) { }, [data, interfaceName]); if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; + return ; } + if (!data) { - return
    -
    -
    - - -
    -
    -
    ; + return -; } + const interfaceData = data.find((item) => item[item.key] === interfaceName); if (!interfaceData) { - return
    -
    -
    ; + return -; } return ( - <> -
    - t("common.byterate", { - value, - maximumFractionDigits: 0, - })} - /> -
    -
    + + t("common.byterate", { + value, + maximumFractionDigits: 0, + })} + /> + + {interfaceData && interfaceData.interface_name && ( -
    +
    {interfaceData.interface_name}
    )} - {t("common.bitrate", { - value: interfaceData.tx, - maximumFractionDigits: 0, - })} {t("docker.tx")} -
    -
    - {t("common.bitrate", { - value: interfaceData.rx, - maximumFractionDigits: 0, - })} {t("docker.rx")} -
    -
    - + +
    + {t("common.bitrate", { + value: interfaceData.tx, + maximumFractionDigits: 0, + })} {t("docker.tx")} +
    + + + +
    + {t("common.bitrate", { + value: interfaceData.rx, + maximumFractionDigits: 0, + })} {t("docker.rx")} +
    +
    + ); } diff --git a/src/widgets/glances/process.jsx b/src/widgets/glances/metrics/process.jsx similarity index 60% rename from src/widgets/glances/process.jsx rename to src/widgets/glances/metrics/process.jsx index 7d9785e6..bf606a75 100644 --- a/src/widgets/glances/process.jsx +++ b/src/widgets/glances/metrics/process.jsx @@ -1,5 +1,9 @@ import { useTranslation } from "next-i18next"; +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + import useWidgetAPI from "utils/proxy/use-widget-api"; import ResolvedIcon from "components/resolvedicon"; @@ -21,52 +25,42 @@ export default function Component({ service }) { }); if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; + return ; } if (!data) { - return
    -
    -
    - - -
    -
    -
    ; + return -; } data.splice(5); return ( - <> -
    + +
    {t("resources.cpu")}
    {t("resources.mem")}
    -
    -
    - { data.map((item) =>
    + + + +
    + { data.map((item) =>
    -
    +
    {statusMap[item.status]}
    -
    {item.name}
    -
    {item.cpu_percent.toFixed(1)}%
    -
    {t("common.bytes", { +
    {item.name}
    +
    {item.cpu_percent.toFixed(1)}%
    +
    {t("common.bytes", { value: item.memory_info[0], maximumFractionDigits: 0, })}
    ) } -
    -
    - +
    + + ); } diff --git a/src/widgets/glances/metrics/sensor.jsx b/src/widgets/glances/metrics/sensor.jsx new file mode 100644 index 00000000..9be5666f --- /dev/null +++ b/src/widgets/glances/metrics/sensor.jsx @@ -0,0 +1,88 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const Chart = dynamic(() => import("../components/chart"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const [, sensorName] = widget.metric.split(':'); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(service.widget, 'sensors', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + const sensorData = data.find((item) => item.label === sensorName); + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { value: sensorData.value }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + }, [data, sensorName]); + + if (error) { + return ; + } + + if (!data) { + return -; + } + + const sensorData = data.find((item) => item.label === sensorName); + + if (!sensorData) { + return -; + } + + return ( + + t("common.number", { + value, + })} + /> + + {sensorData && !error && ( + + {sensorData.warning && ( +
    + {sensorData.warning}{sensorData.unit} {t("glances.warn")} +
    + )} + {sensorData.critical && ( +
    + {sensorData.critical} {sensorData.unit} {t("glances.crit")} +
    + )} +
    + )} + + +
    + {t("common.number", { + value: sensorData.value, + })} {sensorData.unit} +
    +
    +
    + ); +} diff --git a/src/widgets/glances/sensor.jsx b/src/widgets/glances/sensor.jsx deleted file mode 100644 index 32d01eb2..00000000 --- a/src/widgets/glances/sensor.jsx +++ /dev/null @@ -1,99 +0,0 @@ -import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; -import { useTranslation } from "next-i18next"; - -import useWidgetAPI from "utils/proxy/use-widget-api"; - -const Chart = dynamic(() => import("./chart"), { ssr: false }); - -const pointsLimit = 15; - -export default function Component({ service }) { - const { t } = useTranslation(); - const { widget } = service; - const [, sensorName] = widget.metric.split(':'); - - const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ value: 0 }, 0, pointsLimit)); - - const { data, error } = useWidgetAPI(service.widget, 'sensors', { - refreshInterval: 1000, - }); - - useEffect(() => { - if (data) { - const sensorData = data.find((item) => item.label === sensorName); - setDataPoints((prevDataPoints) => { - const newDataPoints = [...prevDataPoints, { value: sensorData.value }]; - if (newDataPoints.length > pointsLimit) { - newDataPoints.shift(); - } - return newDataPoints; - }); - } - }, [data, sensorName]); - - if (error) { - return
    -
    -
    - {t("widget.api_error")} -
    -
    -
    ; - } - - if (!data) { - return
    -
    -
    - - -
    -
    -
    ; - } - - const sensorData = data.find((item) => item.label === sensorName); - - if (!sensorData) { - return
    -
    -
    ; - } - - return ( - <> -
    - t("common.number", { - value, - })} - /> -
    -
    - {sensorData && !error && ( - <> - {sensorData.warning && ( -
    - {sensorData.warning}{sensorData.unit} {t("glances.warn")} -
    - )} - {sensorData.critical && ( -
    - {sensorData.critical} {sensorData.unit} {t("glances.crit")} -
    - )} - - )} -
    -
    - {t("common.number", { - value: sensorData.value, - })} {sensorData.unit} -
    -
    - - ); -} From cd2c24d47bf69ca08d85cab9369c9170b6eb2e30 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Tue, 1 Aug 2023 16:39:46 +0300 Subject: [PATCH 587/788] rework position prop --- src/widgets/glances/components/block.jsx | 4 +--- src/widgets/glances/components/chart_dual.jsx | 8 ++++---- src/widgets/glances/metrics/cpu.jsx | 4 ++-- src/widgets/glances/metrics/disk.jsx | 4 ++-- src/widgets/glances/metrics/memory.jsx | 4 ++-- src/widgets/glances/metrics/net.jsx | 4 ++-- src/widgets/glances/metrics/process.jsx | 4 ++-- src/widgets/glances/metrics/sensor.jsx | 4 ++-- 8 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/widgets/glances/components/block.jsx b/src/widgets/glances/components/block.jsx index 73cf86c9..1243771a 100644 --- a/src/widgets/glances/components/block.jsx +++ b/src/widgets/glances/components/block.jsx @@ -1,8 +1,6 @@ export default function Block({ position, children }) { - const positionClasses = Object.entries(position).map(([key, value]) => `${key}-${value}`).join(' '); - return ( -
    +
    {children}
    ); diff --git a/src/widgets/glances/components/chart_dual.jsx b/src/widgets/glances/components/chart_dual.jsx index 14f5e4e6..e5b7e9f8 100644 --- a/src/widgets/glances/components/chart_dual.jsx +++ b/src/widgets/glances/components/chart_dual.jsx @@ -5,13 +5,13 @@ import CustomTooltip from "./custom_tooltip"; class ChartDual extends PureComponent { render() { - const { dataPoints, formatter, stack, label } = this.props; + const { dataPoints, formatter, stack, label, stackOffset } = this.props; return (
    - + @@ -25,7 +25,7 @@ class ChartDual extends PureComponent { {systemData && !systemError && ( - + {systemData.linux_distro && (
    {systemData.linux_distro} @@ -76,7 +76,7 @@ export default function Component({ service }) { )} - +
    {t("common.number", { value: data.total, diff --git a/src/widgets/glances/metrics/disk.jsx b/src/widgets/glances/metrics/disk.jsx index dcb1dc71..da5b7240 100644 --- a/src/widgets/glances/metrics/disk.jsx +++ b/src/widgets/glances/metrics/disk.jsx @@ -76,7 +76,7 @@ export default function Component({ service }) { /> {currentRate && !error && ( - +
    {t("common.bitrate", { value: currentRate.a, @@ -90,7 +90,7 @@ export default function Component({ service }) { )} - +
    {t("common.bitrate", { value: currentRate.a + currentRate.b, diff --git a/src/widgets/glances/metrics/memory.jsx b/src/widgets/glances/metrics/memory.jsx index f9d0cd15..81e64791 100644 --- a/src/widgets/glances/metrics/memory.jsx +++ b/src/widgets/glances/metrics/memory.jsx @@ -54,7 +54,7 @@ export default function Component({ service }) { /> {data && !error && ( - + {data.free && (
    {t("common.bytes", { @@ -75,7 +75,7 @@ export default function Component({ service }) { )} - +
    {t("common.bytes", { value: data.used, diff --git a/src/widgets/glances/metrics/net.jsx b/src/widgets/glances/metrics/net.jsx index 15233b42..0c65ee64 100644 --- a/src/widgets/glances/metrics/net.jsx +++ b/src/widgets/glances/metrics/net.jsx @@ -64,7 +64,7 @@ export default function Component({ service }) { })} /> - + {interfaceData && interfaceData.interface_name && (
    {interfaceData.interface_name} @@ -79,7 +79,7 @@ export default function Component({ service }) {
    - +
    {t("common.bitrate", { value: interfaceData.rx, diff --git a/src/widgets/glances/metrics/process.jsx b/src/widgets/glances/metrics/process.jsx index bf606a75..1b331566 100644 --- a/src/widgets/glances/metrics/process.jsx +++ b/src/widgets/glances/metrics/process.jsx @@ -36,7 +36,7 @@ export default function Component({ service }) { return ( - +
    {t("resources.cpu")}
    @@ -44,7 +44,7 @@ export default function Component({ service }) {
    - +
    { data.map((item) =>
    diff --git a/src/widgets/glances/metrics/sensor.jsx b/src/widgets/glances/metrics/sensor.jsx index 9be5666f..80e8be96 100644 --- a/src/widgets/glances/metrics/sensor.jsx +++ b/src/widgets/glances/metrics/sensor.jsx @@ -62,7 +62,7 @@ export default function Component({ service }) { /> {sensorData && !error && ( - + {sensorData.warning && (
    {sensorData.warning}{sensorData.unit} {t("glances.warn")} @@ -76,7 +76,7 @@ export default function Component({ service }) { )} - +
    {t("common.number", { value: sensorData.value, From 0c8131f27e2acfd7788fbf6a02c9f426de46a9ed Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Tue, 1 Aug 2023 16:45:09 +0300 Subject: [PATCH 588/788] add gpu metric --- public/locales/en/common.json | 4 +- src/widgets/glances/component.jsx | 5 ++ src/widgets/glances/metrics/gpu.jsx | 104 ++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/widgets/glances/metrics/gpu.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 7a8fe023..45402ce0 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -374,7 +374,9 @@ "hours": "h", "crit": "Crit", "read": "Read", - "write": "Write" + "write": "Write", + "gpu": "GPU", + "mem": "Mem" }, "quicklaunch": { "bookmark": "Bookmark", diff --git a/src/widgets/glances/component.jsx b/src/widgets/glances/component.jsx index 4fa1a9ff..310fae5a 100644 --- a/src/widgets/glances/component.jsx +++ b/src/widgets/glances/component.jsx @@ -4,6 +4,7 @@ import Sensor from "./metrics/sensor"; import Net from "./metrics/net"; import Process from "./metrics/process"; import Disk from "./metrics/disk"; +import GPU from "./metrics/gpu"; export default function Component({ service }) { const { widget } = service; @@ -28,6 +29,10 @@ export default function Component({ service }) { return ; } + if (widget.metric.match(/^gpu:/)) { + return ; + } + if (widget.metric === "cpu") { return ; } diff --git a/src/widgets/glances/metrics/gpu.jsx b/src/widgets/glances/metrics/gpu.jsx new file mode 100644 index 00000000..edd603e3 --- /dev/null +++ b/src/widgets/glances/metrics/gpu.jsx @@ -0,0 +1,104 @@ +import dynamic from "next/dynamic"; +import { useState, useEffect } from "react"; +import { useTranslation } from "next-i18next"; + +import Error from "../components/error"; +import Container from "../components/container"; +import Block from "../components/block"; + +import useWidgetAPI from "utils/proxy/use-widget-api"; + +const ChartDual = dynamic(() => import("../components/chart_dual"), { ssr: false }); + +const pointsLimit = 15; + +export default function Component({ service }) { + const { t } = useTranslation(); + const { widget } = service; + const [, gpuName] = widget.metric.split(':'); + + const [dataPoints, setDataPoints] = useState(new Array(pointsLimit).fill({ a: 0, b: 0 }, 0, pointsLimit)); + + const { data, error } = useWidgetAPI(widget, 'gpu', { + refreshInterval: 1000, + }); + + useEffect(() => { + if (data) { + // eslint-disable-next-line eqeqeq + const gpuData = data.find((item) => item[item.key] == gpuName); + + if (gpuData) { + setDataPoints((prevDataPoints) => { + const newDataPoints = [...prevDataPoints, { a: gpuData.mem, b: gpuData.proc }]; + if (newDataPoints.length > pointsLimit) { + newDataPoints.shift(); + } + return newDataPoints; + }); + } + } + }, [data, gpuName]); + + if (error) { + return ; + } + + if (!data) { + return -; + } + + // eslint-disable-next-line eqeqeq + const gpuData = data.find((item) => item[item.key] == gpuName); + + if (!gpuData) { + return -; + } + + return ( + + t("common.percent", { + value, + maximumFractionDigits: 1, + })} + /> + + + {gpuData && gpuData.name && ( +
    + {gpuData.name} +
    + )} + +
    + {t("common.number", { + value: gpuData.mem, + maximumFractionDigits: 1, + })}% {t("glances.mem")} {t("resources.used")} +
    +
    + + +
    + {t("common.number", { + value: gpuData.proc, + maximumFractionDigits: 1, + })}% {t("glances.gpu")} +
    +
    + + +
    + {t("common.number", { + value: gpuData.temperature, + maximumFractionDigits: 1, + })}° +
    +
    +
    + ); +} From 3e8a8c649b5e685cf0f6fad05a31f9e34820ccb9 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Mon, 31 Jul 2023 17:52:37 +0000 Subject: [PATCH 589/788] Translated using Weblate (Spanish) Currently translated at 100.0% (494 of 494 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 69151731..097029f7 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -666,22 +666,22 @@ "ping": "Ping" }, "azuredevops": { - "result": "Result", - "status": "Status", - "buildId": "Build ID", - "succeeded": "Succeeded", - "notStarted": "Not Started", - "failed": "Failed", - "canceled": "Canceled", - "inProgress": "In Progress", - "totalPrs": "Total PRs", - "myPrs": "My PRs", - "approved": "Approved" + "result": "Resultado", + "status": "Estado", + "buildId": "Identificador de la construcción", + "succeeded": "Exitoso", + "notStarted": "Sin empezar", + "failed": "Fallido", + "canceled": "Cancelado", + "inProgress": "En curso", + "totalPrs": "RP totales", + "myPrs": "Mis logros", + "approved": "Aprobados" }, "urbackup": { - "ok": "Ok", - "errored": "Errors", - "noRecent": "Out of Date", - "totalUsed": "Used Storage" + "ok": "De acuerdo", + "errored": "Errores", + "noRecent": "Caducado", + "totalUsed": "Almacenamiento usado" } } From a0ffb46a6f7cbe69c9af9f9523973290e0f71c80 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 2 Aug 2023 03:54:34 +0300 Subject: [PATCH 590/788] bump up quicklook z --- src/components/quicklaunch.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/quicklaunch.jsx b/src/components/quicklaunch.jsx index 229b2f4d..c371ccf6 100644 --- a/src/components/quicklaunch.jsx +++ b/src/components/quicklaunch.jsx @@ -145,7 +145,7 @@ export default function QuickLaunch({servicesAndBookmarks, searchString, setSear return (