From fcb2b923e0548728b4c2de629b759c6d800aba09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Tue, 28 Oct 2025 18:20:17 +0000 Subject: [PATCH 01/35] Translated using Weblate (Croatian) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1178 of 1178 strings) Translated using Weblate (Croatian) Currently translated at 100.0% (1161 of 1161 strings) Co-authored-by: Ivan Bratović Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/hr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/hr-HR.json | 50 +++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json index de1db041a..fe3972b0d 100644 --- a/src/lang/hr-HR.json +++ b/src/lang/hr-HR.json @@ -66,7 +66,7 @@ "Keyword": "Ključna riječ", "Friendly Name": "Prilagođen naziv", "URL": "URL", - "Hostname": "Domaćin", + "Hostname": "Naziv hosta", "Port": "Port", "Heartbeat Interval": "Interval provjere", "Retries": "Broj ponovnih pokušaja", @@ -547,16 +547,16 @@ "Query": "Upit", "settingsCertificateExpiry": "TLS istek certifikata", "certificationExpiryDescription": "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:", - "Setup Docker Host": "Dodaj Docker domaćina", + "Setup Docker Host": "Dodaj Docker hosta", "Connection Type": "Tip veze", "Docker Daemon": "Docker daemon", - "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?", + "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker hosta za sve monitore?", "socket": "Docker socket", "tcp": "TCP / HTTP", "Docker Container": "Docker kontejner", "Container Name / ID": "Naziv / identifikator kontejnera", - "Docker Host": "Docker domaćin", - "Docker Hosts": "Docker domaćini", + "Docker Host": "Docker host", + "Docker Hosts": "Docker hostovi", "ntfy Topic": "ntfy tema", "Domain": "Domena", "Workstation": "Radna stanica", @@ -885,15 +885,15 @@ "templateHeartbeatJSON": "predmet koji opisuje provjeru", "templateMonitorJSON": "objekt koji opisuje Monitor", "templateLimitedToUpDownNotifications": "dostupno samo za obavijesti dostupnosti", - "noDockerHostMsg": "Nije dostupno. Morate postaviti Docker domaćina.", - "DockerHostRequired": "Postavite Docker domaćina za ovaj Monitor.", + "noDockerHostMsg": "Nije dostupno. Morate postaviti Docker hosta.", + "DockerHostRequired": "Postavite Docker hosta za ovaj Monitor.", "Browser Screenshot": "Snimka zaslona preglednika", "successKeyword": "Ključna riječ za uspjeh", "successKeywordExplanation": "MQTT ključna riječ koja označava uspješan odgovor", "remoteBrowserToggle": "Chromium se pokreće unutar Uptime Kuma kontejnera. Možete koristiti udaljeni preglednik uključivanjem ove opcije.", "deleteRemoteBrowserMessage": "Jeste li sigurni da želite ukloniti ovaj udaljeni preglednik za sve Monitore?", "Remote Browsers": "Udaljeni preglednici", - "settingUpDatabaseMSG": "Postavljanje baze podatak u tijeku. Ovaj postupak može potrajati, budite strpljivi.", + "settingUpDatabaseMSG": "Postavljanje baze podataka u tijeku. Ovaj postupak može potrajati, hvala na strpljenju.", "ntfyPriorityHelptextAllEvents": "Svi događaji šalju se s maksimalnim prioritetom", "ntfyPriorityHelptextAllExceptDown": "Svi događaji šalju se ovim prioritetom, osim {0} događaja, koji imaju prioritet {1}", "Search monitored sites": "Pretraži monitorirane stranice", @@ -947,7 +947,7 @@ "wayToGetBitrix24Webhook": "Možete napraviti webhook prateći upute na {0}", "bitrix24SupportUserID": "Unesite svoj korisnički identifikator u Bitrix24. Možete ga dobiti iz URL-a odlaskom na vlastiti profil.", "apiKeySevenIO": "SevenIO API ključ", - "Host URL": "URL domaćina", + "Host URL": "URL hosta", "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Unesite adresu poslužitelja na koju se želite spojiti ili {localhost} ako planirate koristiti {local_mta}", "Select message type": "Odaberite tip poruke", "postToExistingThread": "Pošalji u postojeću temu / forumsku raspravu", @@ -1026,7 +1026,7 @@ "Private Number": "Privatni broj", "wayToGetOnesenderUrlandToken": "URL i token možete dobiti odlaskom na OneSender web stranicu. Više informacija na {0}", "Token Onesender": "OneSender Token", - "Host Onesender": "Adresa OneSender domaćina", + "Host Onesender": "Adresa OneSender hosta", "Group ID": "Identifikator Grupe", "groupOnesenderDesc": "Provjerite je li Identifikator Grupe valjan. Za slanje poruke na Grupu, npr. 628123456789-342345", "Add Remote Browser": "Dodaj udaljeni preglednik", @@ -1098,7 +1098,7 @@ "telegramTemplateFormatDescription": "Telegram dozvoljava korištenje različitih markup jezika za formatiranje poruka, pogledajte {0} za više detalja.", "YZJ Robot Token": "YZJ token robota", "YZJ Webhook URL": "YZJ URL webhooka", - "templateHostnameOrURL": "domaćin ili URL", + "templateHostnameOrURL": "naziv hosta ili URL", "templateStatus": "status", "telegramUseTemplateDescription": "Ako je omogućeno, poruka će biti poslana koristeći prilagođeni predložak.", "Plain Text": "Obični tekst", @@ -1157,7 +1157,7 @@ "pingCountLabel": "Maks. paketa", "pingCountDescription": "Ukupan broj paketa koji će se poslati", "pingNumericLabel": "Brojčani ispis", - "pingNumericDescription": "Ako je odabrano, bit će ispisane IP adrese umjesto naziva domaćina", + "pingNumericDescription": "Ako je odabrano, bit će ispisane IP adrese umjesto naziva hostova", "pingGlobalTimeoutLabel": "Globalno vrijeme čekanja", "pingPerRequestTimeoutLabel": "Vrijeme čekanja za jedan ping", "pingIntervalAdjustedInfo": "Interval koji se prilagođava broju paketa, globalnom vremenu čekanja i vremenu čekanja jednog pinga", @@ -1196,5 +1196,29 @@ "brevoSubject": "Predmet e-pošte", "brevoApiKey": "Brevo API ključ", "brevoLeaveBlankForDefaultName": "ostaviti prazno za zadani naziv", - "brevoLeaveBlankForDefaultSubject": "ostaviti prazno za korištenje zadang teksta predmeta" + "brevoLeaveBlankForDefaultSubject": "ostaviti prazno za korištenje zadang teksta predmeta", + "Nextcloud host": "Nextcloud ime hosta", + "Conversation token": "Token razgovora", + "Bot secret": "Tajna bota", + "Send UP silently": "Pošalji UP utišano", + "auto-select": "Automatski odabir", + "Send DOWN silently": "Pošalji DOWN utišano", + "Installing a Nextcloud Talk bot requires administrative access to the server.": "Instaliranje Nextcloud Talk bota zahtijeva administratorski pristup poslužitelju.", + "Number of retry attempts if webhook fails": "Broj ponovnih pokušaja (svakih 60-180 sekundi) ako webhook ne uspije.", + "Maximum Retries": "Maksimalan broj ponovnih pokušaja", + "HTTP Method": "HTTP metoda", + "webhookPostMethodDesc": "POST je dobar za većinu modernih HTTP poslužitelja.", + "Invalid userId": "Nevažeći korisnički ID [{userId}]", + "supportBaleChatID": "Podržan ID izravnoga razgovora / grupe / kanala", + "wayToGetBaleChatID": "Svoj ID razgovora (chat_id) možete dobiti slanjem poruke botu i odlaskom na ovaj URL:", + "webhookGetMethodDesc": "GET šalje podatke kao parametre upita i ne dopušta konfiguriranje tijela zahtjeva. Korisno za okidanje Uptime Kuma Push monitora.", + "descriptionHelpText": "Prikazuje se na internoj nadzornoj ploči. Markdown je dopušten i sanitiziran (čuva razmake i uvlačenja) prije prikazivanja.", + "wayToGetBaleToken": "Token možete dobiti na {0}.", + "Mention Mobile List": "Popis mobilnih uređaja za Mention", + "Mention User List": "Popis korisničkih ID-jeva za Mention", + "Dingtalk Mobile List": "Popis mobilnih uređaja", + "Dingtalk User List": "Popis korisničkih ID-jeva", + "Enter a list of userId": "Unesite popis korisničkih ID-jeva", + "Enter a list of mobile": "Unesite popis mobilnih uređaja", + "Invalid mobile": "Nevažeći mobitel [{mobile}]" } From 6e26b3ef54e61f6d2da15d59d7b956a50921e9f4 Mon Sep 17 00:00:00 2001 From: Cyril59310 Date: Tue, 28 Oct 2025 18:20:17 +0000 Subject: [PATCH 02/35] Translated using Weblate (French) Currently translated at 100.0% (1178 of 1178 strings) Translated using Weblate (French) Currently translated at 100.0% (1174 of 1174 strings) Translated using Weblate (French) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Cyril59310 Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/fr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/fr-FR.json | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index d919d2b9f..73fd2d24e 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -1209,5 +1209,22 @@ "Conversation token": "Jeton de conversation", "Send UP silently": "Envoyer un UP silencieusement", "Installing a Nextcloud Talk bot requires administrative access to the server.": "L’installation d’un bot Nextcloud Talk nécessite un accès administratif au serveur.", - "auto-select": "Sélection automatique" + "auto-select": "Sélection automatique", + "Enter a list of userId": "Entrez une liste d’IDs utilisateur", + "supportBaleChatID": "Prend en charge l’ID de chat direct / de groupe / de canal", + "wayToGetBaleChatID": "Vous pouvez obtenir votre ID de chat en envoyant un message au bot, puis en accédant à cette URL pour voir le chat_id :", + "wayToGetBaleToken": "Vous pouvez obtenir un jeton depuis {0}.", + "Mention Mobile List": "Liste des mentions mobiles", + "Mention User List": "Liste des IDs des utilisateurs à mentionner", + "Dingtalk Mobile List": "Liste des mobiles", + "Dingtalk User List": "Liste des IDs utilisateurs", + "Enter a list of mobile": "Entrez une liste de numéros de téléphone", + "Invalid mobile": "Numéro de téléphone invalide [{mobile}]", + "Invalid userId": "ID utilisateur invalide [{userId}]", + "Maximum Retries": "Nombre maximal de tentatives", + "Number of retry attempts if webhook fails": "Nombre de tentatives de réessai (toutes les 60 à 180 secondes) en cas d’échec du webhook.", + "HTTP Method": "Méthode HTTP", + "webhookPostMethodDesc": "POST convient à la plupart des serveurs HTTP modernes.", + "webhookGetMethodDesc": "GET envoie les données sous forme de paramètres de requête et ne permet pas de configurer un corps. Utile pour déclencher les sondes Push d’Uptime Kuma.", + "descriptionHelpText": "Affiché sur le tableau de bord interne. Le Markdown est autorisé et assaini (les espaces et l’indentation sont conservés) avant l’affichage." } From 48b25fa395cde72dd945c40b4cf0463d4e26b4da Mon Sep 17 00:00:00 2001 From: Virenbar Date: Tue, 28 Oct 2025 18:20:17 +0000 Subject: [PATCH 03/35] Translated using Weblate (Russian) Currently translated at 99.0% (1161 of 1172 strings) Co-authored-by: Virenbar Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ru/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ru-RU.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index d4dc9b125..b7283c5e7 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -1216,5 +1216,6 @@ "brevoLeaveBlankForDefaultSubject": "оставьте пустым для темы по умолчанию", "Nextcloud host": "Хост Nextcloud", "Installing a Nextcloud Talk bot requires administrative access to the server.": "Для установки бота Nextcloud Talk требуется административный доступ к серверу.", - "Conversation token": "Токен разговора" + "Conversation token": "Токен разговора", + "auto-select": "Автоматический выбор" } From e9d061f9a820234b1ddf6469b5810fc99ea0eae3 Mon Sep 17 00:00:00 2001 From: Jozef Gaal Date: Tue, 28 Oct 2025 18:20:17 +0000 Subject: [PATCH 04/35] Translated using Weblate (Slovak) Currently translated at 100.0% (1178 of 1178 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (1174 of 1174 strings) Translated using Weblate (Slovak) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Jozef Gaal Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/sk/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/sk.json | 93 ++++++++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/src/lang/sk.json b/src/lang/sk.json index 2108fb82e..8a6e47844 100644 --- a/src/lang/sk.json +++ b/src/lang/sk.json @@ -1,6 +1,6 @@ { "Settings": "Nastavenia", - "Help": "Nápoveda", + "Help": "Pomoc", "New Update": "Nová aktualizácia", "Language": "Jazyk", "Appearance": "Vzhľad", @@ -18,8 +18,8 @@ "General Monitor Type": "Všeobecný typ sledovania", "Passive Monitor Type": "Pasívny typ sledovania", "Specific Monitor Type": "Špecifický typ sledovania", - "pauseDashboardHome": "Pauza", - "Pause": "Pauza", + "pauseDashboardHome": "Pozastavené", + "Pause": "Pozastaviť", "Status": "Stav", "Message": "Správa", "No important events": "Žiadne dôležité udalosti", @@ -27,7 +27,7 @@ "Delete": "Odstrániť", "Current": "Aktuálne", "Cert Exp.": "Platnosť cert.", - "day": "deň | dni", + "day": "deň | dní", "hour": "hodina", "Response": "Odpoveď", "Ping": "Ping", @@ -35,11 +35,11 @@ "Friendly Name": "Názov", "Port": "Port", "Retries": "Opakovania", - "Resend Notification if Down X times consecutively": "Poslať oznámenie znovu, ak je nedostupné X-krát za sebou", + "Resend Notification if Down X times consecutively": "Znovu odoslať upozornenie, ak je X-krát po sebe nedostupné", "Advanced": "Pokročilé", "checkEverySecond": "Skontrolovať každých {0} sekúnd", "retryCheckEverySecond": "Zopakovať každých {0} sekúnd", - "resendEveryXTimes": "Znovu poslať každých {0} krát", + "resendEveryXTimes": "Odoslať znova po {0} pokusoch", "resendDisabled": "Opakované odoslanie vypnuté", "ignoreTLSError": "Ignorovať TLS/SSL chyby pre HTTPS stránky", "upsideDownModeDescription": "Obrátiť stav. Pokiaľ je služba dostupná, zobrazuje sa ako NEDOSTUPNÁ.", @@ -51,8 +51,8 @@ "Notifications": "Notifikácie", "Not available, please setup.": "Nedostupné, prosím nastavte.", "Setup Notification": "Nastavenie notifikácií", - "Dark": "Tmavý", - "Light": "Svetlý", + "Dark": "Tmavá", + "Light": "Svetlá", "Auto": "Automaticky", "Normal": "Normálna", "Bottom": "Dole", @@ -81,7 +81,7 @@ "maxRedirectDescription": "Maximálny počet presmerovaní, ktoré sa majú sledovať. Nastavte na 0, aby ste presmerovania deaktivovali.", "needPushEvery": "Tuto adresu by ste mali volať každých {0} sekúnd.", "pushOptionalParams": "Voliteľné parametre: {0}", - "Theme - Heartbeat Bar": "Téma - Heartbeat Bar", + "Theme - Heartbeat Bar": "Téma - lišta pulzu", "Game": "Hra", "Search Engine Visibility": "Viditeľnosť vyhľadávačmi", "Allow indexing": "Povoliť indexovanie", @@ -118,7 +118,7 @@ "notAvailableShort": "N/A", "Default enabled": "Predvolene povolené", "Create": "Vytvoriť", - "Clear Data": "Vyčistiť dáta", + "Clear Data": "Vyčistiť údaje", "Events": "Udalosti", "Heartbeats": "Pulzy", "Auto Get": "Získať automaticky", @@ -142,12 +142,12 @@ "Inactive": "Neaktívne", "Token": "Token", "Show URI": "Zobraziť URI", - "Tags": "Značky", + "Tags": "Štítky", "Add New below or Select...": "Pridať novú nižšie alebo vybrať…", - "Tag with this value already exist.": "Značka s touto hodnotou už existuje.", + "Tag with this value already exist.": "Štítok s touto hodnotou už existuje.", "color": "Farba", "value (optional)": "hodnota (voliteľné)", - "Gray": "Šedá", + "Gray": "Sivá", "Red": "Červená", "Orange": "Oranžová", "Green": "Zelená", @@ -176,7 +176,7 @@ "webhookJsonDesc": "{0} je vhodný pre všetky moderné servery HTTP, ako napríklad Express.js", "webhookFormDataDesc": "{multipart} je dobré pre PHP. JSON bude potrebné analyzovať pomocou {decodeFunction}", "Generate": "Generovať", - "Discourage search engines from indexing site": "Odradiť vyhľadávacie nástroje od indexovania stránky", + "Discourage search engines from indexing site": "Zabrániť vyhľadávačom v indexovaní stránky", "disableauth.message1": "Ste si istý, že chcete {disableAuth}?", "disable authentication": "vypnúť autentifikáciu", "disableauth.message2": "Je navrhnutý pre scenáre, {intendThirdPartyAuth} pred Uptime Kuma, ako je Cloudflare Access, Authelia alebo iné autentifikačné mechanizmy.", @@ -189,8 +189,8 @@ "Verify Token": "Overiť token", "Enable 2FA": "Povoliť 2FA", "Active": "Aktívne", - "Add New Tag": "Pridať novú značku", - "Tag with this name already exist.": "Značka s týmto názvom už existuje.", + "Add New Tag": "Pridať nový štítok", + "Tag with this name already exist.": "Štítok s týmto názvom už existuje.", "Blue": "Modrá", "Search...": "Hľadať…", "statusPageNothing": "Nič tu nie je, pridajte skupinu alebo sledovanie.", @@ -205,10 +205,10 @@ "Read more": "Prečítajte si viac", "appriseInstalled": "Apprise je nainštalovaný.", "Reconnecting...": "Prepájanie...", - "Request Timeout": "Platnosť požiadavky vypršala", - "styleElapsedTimeShowWithLine": "Zobraziť (S Riadkom)", + "Request Timeout": "Časový limit požiadavky", + "styleElapsedTimeShowWithLine": "Zobraziť (s riadkom)", "webhookCustomBodyDesc": "Zadajte vlastné HTTP Body pre request. Šablónové premenné {msg}, {heartbeat}, {monitor} sú akceptované.", - "timeoutAfter": "Platnosť požiadavky vypršala po {0} sekundách", + "timeoutAfter": "Časový limit vyprší po {0} sekundách", "styleElapsedTime": "Uplynutý čas pod lištou pulzu", "styleElapsedTimeShowNoLine": "Zobraziť (Žiadny riadok)", "filterActive": "Aktívne", @@ -252,7 +252,7 @@ "HTTP Headers": "HTTP hlavičky", "Other Software": "Iný softvér", "For example: nginx, Apache and Traefik.": "Napríklad: nginx, Apache a Traefik.", - "Please read": "Prečítajte si, prosím", + "Please read": "Prečítajte si prosím", "pushOthers": "Ostatné", "Created": "Vytvorené", "ignoreTLSErrorGeneral": "Ignorovať chybu TLS/SSL pre pripojenie", @@ -289,7 +289,7 @@ "Security": "Zabezpečenie", "Steam API Key": "Kľúč API služby Steam", "Pick a RR-Type...": "Vyberte typ RR…", - "Discard": "Vyhodiť", + "Discard": "Zrušiť zmeny", "Select": "Vybrať", "selectedMonitorCount": "Vybrané: {0}", "Check/Uncheck": "Označiť/Odznačiť", @@ -352,14 +352,14 @@ "deleteDockerHostMsg": "Ste si istí, že chcete odstrániť tohto docker hostiteľa pre všetky sledovania?", "Container Name / ID": "Názov kontajnera / ID", "telegramSendSilentlyDescription": "Odošle správu v tichosti. Používatelia dostanú oznámenie bez zvuku.", - "trustProxyDescription": "Dôverujte hlavičkám 'X-Forwarded-*'. Ak chcete získať správnu IP adresu klienta a vaša služba Uptime Kuma sa nachádza za proxy serverom, napríklad Nginx alebo Apache, mali by ste túto funkciu povoliť.", + "trustProxyDescription": "Dôverovať hlavičkám 'X-Forwarded-*'. Ak chcete získať správnu IP adresu klienta a vaša služba Uptime Kuma sa nachádza za proxy serverom, napríklad Nginx alebo Apache, mali by ste túto funkciu povoliť.", "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dlhodobý prístupový token môžete vytvoriť kliknutím na názov svojho profilu (vľavo dole) a rolovaním na spodok, potom kliknite na Vytvoriť token. ", - "Event data:": "Dáta udalosti:", + "Event data:": "Údaje udalosti:", "Then choose an action, for example switch the scene to where an RGB light is red.": "Potom vyberte akciu, napríklad prepnite scénu na miesto, kde je svetlo RGB červené.", "warningTimezone": "Používa časové pásmo servera", "lastDay1": "Posledný deň mesiaca", "smtpLiquidIntroduction": "Nasledujúce dve polia je možné šablónovať pomocou šablónovacieho jazyka Liquid. Pokyny na použitie nájdete v časti {0}. Toto sú dostupné premenné:", - "wayToGetDiscordURL": "Získate to, ak prejdete do Nastavenia servera -> Integrácie -> Zobraziť webhooky -> Nový webhook", + "wayToGetDiscordURL": "Toto nastavenie nájdete v časti Nastavenia servera -> Integrácie -> Zobraziť webhooky -> Nový webhook", "wayToGetLineChannelToken": "Najprv pristupte k {0}, vytvorte poskytovateľa a kanál ( Rozhranie API správ), potom môžete získať prístupový token kanála a ID používateľa z vyššie uvedených položiek ponuky.", "enableDefaultNotificationDescription": "Toto upozornenie bude predvolene povolené pre nové sledovania. Toto oznámenie môžete stále vypnúť pre každé sledovanie samostatne.", "or": "alebo", @@ -378,13 +378,13 @@ "Issuer:": "Vydavateľ:", "Fingerprint:": "Odtlačok:", "No status pages": "Žiadne stavové stránky", - "Domain Name Expiry Notification": "Oznámenie o vypršaní platnosti domény", + "Domain Name Expiry Notification": "Oznámiť o vypršaní platnosti domény", "Remove the expiry notification": "Odstrániť deň oznámenia o vypršaní platnosti", "Proxy": "Proxy", "Date Created": "Dátum vytvorenia", - "Footer Text": "Text päty", + "Footer Text": "Text v pätičke", "RadiusCallingStationIdDescription": "Identifikátor volajúceho zariadenia", - "Certificate Expiry Notification": "Oznámenie o skončení platnosti certifikátu", + "Certificate Expiry Notification": "Oznámiť o skončení platnosti certifikátu", "API Username": "Používateľské meno API", "API Key": "Kľúč API", "Show update if available": "Zobraziť aktualizáciu, ak je k dispozícii", @@ -444,9 +444,9 @@ "maintenanceStatus-unknown": "Neznáme", "IconUrl": "URL adresa ikony", "chromeExecutableAutoDetect": "Automatická detekcia", - "chromeExecutableDescription": "Ak používatelia nástroja Docker ešte nemajú nainštalovanú aplikáciu Chromium, inštalácia a zobrazenie výsledkov testu môže trvať niekoľko minút. Zaberie 1 GB miesta na disku.", + "chromeExecutableDescription": "Pre používateľov nástroja Docker, ak Chromium ešte nie je nainštalované, môže inštalácia a zobrazenie výsledku testu trvať niekoľko minút. Vyžaduje 1 GB miesta na disku.", "dnsCacheDescription": "V niektorých prostrediach IPv6 nemusí fungovať, ak narazíte na problémy, vypnite to.", - "Single Maintenance Window": "Jediné okno údržby", + "Single Maintenance Window": "Jedno okno údržby", "install": "Nainštalovať", "installing": "Inštaluje sa", "uninstall": "Odinštalovať", @@ -566,7 +566,7 @@ "Maintenance Time Window of a Day": "Časový interval údržby cez deň", "Hello @everyone is...": "Dobrý deň, {'@'}všetci sú…", "clearHeartbeatsMsg": "Naozaj chcete odstrániť všetky pulzy pre toto sledovanie?", - "Trust Proxy": "Dôveryhodná proxy", + "Trust Proxy": "Dôverovať proxy", "RadiusCalledStationId": "ID volaného zariadenia", "Connection String": "Reťazec pripojenia", "socket": "Socket", @@ -574,7 +574,7 @@ "confirmClearStatisticsMsg": "Naozaj chcete odstrániť VŠETKY štatistiky?", "-year": "-rok", "and": "a", - "shrinkDatabaseDescriptionSqlite": "Podmienka spustenia príkazu pre SQLite databázu. Príkaz {auto_vacuum} je už zapnutý, ale nedochádza k defragmentácii databázy ani k prebaleniu jednotlivých stránok databázy ako to robí príkaz {vacuum}.", + "shrinkDatabaseDescriptionSqlite": "Spusti prečistenie databázy {vacuum} pre SQLite. {auto_vacuum} je už povolené, ale to nedefragmentuje databázu ani neprebalí jednotlivé stránky databázy tak, ako to robí príkaz {vacuum}.", "lineDevConsoleTo": "Konzola Line Developers - {0}", "clearEventsMsg": "Naozaj chcete odstrániť všetky udalosti pre toto sledovanie?", "now": "teraz", @@ -638,10 +638,10 @@ "defaultFriendlyName": "Nové sledovanie", "promosmsPassword": "Heslo API", "WebHookUrl": "URL webhooku", - "Add Tags": "Pridať značky", - "tagAlreadyStaged": "Táto značka (názov a hodnota) je už pripravená pre tento batch.", + "Add Tags": "Pridať štítky", + "tagAlreadyStaged": "Tento štítok (názov a hodnota) je už pripravený pre túto dávku.", "tagAlreadyOnMonitor": "Tento štítok (názov a hodnota) je už sledovaný alebo čaká na pridanie.", - "tagNameExists": "Systémová značka s týmto názvom už existuje. Vyberte ju zo zoznamu alebo použite iný názov.", + "tagNameExists": "Systémový štítok s týmto názvom už existuje. Vyberte ho zo zoznamu alebo použite iný názov.", "octopushAPIKey": "„Kľúč API“ z prihlasovacích údajov HTTP API v ovládacom paneli", "octopushLogin": "„Prihlásenie“ z prihlasovacích údajov HTTP API v ovládacom paneli", "pushoversounds pushover": "Pushover (predvolené)", @@ -1105,8 +1105,8 @@ "pingNumericDescription": "Ak je táto možnosť označená, namiesto symbolických názvov hostiteľov sa budú zobrazovať IP adresy", "smtpHelpText": "„SMTPS“ testuje, či SMTP/TLS funguje; „“Ignorovať TLS“ sa pripája cez nezabezpečený text; „STARTTLS“ sa prippojí, vydá príkaz STARTTLS a overí certifikát servera. Žiadna z týchto možností neodosiela e-mail.", "rabbitmqNodesDescription": "Zadajte URL adresu pre uzly na správu RabbitMQ vrátane protokolu a portu. Príklad: {0}", - "ipFamilyDescriptionAutoSelect": "Používa {happyEyeballs} na určenie IP rodiny.", - "Ip Family": "IP rodina", + "ipFamilyDescriptionAutoSelect": "Používa {happyEyeballs} na určenie IP verzie.", + "Ip Family": "Verzia IP", "Manual": "Manuálne", "OAuth Audience": "OAuth publikum", "alertaRecoverState": "Obnoviť stav", @@ -1127,7 +1127,7 @@ "pingGlobalTimeoutLabel": "Globálny časový limit", "pingGlobalTimeoutDescription": "Celkový čas v sekundách, po ktorom ping prestane bez ohľadu na odoslané pakety", "pingPerRequestTimeoutLabel": "Časový limit pre jednotlivý ping", - "Staged Tags for Batch Add": "Fázované značky pre hromadné pridávanie", + "Staged Tags for Batch Add": "Fázované štítky pre hromadné pridávanie", "senderSevenIO": "Odosielanie čísla alebo mena", "pingIntervalAdjustedInfo": "Interval upravený na základe počtu paketov, globálneho časového limitu a časového limitu pre jednotlivý ping", "FlashDuty Severity": "Závažnosť", @@ -1165,5 +1165,22 @@ "Conversation token": "Token konverzácie", "Installing a Nextcloud Talk bot requires administrative access to the server.": "Inštalácia bota Nextcloud Talk vyžaduje prístup správcu k serveru.", "Send UP silently": "Odoslať DOSTUPNÉ potichu", - "auto-select": "Automaticky vybrať" + "auto-select": "Automaticky vybrať", + "Enter a list of userId": "Zadajte zoznam používateľských identifikátorov", + "wayToGetBaleChatID": "Svoje chat ID získate tak, že pošlete správu botovi a prejdete na túto URL adresu, kde sa zobrazí chat_id:", + "wayToGetBaleToken": "Token môžete získať z {0}.", + "supportBaleChatID": "Podpora pre Priamy chat / Skupinu / ID chatu kanála", + "Invalid userId": "Neplatné userId [{userId}]", + "Mention User List": "Zoznam používateľských ID Mention", + "Dingtalk Mobile List": "Zoznam mobilov", + "Dingtalk User List": "Zoznam používateľských ID", + "Enter a list of mobile": "Zadajte zoznam mobilov", + "Invalid mobile": "Neplatný mobil [{mobile}]", + "Mention Mobile List": "Zoznam mobilov Mention", + "Maximum Retries": "Maximálny počet opakovaní", + "Number of retry attempts if webhook fails": "Počet pokusov o opakovanie (každých 60–180 sekúnd), ak webhook zlyhá.", + "webhookGetMethodDesc": "GET odosiela údaje ako parametre dopytu a neumožňuje konfiguráciu tela. Je užitočné na spúšťanie Push monitorov Uptime Kuma.", + "descriptionHelpText": "Zobrazené na internom paneli. Markdown je povolený a pred zobrazením je očistený (zachováva medzery a odsadenie).", + "HTTP Method": "Metóda HTTP", + "webhookPostMethodDesc": "POST je vhodný pre väčšinu moderných HTTP serverov." } From b688fe07a71e28d5400e72649c3d103599318737 Mon Sep 17 00:00:00 2001 From: MrEddX Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 05/35] Translated using Weblate (Bulgarian) Currently translated at 100.0% (1174 of 1174 strings) Translated using Weblate (Bulgarian) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: MrEddX Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bg/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/bg-BG.json | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 1519f91de..058aadfd4 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -1209,5 +1209,18 @@ "Send UP silently": "Безшумно известяване за Достъпен", "Send DOWN silently": "Безшумно известяване за Недостъпен", "Installing a Nextcloud Talk bot requires administrative access to the server.": "Инсталирането на Nextcloud Talk бот изисква администраторски достъп до сървъра.", - "auto-select": "Автоматичен избор" + "auto-select": "Автоматичен избор", + "supportBaleChatID": "Поддръжка на директен чат / група / чат ID на канала", + "wayToGetBaleChatID": "Можете да получите вашия чат ID, като изпратите съобщение до бота и отидете на този URL адрес, за да видите chat_id:", + "wayToGetBaleToken": "Можете да получите токен код от {0}.", + "Mention Mobile List": "Списък със споменаващи мобилни устройства", + "Mention User List": "Списък със споменаващи потребителски ID-та", + "Dingtalk Mobile List": "Списък с мобилни устройства", + "Dingtalk User List": "Списък с потребителски ID-та", + "Enter a list of userId": "Въведете списък с потребителски ID-та", + "Enter a list of mobile": "Въведете списък с мобилни устройства", + "Invalid mobile": "Невалиден мобилен телефон [{mobile}]", + "Invalid userId": "Невалидно потребителско ID [{userId}]", + "Maximum Retries": "Максимален брой повторни опити", + "Number of retry attempts if webhook fails": "Брой повторни опити (на всеки 60-180 секунди), ако уеб куката се првали." } From 4aec8c8b4478375fb0a809ea27949a438cc7e572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alican=20Aky=C4=B1ld=C4=B1z?= Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 06/35] Translated using Weblate (Turkish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 97.5% (1143 of 1172 strings) Translated using Weblate (Turkish) Currently translated at 96.3% (1129 of 1172 strings) Co-authored-by: Alican Akyıldız Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/tr/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/tr-TR.json | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index a27aff882..3e972731a 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -1,5 +1,5 @@ { - "languageName": "İngilizce", + "languageName": "Türkçe", "checkEverySecond": "{0} saniyede bir kontrol et", "retryCheckEverySecond": "{0} saniyede bir dene", "resendEveryXTimes": "Her {0} bir yeniden gönder", @@ -526,18 +526,18 @@ "Most likely causes:": "En olası nedenler:", "The resource is no longer available.": "Kaynak artık mevcut değil.", "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.", - "What you can try:": "Ne deneyebilirsin:", + "What you can try:": "Deneyebileceğin şeyler:", "Retype the address.": "Adresi tekrar yazın.", "Go back to the previous page.": "Bir önceki sayfaya geri git.", - "Coming Soon": "Yakında gelecek", + "Coming Soon": "Yakında Gelecek", "wayToGetClickSendSMSToken": "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.", - "Connection String": "Bağlantı dizisi", + "Connection String": "Bağlantı Dizisi", "Query": "Sorgu", "settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi", "certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:", "Setup Docker Host": "Docker Ana Bilgisayarını Ayarla", "Connection Type": "Bağlantı türü", - "Docker Daemon": "Docker Daemon", + "Docker Daemon": "Docker Servisi", "deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?", "socket": "Soket", "tcp": "TCP / HTTP", @@ -840,11 +840,11 @@ "styleElapsedTime": "Kalp atışı çubuğunun altında geçen süre", "styleElapsedTimeShowWithLine": "Göster (Satır ile birlikte)", "enableNSCD": "Tüm DNS isteklerini önbelleğe almak için NSCD'yi (Ad Hizmeti Önbellek Programı) etkinleştirin", - "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu docker imajı, MariaDB'yi sizin için otomatik olarak yerleştirdi ve yapılandırdı. Çalışma Süresi Kuma bu veri tabanına unix soketi aracılığıyla bağlanacaktır.", - "setupDatabaseSQLite": "Küçük ölçekli dağıtımlar için önerilen basit bir veritabanı dosyası. v2.0.0'dan önce Uptime Kuma, varsayılan veritabanı olarak SQLite'ı kullanıyordu.", - "setupDatabaseChooseDatabase": "Hangi veri tabanını kullanmak istersiniz?", + "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu Docker görseli, MariaDB’yi otomatik olarak gömülü ve yapılandırılmış şekilde içerir. Uptime Kuma bu veri tabanına unix soketi aracılığıyla bağlanacaktır.", + "setupDatabaseSQLite": "Küçük ölçekli dağıtımlar için önerilen basit bir veri tabanı dosyası. v2.0.0'dan önce Uptime Kuma, varsayılan veri tabanı olarak SQLite'ı kullanıyordu.", + "setupDatabaseChooseDatabase": "Hangi veritabanını kullanmak istersiniz?", "setupDatabaseMariaDB": "Harici bir MariaDB veri tabanına bağlanın. Veri tabanı bağlantı bilgilerini ayarlamanız gerekir.", - "dbName": "Veri tabanı ismi", + "dbName": "Veri Tabanı Adı", "Saved.": "Kaydedildi.", "toastErrorTimeout": "Hata Bildirimleri için Zaman Aşımı", "toastSuccessTimeout": "Başarı Bildirimleri için Zaman Aşımı", @@ -913,7 +913,7 @@ "Add a domain": "Alan adı ekle", "Search monitored sites": "İzlenen siteleri arayın", "ntfyPriorityHelptextAllEvents": "Tüm olaylar maksimum öncelik ile gönderilir", - "settingUpDatabaseMSG": "Veritabanı kuruluyor. Biraz zaman alabilir, lütfen sabırlı olun.", + "settingUpDatabaseMSG": "Veri tabanı kuruluyor. Biraz zaman alabilir, lütfen sabırlı olun.", "statusPageSpecialSlugDesc": "Özel slug {0}: slug belirtilmediğinde bu sayfa gösterilecektir", "ntfyPriorityHelptextAllExceptDown": "Önceliği {1} olan {0}-olayları hariç tüm olaylar bu öncelik ile gönderilir", "What is a Remote Browser?": "Uzak Tarayıcı Nedir?", @@ -1175,5 +1175,21 @@ "tagNameExists": "Bu isimde bir sistem etiketi zaten var. Listeden seçin veya farklı bir isim kullanın.", "Clear Form": "Formu Temizle", "Optional: The audience to request the JWT for": "İsteğe bağlı: JWT'nin talep edileceği kitle", - "OAuth Audience": "OAuth Kitlesi" + "OAuth Audience": "OAuth Kitlesi", + "mqttWebSocketPath": "MQTT WebSocket Yolu", + "Path": "Yol", + "mqttWebsocketPathExplanation": "WebSocket bağlantıları üzerinden MQTT için WebSocket yolu (örn. /mqtt)", + "clearAllEventsMsg": "Tüm etkinlikleri silmek istediğinizden emin misiniz?", + "Template plain text instead of using cards": "Kartlar yerine düz metin şablonu", + "auto-select": "Otomatik Seç", + "Could not clear events": "{failed}/{total} etkinlik temizlenemedi", + "Clear All Events": "Tüm Etkinlikleri Temizle", + "mqttWebsocketPathInvalid": "Lütfen geçerli bir WebSocket yolu formatı kullanın", + "mqttHostnameTip": "Lütfen bu formatı kullanın {hostnameFormat}", + "wayToGetBaleChatID": "Bot’a bir mesaj göndererek ve şu URL’ye giderek chat_id’nizi görüntüleyebilirsiniz:", + "wayToGetBaleToken": "{0} üzerinden bir token alabilirsiniz.", + "supportBaleChatID": "Destek Direkt Mesaj / Grup / Kanalın Mesaj ID'si", + "Events cleared successfully": "Etkinlikler başarıyla temizlendi.", + "No monitors found": "Monitör bulunamadı.", + "issueWithGoogleChatOnAndroidHelptext": "Bu ayrıca {issuetackerURL} gibi üst akıştaki hataları aşmayı sağlar" } From c6089176114cd7e47c2b8c6ac166f695c4cf2a7d Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 07/35] Translated using Weblate (German) Currently translated at 100.0% (1178 of 1178 strings) Translated using Weblate (German (Switzerland)) Currently translated at 100.0% (1178 of 1178 strings) Translated using Weblate (German) Currently translated at 100.0% (1174 of 1174 strings) Translated using Weblate (German (Switzerland)) Currently translated at 100.0% (1174 of 1174 strings) Translated using Weblate (German) Currently translated at 100.0% (1172 of 1172 strings) Translated using Weblate (German (Switzerland)) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Marco Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de/ Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/de_CH/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/de-CH.json | 19 ++++++++++++++++++- src/lang/de-DE.json | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index 2138d815d..5fc1c8ecc 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -1206,5 +1206,22 @@ "Send UP silently": "UP still senden", "Send DOWN silently": "DOWN still senden", "Installing a Nextcloud Talk bot requires administrative access to the server.": "Die Installation eines Nextcloud Talk-Bots erfordert Administratorrechte für den Server.", - "auto-select": "Automatische Auswahl" + "auto-select": "Automatische Auswahl", + "Dingtalk User List": "Benutzer-ID-Liste", + "Invalid userId": "Ungültige Benutzer-ID [{userId}]", + "supportBaleChatID": "Support-Direkt-Chat / Gruppe / Chat-ID des Kanals", + "wayToGetBaleChatID": "Du kannst deine Chat-ID erhalten, indem du dem Bot eine Nachricht sendest und dann diese URL aufrufst, um die chat_id anzusehen:", + "wayToGetBaleToken": "Du kannst ein Token von {0} erhalten.", + "Mention Mobile List": "Mobile Liste erwähnen", + "Mention User List": "Benutzer-ID-Liste erwähnen", + "Dingtalk Mobile List": "Liste der Mobilgeräte", + "Enter a list of userId": "Gib eine Liste von Benutzer-IDs ein", + "Enter a list of mobile": "Gib eine Liste von Mobilnummern ein", + "Invalid mobile": "Ungültige Mobilnummer [{mobile}]", + "Number of retry attempts if webhook fails": "Anzahl der Wiederholungsversuche (alle 60–180 Sekunden), wenn der Webhook fehlschlägt.", + "Maximum Retries": "Maximale Wiederholungsversuche", + "descriptionHelpText": "Wird auf dem internen Dashboard angezeigt. Markdown ist zulässig und wird vor der Anzeige bereinigt (Leerzeichen und Einrückungen bleiben erhalten).", + "HTTP Method": "HTTP-Methode", + "webhookPostMethodDesc": "POST eignet sich für die meisten modernen HTTP-Server.", + "webhookGetMethodDesc": "GET sendet Daten als Abfrageparameter und erlaubt keine Konfiguration eines Bodys. Nützlich zum Auslösen von Uptime Kuma Push-Überwachungen." } diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index a2774c827..e13b43421 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -1209,5 +1209,22 @@ "Installing a Nextcloud Talk bot requires administrative access to the server.": "Die Installation eines Nextcloud Talk-Bots erfordert Administratorrechte für den Server.", "Nextcloud host": "Nextcloud Host", "Send UP silently": "UP still senden", - "auto-select": "Automatische Auswahl" + "auto-select": "Automatische Auswahl", + "supportBaleChatID": "Support-Direkt-Chat / Gruppe / Chat-ID des Kanals", + "wayToGetBaleChatID": "Du kannst deine Chat-ID erhalten, indem du dem Bot eine Nachricht sendest und dann diese URL aufrufst, um die chat_id anzusehen:", + "wayToGetBaleToken": "Du kannst ein Token von {0} erhalten.", + "Mention Mobile List": "Mobile Liste erwähnen", + "Mention User List": "Benutzer-ID-Liste erwähnen", + "Dingtalk Mobile List": "Liste der Mobilgeräte", + "Dingtalk User List": "Benutzer-ID-Liste", + "Enter a list of userId": "Gib eine Liste von Benutzer-IDs ein", + "Enter a list of mobile": "Gib eine Liste von Mobilnummern ein", + "Invalid mobile": "Ungültige Mobilnummer [{mobile}]", + "Invalid userId": "Ungültige Benutzer-ID [{userId}]", + "Number of retry attempts if webhook fails": "Anzahl der Wiederholungsversuche (alle 60–180 Sekunden), wenn der Webhook fehlschlägt.", + "Maximum Retries": "Maximale Wiederholungsversuche", + "webhookPostMethodDesc": "POST eignet sich für die meisten modernen HTTP-Server.", + "descriptionHelpText": "Wird auf dem internen Dashboard angezeigt. Markdown ist zulässig und wird vor der Anzeige bereinigt (Leerzeichen und Einrückungen bleiben erhalten).", + "HTTP Method": "HTTP-Methode", + "webhookGetMethodDesc": "GET sendet Daten als Abfrageparameter und erlaubt keine Konfiguration eines Bodys. Nützlich zum Auslösen von Uptime Kuma Push-Überwachungen." } From 3b3eadf2988cb11e17aa55188f247116f085d79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aindri=C3=BA=20Mac=20Giolla=20Eoin?= Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 08/35] Translated using Weblate (Irish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Aindriú Mac Giolla Eoin Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ga/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ga.json | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/lang/ga.json b/src/lang/ga.json index 321ce0843..fdccee20f 100644 --- a/src/lang/ga.json +++ b/src/lang/ga.json @@ -1142,5 +1142,38 @@ "Clear All Events": "Glan Gach Imeacht", "clearAllEventsMsg": "An bhfuil tú cinnte gur mian leat gach imeacht a scriosadh?", "Template plain text instead of using cards": "Téacs simplí teimpléid in ionad cártaí a úsáid", - "issueWithGoogleChatOnAndroidHelptext": "Ligeann sé seo freisin dul timpeall ar fhabhtanna suas an sruth cosúil le {issuetackerURL}" + "issueWithGoogleChatOnAndroidHelptext": "Ligeann sé seo freisin dul timpeall ar fhabhtanna suas an sruth cosúil le {issuetackerURL}", + "supportBaleChatID": "Tacaíocht Comhrá Díreach / Grúpa / ID Comhrá an Chainéil", + "wayToGetBaleChatID": "Is féidir leat d’ID comhrá a fháil trí theachtaireacht a sheoladh chuig an bot agus dul chuig an URL seo chun an chat_id a fheiceáil:", + "Mention Mobile List": "Luaigh liosta soghluaiste", + "Mention User List": "Luaigh liosta aitheantais úsáideora", + "Invalid mobile": "Fón póca neamhbhailí [{mobile}]", + "brevoApiKey": "Eochair API Brevo", + "brevoLeaveBlankForDefaultName": "fág bán don ainm réamhshocraithe", + "brevoToEmail": "Chuig Ríomhphost", + "brevoSeparateMultipleEmails": "Deighil seoltaí ríomhphoist iolracha le camóga", + "Installing a Nextcloud Talk bot requires administrative access to the server.": "Éilíonn suiteáil bot Nextcloud Talk rochtain riaracháin ar an bhfreastalaí.", + "brevoApiHelp": "Cruthaigh eochair API anseo: {0}", + "brevoFromEmail": "Ó Ríomhphost", + "brevoFromName": "Ó Ainm", + "Nextcloud host": "Óstach Nextcloud", + "Conversation token": "Comhartha comhrá", + "Bot secret": "Rún an bhota", + "wayToGetBaleToken": "Is féidir leat comhartha a fháil ó {0}.", + "Dingtalk Mobile List": "Liosta soghluaiste", + "Dingtalk User List": "Liosta aitheantais úsáideora", + "Enter a list of userId": "Cuir isteach liosta d'AitheantasÚsáideora", + "Enter a list of mobile": "Cuir isteach liosta de shoghluaisteáin", + "Invalid userId": "Aitheantas úsáideora neamhbhailí [{userId}]", + "wayToWriteEvolutionRecipient": "An uimhir theileafóin leis an réimír idirnáisiúnta, ach gan an comhartha móide ag an tús ({0}), an ID Teagmhála ({1}) ná an ID Grúpa ({2}).", + "wayToGetEvolutionUrlAndToken": "Is féidir leat URL an API agus an comhartha a fháil trí dhul isteach sa chainéal atá uait ó {0}", + "evolutionRecipient": "Uimhir Theileafóin / Aitheantas Teagmhála / Aitheantas Grúpa", + "evolutionInstanceName": "Ainm an Cháis", + "brevoCcEmail": "Ríomhphost CC", + "brevoBccEmail": "Ríomhphost BCC", + "brevoSubject": "Ábhar", + "brevoLeaveBlankForDefaultSubject": "fág bán don ábhar réamhshocraithe", + "Send UP silently": "Seol SUAS go ciúin", + "Send DOWN silently": "Seol SÍOS go ciúin", + "auto-select": "Roghnaigh Uathoibríoch" } From 76c4b4649a3f94c88022b7545905907bd787f34a Mon Sep 17 00:00:00 2001 From: Aluisio Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 09/35] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Aluisio Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pt_BR/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pt-BR.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index 2f3c1ae31..ea36be880 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -1173,5 +1173,16 @@ "Send UP silently": "Enviar UP silenciosamente", "Send DOWN silently": "Envie DOWN silenciosamente", "Installing a Nextcloud Talk bot requires administrative access to the server.": "A instalação de um bot Nextcloud Talk requer acesso administrativo ao servidor.", - "auto-select": "Seleção automática" + "auto-select": "Seleção automática", + "Mention Mobile List": "Mencionar lista de celulares", + "Enter a list of userId": "Insira uma lista de userId", + "supportBaleChatID": "Suporte a ID de Chat Direto / Grupo / Canal", + "wayToGetBaleChatID": "Você pode obter seu ID de bate-papo enviando uma mensagem ao bot e acessando esta URL para visualizar o chat_id:", + "wayToGetBaleToken": "Você pode obter um token de {0}.", + "Mention User List": "Mencionar lista de IDs de usuários", + "Dingtalk Mobile List": "Lista de celulares", + "Dingtalk User List": "Lista de IDs de usuário", + "Enter a list of mobile": "Insira uma lista de dispositivos móveis", + "Invalid mobile": "Celular inválido [{mobile}]", + "Invalid userId": "ID de usuário inválido [{userId}]" } From 18813f90c80941cfd7f42443fd0fe30aa6087575 Mon Sep 17 00:00:00 2001 From: Gringo Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 10/35] Translated using Weblate (Italian) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: Gringo Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 3685db47a..16638cfa7 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -1188,5 +1188,16 @@ "Nextcloud host": "Sistema Nextcloud", "Conversation token": "Token di conversazione", "Installing a Nextcloud Talk bot requires administrative access to the server.": "Per installare un bot Nextcloud Talk è necessario disporre dell'accesso amministrativo al server.", - "auto-select": "Selezione automatica" + "auto-select": "Selezione automatica", + "supportBaleChatID": "Supporto Chat Diretta / Gruppo / ID Chat del Canale", + "wayToGetBaleChatID": "Puoi ottenere il tuo ID chat inviando un messaggio al bot e andando a questo URL per visualizzare la chat_id:", + "wayToGetBaleToken": "Puoi ottenere un token da {0}.", + "Mention Mobile List": "Menziona l'elenco dei cellulari", + "Mention User List": "Menziona l'elenco degli ID utente", + "Dingtalk Mobile List": "Elenco dei cellulari", + "Dingtalk User List": "Elenco ID utente", + "Enter a list of userId": "Inserisci un elenco di userId", + "Invalid mobile": "Cellulare non valido [{mobile}]", + "Enter a list of mobile": "Inserisci un elenco di cellulari", + "Invalid userId": "ID utente non valido [{userId}]" } From 14aaa102512e9f14a620845a5eda73b2085135f6 Mon Sep 17 00:00:00 2001 From: LEE MIN GYU Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 11/35] Translated using Weblate (Korean) Currently translated at 76.4% (896 of 1172 strings) Co-authored-by: LEE MIN GYU Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ko-KR.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 10cdbd0fa..0f72e8c76 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -924,5 +924,9 @@ "Badge URL": "배지 URL", "Group": "그룹", "monitorToastMessagesLabel": "모니터 토스트 알림", - "monitorToastMessagesDescription": "모니터용 토스트 알림은 지정된 초 단위 시간이 지나면 사라집니다. -1로 설정하면 시간 초과를 비활성화합니다. 0으로 설정하면 토스트 알림을 비활성화합니다." + "monitorToastMessagesDescription": "모니터용 토스트 알림은 지정된 초 단위 시간이 지나면 사라집니다. -1로 설정하면 시간 초과를 비활성화합니다. 0으로 설정하면 토스트 알림을 비활성화합니다.", + "supportBaleChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요", + "wayToGetBaleChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요:", + "wayToGetBaleToken": "토큰은 여기서 얻을 수 있어요: {0}.", + "auto-select": "자동 선택" } From b40bbdf68a6b16904b75c9e75d3f929cb75b4aed Mon Sep 17 00:00:00 2001 From: Kang Dongheon Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 12/35] Translated using Weblate (Korean) Currently translated at 76.4% (896 of 1172 strings) Co-authored-by: Kang Dongheon Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ko-KR.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 0f72e8c76..5b760656c 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -928,5 +928,6 @@ "supportBaleChatID": "개인 채팅 / 그룹 / 채널의 ID를 지원해요", "wayToGetBaleChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요:", "wayToGetBaleToken": "토큰은 여기서 얻을 수 있어요: {0}.", - "auto-select": "자동 선택" + "auto-select": "자동 선택", + "issueWithGoogleChatOnAndroidHelptext": "이를 통해 {issuetackerURL}과 같은 상류 버그를 우회할 수도 있습니다." } From 592b4cd71254fb1b6e1530831bc95b88d662c760 Mon Sep 17 00:00:00 2001 From: LEE MIN GYU Date: Tue, 28 Oct 2025 18:20:18 +0000 Subject: [PATCH 13/35] Translated using Weblate (Korean) Currently translated at 79.0% (927 of 1172 strings) Co-authored-by: LEE MIN GYU Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ko/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ko-KR.json | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/lang/ko-KR.json b/src/lang/ko-KR.json index 5b760656c..dafaf13de 100644 --- a/src/lang/ko-KR.json +++ b/src/lang/ko-KR.json @@ -863,7 +863,7 @@ "emailTemplateHeartbeatJSON": "하트 비트를 설명하는 객체", "pushoverMessageTtl": "메시지 TTL(초)", "Bark API Version": "Bark API 버전", - "Mentioning": "멘토링", + "Mentioning": "멘션하기", "Mention group": "{group}을(를) 멘션", "setup a new monitor group": "새 모니터 그룹 설정", "openModalTo": "{0}을(를) 위한 모달 열기", @@ -929,5 +929,36 @@ "wayToGetBaleChatID": "봇에 메시지를 보내 채팅 ID를 얻고 밑에 URL로 이동해 chat_id를 볼 수 있어요:", "wayToGetBaleToken": "토큰은 여기서 얻을 수 있어요: {0}.", "auto-select": "자동 선택", - "issueWithGoogleChatOnAndroidHelptext": "이를 통해 {issuetackerURL}과 같은 상류 버그를 우회할 수도 있습니다." + "issueWithGoogleChatOnAndroidHelptext": "이를 통해 {issuetackerURL}과 같은 상류 버그를 우회할 수도 있습니다", + "wayToGetHeiiOnCallDetails": "트리거 ID와 API 키를 얻는 방법은 {documentation}에 설명되어 있습니다", + "authIncorrectCreds": "사용자명 혹은 비밀번호가 올바르지 않습니다.", + "successDeleted": "삭제되었습니다.", + "foundChromiumVersion": "Chromium/Chrome 확인됨. 버전 {0}", + "2faAlreadyEnabled": "2FA가 이미 활성화되어 있습니다.", + "authInvalidToken": "유효하지 않은 토큰입니다.", + "Close": "닫기", + "Dingtalk User List": "사용자 ID 목록", + "Enter a list of userId": "userId 목록을 입력하세요", + "Enter a list of mobile": "전화번호 목록을 입력하세요", + "Invalid userId": "유효하지 않은 userId: [{userId}]", + "Mention User List": "사용자 ID 목록을 멘션", + "Invalid mobile": "유효하지 않은 전화번호: [{mobile}]", + "Dingtalk Mobile List": "전화번호 목록", + "Mention Mobile List": "전화번호 목록을 멘션", + "FlashDuty Push URL": "푸시 URL", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetSevenIOApiKey": "app.seven.io > 개발자 > API 키 > 녹색 추가 버튼 아래 대시보드를 방문하세요", + "2faEnabled": "2FA가 활성화되었습니다.", + "2faDisabled": "2FA가 비활성화되었습니다.", + "wayToGetBitrix24Webhook": "{0}의 단계를 따라 webhook을 생성할 수 있습니다", + "successResumed": "성공적으로 재개되었습니다.", + "successPaused": "성공적으로 일시 중지되었습니다.", + "successEdited": "수정되었습니다.", + "successAdded": "추가되었습니다.", + "successAuthChangePassword": "비밀번호가 성공적으로 업데이트되었습니다.", + "Telephone number": "전화번호", + "SNMP Version": "SNMP 버전", + "Originator": "발신자", + "cellsyntOriginator": "수신자의 휴대폰에 메시지 발신자로 표시됩니다. 허용되는 값과 기능은 originatortype 매개변수에 따라 다릅니다.", + "Message Template": "메세지 템플릿" } From a8b4d35b2b40a410592573499e7b86b5322c33dc Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 14/35] Translated using Weblate (Polish) Currently translated at 100.0% (1172 of 1172 strings) Translated using Weblate (Polish) Currently translated at 99.8% (1170 of 1172 strings) Co-authored-by: Adam Stachowicz Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/pl/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/pl.json | 106 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 101 insertions(+), 5 deletions(-) diff --git a/src/lang/pl.json b/src/lang/pl.json index 1ede788c3..1d03efa0e 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -369,8 +369,8 @@ "smseagleRecipient": "Odbiorca/y (wiele musi być oddzielone przecinkami)", "smseagleToken": "Klucz dostępu API", "smseagleUrl": "URL Twojego urządzenia SMSEagle", - "smseagleEncoding": "Wyślij jako Unicode", - "smseaglePriority": "Priorytet wiadomości (0-9, domyślnie = 0)", + "smseagleEncoding": "Wyślij jako Unicode (domyślnie=GSM-7)", + "smseaglePriority": "Priorytet wiadomości (0-9, najwyższy priorytet = 9)", "stackfield": "Stackfield", "Customize": "Dostosuj", "Custom Footer": "Niestandardowa stopka", @@ -799,7 +799,7 @@ "showCertificateExpiry": "Pokaż wygaśnięcie certyfikatu", "gamedigGuessPortDescription": "Port używany przez Valve Server Query Protocol może różnić się od portu klienta. Spróbuj tego, jeśli monitor nie może połączyć się z serwerem.", "Secret AccessKey": "Tajny klucz AccessKey", - "wayToGetFlashDutyKey": "Możesz przejść do Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, dodać \"Uptime Kuma\", aby uzyskać adres push, skopiować klucz integracji w adresie. Więcej informacji można znaleźć na stronie", + "wayToGetFlashDutyKey": "Aby zintegrować Uptime Kuma z Flashduty: Przejdź do Kanały > Wybierz kanał > Integracje > Dodaj nową integrację, wybierz Uptime Kuma i skopiuj adres URL Push.", "Badge Down Color": "Kolor odznaki Offline", "Notify Channel": "Powiadom kanał", "Request Timeout": "Limit czasu żądania", @@ -1087,7 +1087,7 @@ "Scifi": "Scifi", "Clear": "Clear", "Elevator": "Elevator", - "Guitar": "Guitar", + "Guitar": "Gitara", "Pop": "Pop", "RabbitMQ Nodes": "Węzły zarządzania RabbitMQ", "rabbitmqNodesDescription": "Wprowadź adres URL węzłów zarządzania RabbitMQ, w tym protokół i port. Przykład: {0}", @@ -1124,5 +1124,101 @@ "the smsplanet documentation": "dokumentacja smsplanet", "Phone numbers": "Numery telefonów", "Sender name": "Nazwa nadawcy", - "smsplanetNeedToApproveName": "Wymaga zatwierdzenia w panelu klienta" + "smsplanetNeedToApproveName": "Wymaga zatwierdzenia w panelu klienta", + "Staged Tags for Batch Add": "Tagi etapowe dla dodawania zbiorczego", + "Happy Eyeballs algorithm": "Algorytm Happy Eyeballs", + "smseagleApiv1": "APIv1 (dla istniejących projektów i kompatybilności wstecznej)", + "ntfyPriorityDown": "Priorytet dla zdarzeń DOWN", + "mqttWebsocketPathExplanation": "Ścieżka WebSocket dla połączeń MQTT przez WebSocket (np. /mqtt)", + "supportBaleChatID": "Pomoc techniczna Czat bezpośredni / Grupa / Identyfikator czatu kanału", + "wayToGetBaleChatID": "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc do tego adresu URL, aby wyświetlić identyfikator czatu:", + "OAuth Audience": "Odbiorcy OAuth", + "Ip Family": "Rodzina IP", + "Conversation token": "Token konwersacji", + "Installing a Nextcloud Talk bot requires administrative access to the server.": "Instalacja bota Nextcloud Talk wymaga uprawnień administratora serwera.", + "Manual": "Instrukcja obsługi", + "clearAllEventsMsg": "Czy na pewno chcesz usunąć wszystkie wydarzenia?", + "Clear All Events": "Wyczyść wszystkie wydarzenia", + "smseagleMsgType": "Typ wiadomości", + "smseagleMsgSms": "Wiadomość SMS (domyślnie)", + "smseagleMsgRing": "Dzwonek", + "smseagleMsgTts": "Połączenie z funkcją zamiany tekstu na mowę", + "smseagleMsgTtsAdvanced": "Zaawansowana funkcja zamiany tekstu na mowę", + "smseagleTtsModel": "Identyfikator modelu zamiany tekstu na mowę", + "smseagleApiType": "Wersja API", + "smseagleApiv2": "APIv2 (zalecane dla nowych integracji)", + "smseagleDocs": "Sprawdź dokumentację lub dostępność APIv2: {0}", + "smseagleComma": "Wiele wartości należy oddzielić przecinkami", + "pingCountLabel": "Maksymalna liczba pakietów", + "pingGlobalTimeoutDescription": "Całkowity czas w sekundach przed zatrzymaniem pingowania, niezależnie od wysłanych pakietów", + "pingPerRequestTimeoutLabel": "Limit czasu na ping", + "pingPerRequestTimeoutDescription": "Jest to maksymalny czas oczekiwania (w sekundach) przed uznaniem pojedynczego pakietu ping za utracony", + "Path": "Ścieżka", + "mqttWebSocketPath": "Ścieżka MQTT WebSocket", + "mqttWebsocketPathInvalid": "Użyj prawidłowego formatu ścieżki WebSocket", + "mqttHostnameTip": "Użyj tego formatu {hostnameFormat}", + "brevoApiKey": "Klucz API Brevo", + "brevoApiHelp": "Utwórz klucz API tutaj: {0}", + "brevoToEmail": "Na adres e-mail", + "Clear Form": "Wyczyść formularz", + "wayToGetBaleToken": "Możesz otrzymać token z {0}.", + "Use HTML for custom E-mail body": "Użyj HTML do tworzenia niestandardowej treści wiadomości e-mail", + "Events cleared successfully": "Wydarzenia zostały pomyślnie usunięte.", + "No monitors found": "Nie znaleziono monitorów.", + "Could not clear events": "Nie można usunąć {failed}/{total} zdarzeń", + "Mention Mobile List": "Lista urządzeń mobilnych Mention", + "Mention User List": "Lista identyfikatorów użytkowników Mention", + "Dingtalk Mobile List": "Lista urządzeń mobilnych", + "Dingtalk User List": "Lista identyfikatorów użytkowników", + "Enter a list of userId": "Wprowadź listę identyfikatorów użytkowników", + "Enter a list of mobile": "Wprowadź listę numerów telefonów komórkowych", + "Invalid mobile": "Nieprawidłowy numer telefonu komórkowego [{mobile}]", + "Invalid userId": "Nieprawidłowy identyfikator użytkownika [{userId}]", + "smseagleContactV2": "Identyfikatory kontaktów w książce telefonicznej", + "smseagleDuration": "Czas trwania (w sekundach)", + "SpugPush Template Code": "Kod szablonu", + "ntfyPriorityHelptextPriorityHigherThanDown": "Priorytet regularny powinien być wyższy niż priorytet {0}. Priorytet {1} jest wyższy niż priorytet {0} i priorytet {2}", + "FlashDuty Push URL": "Adres URL Push", + "FlashDuty Push URL Placeholder": "Kopiuj ze strony integracji alertów", + "Optional: The audience to request the JWT for": "Opcjonalnie: odbiorca żądający JWT dla", + "brevoFromEmail": "Z e-maila", + "brevoFromName": "Od nazwy", + "brevoLeaveBlankForDefaultName": "pozostaw puste pole, aby użyć nazwy domyślnej", + "brevoCcEmail": "E-mail CC", + "brevoBccEmail": "E-mail BCC", + "brevoSeparateMultipleEmails": "Oddziel wiele adresów e-mail przecinkami", + "brevoSubject": "Temat", + "brevoLeaveBlankForDefaultSubject": "pozostaw puste pole dla domyślnego tematu", + "pingCountDescription": "Liczba pakietów do wysłania przed zatrzymaniem", + "pingNumericLabel": "Wyjście numeryczne", + "pingNumericDescription": "Jeśli opcja jest zaznaczona, zamiast symbolicznych nazw hostów będą wyświetlane adresy IP", + "pingGlobalTimeoutLabel": "Globalny limit czasu", + "pingIntervalAdjustedInfo": "Interwał dostosowany na podstawie liczby pakietów, globalnego limitu czasu i limitu czasu na ping", + "smtpHelpText": "„SMTPS” sprawdza, czy SMTP/TLS działa; „Ignore TLS” łączy się za pomocą zwykłego tekstu; „STARTTLS” łączy się, wysyła polecenie STARTTLS i weryfikuje certyfikat serwera. Żadna z tych opcji nie wysyła wiadomości e-mail.", + "Custom URL": "Niestandardowy adres URL", + "customUrlDescription": "Będzie używany jako klikalny adres URL zamiast adresu monitora.", + "OneChatAccessToken": "Token dostępu OneChat", + "OneChatUserIdOrGroupId": "Identyfikator użytkownika OneChat lub identyfikator grupy", + "OneChatBotId": "Identyfikator bota OneChat", + "Disable URL in Notification": "Wyłącz adres URL w powiadomieniu", + "Add Another Tag": "Dodaj kolejny tag", + "pause": "Pauza", + "Nextcloud host": "Host Nextcloud", + "Bot secret": "Sekret bota", + "Send UP silently": "Wyślij UP po cichu", + "Send DOWN silently": "Wyślij DOWN po cichu", + "wayToWriteEvolutionRecipient": "Numer telefonu z prefiksem międzynarodowym, ale bez znaku plusa na początku ({0}), identyfikator kontaktu ({1}) lub identyfikator grupy ({2}).", + "wayToGetEvolutionUrlAndToken": "Adres URL interfejsu API i token można uzyskać, przechodząc do wybranego kanału z {0}", + "evolutionRecipient": "Numer telefonu / Identyfikator kontaktu / Identyfikator grupy", + "evolutionInstanceName": "Nazwa instancji", + "Template plain text instead of using cards": "Szablon zwykłego tekstu zamiast używania kart", + "defaultFriendlyName": "Nowy monitor", + "smseagleGroupV2": "Identyfikatory grup w książce telefonicznej", + "Add Tags": "Dodaj tagi", + "tagAlreadyOnMonitor": "Ten tag (nazwa i wartość) jest już na monitorze lub oczekuje na dodanie.", + "tagAlreadyStaged": "Ten tag (nazwa i wartość) jest już przygotowany dla tej partii.", + "tagNameExists": "Tag systemowy o tej nazwie już istnieje. Wybierz go z listy lub użyj innej nazwy.", + "auto-select": "Wybór automatyczny", + "issueWithGoogleChatOnAndroidHelptext": "Pozwala to również ominąć błędy upstream, takie jak {issuetackerURL}", + "ipFamilyDescriptionAutoSelect": "Używa {happyEyeballs} do określania rodziny adresów IP." } From da257248eff17deceba0dc667d3ef61b045f70f7 Mon Sep 17 00:00:00 2001 From: Davit Chinchaladze Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 15/35] Translated using Weblate (Georgian) Currently translated at 6.5% (77 of 1172 strings) Co-authored-by: Davit Chinchaladze Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/ka/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/ka.json | 50 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/src/lang/ka.json b/src/lang/ka.json index 32117c3b4..1eeb1815d 100644 --- a/src/lang/ka.json +++ b/src/lang/ka.json @@ -1,19 +1,19 @@ { - "Dashboard": "დაფა", + "Dashboard": "საინფორმაციო დაფა", "Help": "დახმარება", - "New Update": "განახლება", + "New Update": "ახალი განახლება", "Language": "ენა", "Appearance": "ვიზუალი", "Theme": "სტილი", "Game": "თამაში", "Version": "ვერსია", - "Quick Stats": "თვალის გადავლება", + "Quick Stats": "მოკლე სტატისტიკა", "Up": "მაღლა", "Pending": "მოლოდინი", - "languageName": "Georgian", - "Settings": "კონფიგურაცია", + "languageName": "ქართული", + "Settings": "პარამეტრები", "General": "ძირითადი", - "Check Update On GitHub": "GitHub_ზე განახლების შემოწმება", + "Check Update On GitHub": "GitHub ზე განახლების შემოწმება", "List": "სია", "Add": "დამატება", "Add New Monitor": "ახალი მონიტორის დამატება", @@ -39,5 +39,41 @@ "Keyword": "საკვანძო სიტყვა", "Unknown": "უცნობი", "dbName": "მონაცემთა ბაზის სახელი", - "Home": "მთავარი" + "Home": "მთავარი", + "Setup Notification": "შეტყობინების გამართვა", + "Notification Type": "შეტყობინების ტიპი", + "Schedule maintenance": "ტექნიკური მომსახურების დაგეგმვა", + "Notifications": "შეტყობინებები", + "Search Engine Visibility": "საძიებო სისტემებში ხილვადობა", + "Discourage search engines from indexing site": "საძიებო სისტემებისთვის საიტის ინდექსირების აკრძალვა", + "Entry Page": "საწყისი გვერდი", + "Monitor History": "მონიტორის ისტორია", + "telegramSendSilentlyDescription": "შეტყობინებას ჩუმად აგზავნის. მომხმარებლი შეტყობინებას ხმის გარეშე მიიღებს.", + "telegramProtectContentDescription": "ჩართვის შემთხვევაში, Telegram-ში ბოტის შეტყობინებები დაცული იქნება გადამისამართებისა და შენახვისგან.", + "Body Encoding": "ტანის ენკოდირება", + "Expires": "ვადა იწურება", + "Auto Get": "ავტომატური შევსება", + "Display Timezone": "საჩვენებელი დროის სარტყელი", + "notificationRegional": "რეგიონალური", + "Clone Monitor": "მონიტორის კლონირება", + "Clone": "კლონირება", + "cloneOf": "დაკლონე {0}", + "API Keys": "API გასაღებები", + "Add API Key": "API გასაღების დამატება", + "supportTelegramChatID": "პირდაპირი ჩატის / ჯგუფის / არხის ჩატის ID-ის მხარდაჭერა", + "Powered by": "მხარდაჭერილია", + "Proxies": "პროქსიები", + "Reverse Proxy": "საპირისპირო პროქსი", + "Bot Token": "ბოტის ტოკენი", + "Chat ID": "ჩათის ID", + "telegramMessageThreadID": "(ნებაყოფლობითი) შეტყობინების ნაკადის ID", + "telegramProtectContent": "გადამისამართებისგან/შენახვისგან დაცვა", + "Save": "შენახვა", + "setupDatabaseMariaDB": "გარე MariaDB მონაცემთა ბაზასთან დაკავშირება. საჭიროა შეავსო მონაცემთა ბაზასთან დასაკავშირებელი ინფორმაცია.", + "settingUpDatabaseMSG": "მიმდინარეობს მონაცემთა ბაზის დაყენება. შესაძლოა გარკვეული დრო დასჭირდეს, გთხოვთ, მოთმინება გამოიჩინოთ.", + "Cannot connect to the socket server": "socket სერვერთან დაკავშირება შეუძლებელია", + "Reconnecting...": "მიმდინარეობს დაკავშირება...", + "Primary Base URL": "ძირითადი ძირი URL", + "Maintenance": "მოვლა", + "statusMaintenance": "მუშავდება" } From 34dcbf9d6949fa989dfc0a7068caf299f3340027 Mon Sep 17 00:00:00 2001 From: gp2pepe Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 16/35] Translated using Weblate (Spanish) Currently translated at 100.0% (1172 of 1172 strings) Co-authored-by: gp2pepe Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index e33f03202..b641d9c4b 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -1165,8 +1165,49 @@ "No monitors found": "No se encontraron monitores.", "Could not clear events": "No se pudieron limpiar {failed}/{total} eventos", "smseagleGroupV2": "ID(s) de grupo(s) de Guía Telefónica", - "mqttWebsocketPathExplanation": "Ruta del WebSocker para MQTT sobre conexion WebSocker (ejemplo, /mqtt)", + "mqttWebsocketPathExplanation": "Ruta del WebSocker para MQTT sobre conexión WebSocker (ejemplo, /mqtt)", "OAuth Audience": "Audiencia OAuth", "Template plain text instead of using cards": "Plantilla de texto plano en vez de utilizar tarjetas", - "issueWithGoogleChatOnAndroidHelptext": "Esto también permite evitar errores anteriores como {issuetackerURL}" + "issueWithGoogleChatOnAndroidHelptext": "Esto también permite evitar errores anteriores como {issuetackerURL}", + "wayToGetBaleChatID": "Puedes obtener tu ID de chat enviando un mensaje al bot y yendo a esta URL para ver el chat_id:", + "smseagleContactV2": "ID(s) de contacto(s) de Guía Telefónica", + "smseagleMsgTtsAdvanced": "Llamada avanzada de texto a voz", + "wayToWriteEvolutionRecipient": "El número de teléfono con el prefijo internacional, pero sin el signo más al principio ({0}), el ID de contacto ({1}) o el ID de grupo ({2}).", + "brevoApiHelp": "Crea una clave API aquí: {0}", + "brevoLeaveBlankForDefaultName": "deja en blanco para el nombre por defecto", + "brevoLeaveBlankForDefaultSubject": "Deja en blanco para sujeto por defecto", + "Send DOWN silently": "Envía DOWN silenciosamente", + "Installing a Nextcloud Talk bot requires administrative access to the server.": "La instalación de un bot de Nextcloud Talk requiere acceso administrativo al servidor.", + "Font Twemoji by Twitter licensed under": "Fuente Twemoji de Twitter con licencia", + "Optional: The audience to request the JWT for": "Opcional: La audiencia para la que se solicitará el JWT", + "brevoApiKey": "Clave API de Brevo", + "supportBaleChatID": "Soporte de chat directo/grupo/ID de chat del canal", + "wayToGetBaleToken": "Puedes obtener un token de {0}.", + "Mention Mobile List": "Mencionar lista de móviles", + "Mention User List": "Mencionar la lista de id de usuario", + "Dingtalk Mobile List": "Lista de móviles", + "Dingtalk User List": "Lista de ID de usuario", + "Enter a list of userId": "Ingresa una lista de userId", + "Enter a list of mobile": "Ingresa una lista de móviles", + "Invalid mobile": "Móvil inválido [{mobile}]", + "Invalid userId": "UserId inválido [{userId}]", + "smseagleTtsModel": "ID del modelo de texto a voz", + "ntfyPriorityHelptextPriorityHigherThanDown": "La prioridad regular debe ser mayor que la prioridad {0}. La prioridad {1} es mayor que la prioridad {0} {2}", + "FlashDuty Push URL": "URL push", + "brevoFromEmail": "Desde el correo electrónico", + "brevoFromName": "De Nombre", + "brevoToEmail": "Para el correo electrónico", + "brevoCcEmail": "Correo electrónico CC", + "brevoBccEmail": "Correo electrónico BCC", + "brevoSeparateMultipleEmails": "Separa múltiples direcciones de correo con comas", + "brevoSubject": "Sujeto", + "Staged Tags for Batch Add": "Etiquetas preparadas para agregar por lotes", + "Nextcloud host": "Servidor Nextcloud", + "Conversation token": "Token de conversación", + "Bot secret": "Secreto del Bot", + "Send UP silently": "Envía UP silenciosamente", + "wayToGetEvolutionUrlAndToken": "Puede obtener la URL de la API y el token ingresando al canal deseado desde {0}", + "evolutionRecipient": "Número de teléfono / ID de contacto / ID de grupo", + "evolutionInstanceName": "Nombre de instancia", + "auto-select": "Selección automática" } From ed18d06cbbf1b3f6f804f337551c20bba02f1b85 Mon Sep 17 00:00:00 2001 From: Davide Di Caro Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 17/35] Translated using Weblate (Italian) Currently translated at 100.0% (1174 of 1174 strings) Co-authored-by: Davide Di Caro Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 16638cfa7..6a69362ed 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -1199,5 +1199,7 @@ "Enter a list of userId": "Inserisci un elenco di userId", "Invalid mobile": "Cellulare non valido [{mobile}]", "Enter a list of mobile": "Inserisci un elenco di cellulari", - "Invalid userId": "ID utente non valido [{userId}]" + "Invalid userId": "ID utente non valido [{userId}]", + "Maximum Retries": "Tentativi massimi", + "Number of retry attempts if webhook fails": "Numero di tentativi di retry (ogni 60-180 secondi) in caso di errore della webhook." } From 18cb1ec9c0a703068692b93d341a14d8499f45f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Buchti=C4=8D?= Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 18/35] Translated using Weblate (Czech) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1174 of 1174 strings) Co-authored-by: Buchtič Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/cs/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/cs-CZ.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/lang/cs-CZ.json b/src/lang/cs-CZ.json index 4747d2e16..a01d1e0b5 100644 --- a/src/lang/cs-CZ.json +++ b/src/lang/cs-CZ.json @@ -1201,5 +1201,19 @@ "Bot secret": "Bot secret", "Send UP silently": "UP odeslat tiše", "Send DOWN silently": "DOWN odeslat tiše", - "Installing a Nextcloud Talk bot requires administrative access to the server.": "Instalace Nextcloud Talk bota vyžaduje administrátorský přístup k serveru." + "Installing a Nextcloud Talk bot requires administrative access to the server.": "Instalace Nextcloud Talk bota vyžaduje administrátorský přístup k serveru.", + "Maximum Retries": "Max. počet pokusů", + "Number of retry attempts if webhook fails": "Počet pokusů o opakování (každých 60–180 sekund), pokud se webhook nepodaří odeslat.", + "wayToGetBaleToken": "Token můžete získat na adrese {0}.", + "wayToGetBaleChatID": "ID chatu získáte zasláním zprávy robotovi a přejdete na tuto URL adresu, na které se zobrazí chat_id:", + "supportBaleChatID": "Podpora přímého chatu / skupiny / ID chatu kanálu", + "Dingtalk Mobile List": "Seznam telefonních čísel", + "Dingtalk User List": "Seznam ID uživatelů", + "Mention Mobile List": "Seznam Mention telefonních čísel", + "Mention User List": "Seznam ID uživatelů Mention", + "Enter a list of userId": "Zadejte seznam userID", + "Enter a list of mobile": "Zadejte seznam telefonních čísel", + "Invalid mobile": "Neplatné telefonní číslo [{mobile}]", + "Invalid userId": "Neplatné userID [{userId}]", + "auto-select": "Automatický výběr" } From 3466f8e9f7ecccada5875c805dce4733e22baa35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Rosa=20D=C3=ADaz?= Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 19/35] Translated using Weblate (Spanish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (1174 of 1174 strings) Co-authored-by: Aarón Rosa Díaz Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/es/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/es-ES.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lang/es-ES.json b/src/lang/es-ES.json index b641d9c4b..2b17ccab0 100644 --- a/src/lang/es-ES.json +++ b/src/lang/es-ES.json @@ -1209,5 +1209,7 @@ "wayToGetEvolutionUrlAndToken": "Puede obtener la URL de la API y el token ingresando al canal deseado desde {0}", "evolutionRecipient": "Número de teléfono / ID de contacto / ID de grupo", "evolutionInstanceName": "Nombre de instancia", - "auto-select": "Selección automática" + "auto-select": "Selección automática", + "Number of retry attempts if webhook fails": "Número de intentos de reintento (cada 60–180 segundos) si el webhook falla.", + "Maximum Retries": "Máximo de reintentos" } From acda7f720f221056804e56b48ab7216ccc76f9af Mon Sep 17 00:00:00 2001 From: Taskin Khaleque Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 20/35] Translated using Weblate (Bengali) Currently translated at 22.6% (266 of 1174 strings) Co-authored-by: Taskin Khaleque Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/bn/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/bn.json | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/lang/bn.json b/src/lang/bn.json index 22e360731..18772837e 100644 --- a/src/lang/bn.json +++ b/src/lang/bn.json @@ -225,5 +225,48 @@ "ignoreTLSError": "HTTPS ওয়েবসাইটগুলির জন্য TLS/SSL ত্রুটিগুলি উপেক্ষা করুন", "pushViewCode": "পুশ মনিটর কীভাবে ব্যবহার করবেন? (কোড দেখুন)", "Appearance": "দেখানোর ধরন", - "Quick Stats": "তাৎক্ষণিক পরিসংখ্যান" + "Quick Stats": "তাৎক্ষণিক পরিসংখ্যান", + "affectedMonitorsDescription": "বর্তমান রক্ষণাবেক্ষণে প্রভাবিত মনিটরগুলো নির্বাচন করুন", + "atLeastOneMonitor": "অন্তত একটি প্রভাবিত মনিটর নির্বাচন করুন", + "pushoversounds cashregister": "নগদ রেজিস্টার", + "pushoversounds incoming": "আগত", + "importHandleDescription": "আপনি যদি একই নামের প্রতিটি মনিটর অথবা নোটিফিকেশান এড়িয়ে যেতে চান তাহলে 'যেটা এখন আছে' সেটা এড়িয়ে যান । 'ওভাররাইট' প্রতিটি বিদ্যমান মনিটর এবং নোটিফিকেশান মুছে ফেলবে।", + "confirmImportMsg": "তুমি কি নিশ্চিত যে তুমি ব্যাকআপটি ইমপোর্ট করতে চাও? অনুগ্রহ করে যাচাই করো তুমি সঠিক ইমপোর্ট অপশনটি নির্বাচন করেছ কিনা।", + "twoFAVerifyLabel": "দয়া করে আপনার টোকেনটি প্রবেশ করুন ২-ধাপ যাচাইকরণের (2FA) জন্যঃ", + "tokenValidSettingsMsg": "টোকেনটি বৈধ! এখন আপনি ২-ধাপ যাচাইকরণের (2FA) সেটিংস সংরক্ষণ করতে পারেন।", + "confirmEnableTwoFAMsg": "তুমি কি নিশ্চিত যে তুমি ২-ধাপ যাচাইকরণ (2FA) চালু করতে চাও?", + "confirmDisableTwoFAMsg": "তুমি কি নিশ্চিত যে তুমি ২-ধাপ যাচাইকরণ (2FA) বন্ধ করতে চাও?", + "recurringIntervalMessage": "প্রতিদিন একবার চালান । প্রতি {0} দিনে একবার চালান", + "affectedStatusPages": "নির্বাচিত স্ট্যাটাস পেজগুলোতে এই রক্ষণাবেক্ষণ বার্তাটি দেখান", + "passwordNotMatchMsg": "পুনরায় দেওয়া পাসওয়ার্ডটি মিলছে না।", + "invertKeywordDescription": "কীওয়ার্ডটি উপস্থিত আছে কি না নয়, বরং অনুপস্থিত আছে কি না দেখুন।", + "jsonQueryDescription": "সার্ভারের JSON প্রতিক্রিয়া থেকে JSON কুয়েরি ব্যবহার করে নির্দিষ্ট ডেটা পার্স ও এক্সট্র্যাক্ট করুন; যদি JSON প্রত্যাশিত না হয়, তাহলে প্রতিক্রিয়ার জন্য “$” ব্যবহার করুন। প্রাপ্ত ফল এরপর প্রত্যাশিত মানের সাথে **স্ট্রিং** হিসেবে তুলনা করা হবে। ডকুমেন্টেশনের জন্য {0} দেখুন এবং কুয়েরি নিয়ে পরীক্ষা করতে {1} ব্যবহার করুন।", + "backupDescription": "আপনি সব মনিটর ও নোটিফিকেশনকে একটি JSON ফাইলে ব্যাকআপ নিতে পারেন।", + "backupDescription2": "নোট: ইতিহাস ও ইভেন্ট সম্পর্কিত তথ্য এতে অন্তর্ভুক্ত নয়।", + "backupDescription3": "নোটিফিকেশন টোকেনের মতো সংবেদনশীল ডেটা এক্সপোর্ট ফাইলে অন্তর্ভুক্ত থাকে; অনুগ্রহ করে এক্সপোর্টটি নিরাপদভাবে সংরক্ষণ করুন।", + "endpoint": "সংযোগ বিন্দু", + "octopushAPIKey": "কন্ট্রোল প্যানেলে থাকা HTTP API ক্রেডেনশিয়াল থেকে “API key” সংগ্রহ করুন", + "octopushLogin": "কন্ট্রোল প্যানেলে থাকা HTTP API ক্রেডেনশিয়াল থেকে “লগইন” তথ্য সংগ্রহ করুন", + "promosmsLogin": "API লগইন নাম", + "promosmsPassword": "API পাসওয়ার্ড", + "pushoversounds pushover": "Pushover (ডিফল্ট)", + "pushoversounds bike": "সাইকেল", + "pushoversounds bugle": "বিউগল", + "pushoversounds classical": "ক্লাসিক", + "pushoversounds cosmic": "মহাজাগতিক", + "pushoversounds falling": "পড়ে যাওয়া / পতনশীল", + "pushoversounds gamelan": "গামেলান", + "pushoversounds intermission": "বিরতি", + "pushoversounds magic": "ম্যাজিক", + "pushoversounds mechanical": "যান্ত্রিক", + "pushoversounds pianobar": "পিয়ানো বার", + "pushoversounds siren": "সাইরেন", + "pushoversounds spacealarm": "স্পেস অ্যালার্ম", + "pushoversounds tugboat": "টাগবোট", + "pushoversounds alien": "এলিয়েন সতর্কতা (দীর্ঘ)", + "pushoversounds climb": "আরোহণ (দীর্ঘ)", + "pushoversounds persistent": "স্থায়ী (দীর্ঘ)", + "pushoversounds echo": "Pushover ইকো (দীর্ঘ)", + "notificationDescription": "নোটিফিকেশনগুলো কার্যকর হতে হলে সেগুলোকে কোনো মনিটরের সাথে যুক্ত করতে হবে।", + "keywordDescription": "সাধারণ HTML বা JSON প্রতিক্রিয়ায় কীওয়ার্ড অনুসন্ধান করুন। এই অনুসন্ধানটি কেস-সেনসিটিভ।" } From d170e54a00a250717ca4fcd6a71a241f09db9527 Mon Sep 17 00:00:00 2001 From: Gringo Date: Tue, 28 Oct 2025 18:20:19 +0000 Subject: [PATCH 21/35] Translated using Weblate (Italian) Currently translated at 100.0% (1174 of 1174 strings) Co-authored-by: Gringo Translate-URL: https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/it/ Translation: Uptime Kuma/Uptime Kuma --- src/lang/it-IT.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/it-IT.json b/src/lang/it-IT.json index 6a69362ed..ead1fd08b 100644 --- a/src/lang/it-IT.json +++ b/src/lang/it-IT.json @@ -1201,5 +1201,5 @@ "Enter a list of mobile": "Inserisci un elenco di cellulari", "Invalid userId": "ID utente non valido [{userId}]", "Maximum Retries": "Tentativi massimi", - "Number of retry attempts if webhook fails": "Numero di tentativi di retry (ogni 60-180 secondi) in caso di errore della webhook." + "Number of retry attempts if webhook fails": "Numero di tentativi di ripetizione (ogni 60-180 secondi) se il webhook fallisce." } From 7f294c2c25533c155af1511be7567dd33f858a94 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 29 Oct 2025 15:57:57 +0800 Subject: [PATCH 22/35] README Improvements (#6283) --- README.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b58edfe7d..eaf760542 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,7 @@ cd uptime-kuma curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml docker compose up -d ``` - -Uptime Kuma is now running on . +Uptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001). > [!WARNING] > File Systems like **NFS** (Network File System) are **NOT** supported. Please map to a local directory or volume. @@ -56,22 +55,22 @@ Uptime Kuma is now running on . ```bash docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2 ``` +Uptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001). + +If you want to limit exposure to localhost only: + +```bash +docker run ... -p 127.0.0.1:3001:3001 ... +``` -Uptime Kuma is now running on . -> [!NOTE] -> If you want to limit exposure to localhost (without exposing port for other users or to use a [reverse proxy](https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy)), you can expose the port like this: -> -> ```bash -> docker run -d --restart=always -p 127.0.0.1:3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2 -> ``` ### 💪🏻 Non-Docker Requirements: - Platform - - ✅ Major Linux distros such as Debian, Ubuntu, CentOS, Fedora and ArchLinux etc. + - ✅ Major Linux distros such as Debian, Ubuntu, Fedora and ArchLinux etc. - ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher - ❌ FreeBSD / OpenBSD / NetBSD - ❌ Replit / Heroku @@ -94,8 +93,7 @@ npm install pm2 -g && pm2 install pm2-logrotate # Start Server pm2 start server/server.js --name uptime-kuma ``` - -Uptime Kuma is now running on +Uptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001). More useful PM2 Commands From 79c844d598ecda3d4d339e1632a1cc18f20bd170 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 30 Oct 2025 11:36:00 +0800 Subject: [PATCH 23/35] Add `no-audit` to the setup script (#6288) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7f09ef86f..dda62ca39 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test2 --target pr-test2 . --push", "upload-artifacts": "node extra/release/upload-artifacts.mjs", "upload-artifacts-beta": "node extra/release/upload-artifacts-beta.mjs", - "setup": "git checkout 2.0.2 && npm ci --omit dev && npm run download-dist", + "setup": "git checkout 2.0.2 && npm ci --omit dev --no-audit && npm run download-dist", "download-dist": "node extra/download-dist.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", From 9fb4263427f3f0216457a920d19565e31f7eb610 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 30 Oct 2025 13:23:27 +0800 Subject: [PATCH 24/35] Add Copilot instructions (#6290) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/copilot-instructions.md | 167 ++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 .github/copilot-instructions.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..f29b9f4b3 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,167 @@ +# Copilot Instructions for Uptime Kuma + +## Copilot's Goals/Tasks + +- Check spelling +- Do not show "Pull Request Overview" +- You do not have to reply if there are no issues + +## Repository Overview + +**Uptime Kuma** is a self-hosted monitoring tool for HTTP(s), TCP, DNS, Docker, etc. Built with Vue 3 (frontend) and Node.js/Express (backend), using Socket.IO for real-time communication. + +- **Languages**: JavaScript, Vue 3, TypeScript (limited), HTML, CSS/SCSS +- **Backend**: Node.js >= 20.4, Express.js, Socket.IO, SQLite +- **Frontend**: Vue 3, Vite, Bootstrap 5, Chart.js +- **Package Manager**: npm with `legacy-peer-deps=true` (.npmrc) + +## Build & Validation Commands + +### Prerequisites +- Node.js >= 20.4.0, npm >= 9.3, Git + +### Essential Command Sequence + +1. **Install Dependencies**: + ```bash + npm ci # Use npm ci NOT npm install (~60-90 seconds) + ``` + +2. **Linting** (required before committing): + ```bash + npm run lint # Both linters (~15-30 seconds) + npm run lint:prod # For production (zero warnings) + ``` + +3. **Build Frontend**: + ```bash + npm run build # Takes ~90-120 seconds, builds to dist/ + ``` + +4. **Run Tests**: + ```bash + npm run test-backend # Backend tests (~50-60 seconds) + npm test # All tests + ``` + +### Development Workflow + +```bash +npm run dev # Starts frontend (port 3000) and backend (port 3001) +``` + +## Project Architecture + +### Directory Structure + +``` +/ +├── server/ Backend source code +│ ├── model/ Database models (auto-mapped to tables) +│ ├── monitor-types/ Monitor type implementations +│ ├── notification-providers/ Notification integrations +│ ├── routers/ Express routers +│ ├── socket-handlers/ Socket.IO event handlers +│ ├── server.js Server entry point +│ └── uptime-kuma-server.js Main server logic +├── src/ Frontend source code (Vue 3 SPA) +│ ├── components/ Vue components +│ ├── pages/ Page components +│ ├── lang/ i18n translations +│ ├── router.js Vue Router configuration +│ └── main.js Frontend entry point +├── db/ Database related +│ ├── knex_migrations/ Knex migration files +│ └── kuma.db SQLite database (gitignored) +├── test/ Test files +│ ├── backend-test/ Backend unit tests +│ └── e2e/ Playwright E2E tests +├── config/ Build configuration +│ ├── vite.config.js Vite build config +│ └── playwright.config.js Playwright test config +├── dist/ Frontend build output (gitignored) +├── data/ App data directory (gitignored) +├── public/ Static frontend assets (dev only) +├── docker/ Docker build files +└── extra/ Utility scripts +``` + +### Key Configuration Files + +- **package.json**: Scripts, dependencies, Node.js version requirement +- **.eslintrc.js**: ESLint rules (4 spaces, double quotes, unix line endings, JSDoc required) +- **.stylelintrc**: Stylelint rules (4 spaces indentation) +- **.editorconfig**: Editor settings (4 spaces, LF, UTF-8) +- **tsconfig-backend.json**: TypeScript config for backend (only src/util.ts) +- **.npmrc**: `legacy-peer-deps=true` (required for dependency resolution) +- **.gitignore**: Excludes node_modules, dist, data, tmp, private + +### Code Style (strictly enforced by linters) + +- 4 spaces indentation, double quotes, Unix line endings (LF), semicolons required +- **Naming**: JavaScript/TypeScript (camelCase), SQLite (snake_case), CSS/SCSS (kebab-case) +- JSDoc required for all functions/methods + +## CI/CD Workflows + +**auto-test.yml** (runs on PR/push to master/1.23.X): +- Linting, building, backend tests on multiple OS/Node versions (15 min timeout) +- E2E Playwright tests + +**validate.yml**: Validates JSON/YAML files, language files, knex migrations + +**PR Requirements**: All linters pass, tests pass, code follows style guidelines + +## Common Issues + +1. **npm install vs npm ci**: Always use `npm ci` for reproducible builds +2. **TypeScript errors**: `npm run tsc` shows 1400+ errors - ignore them, they don't affect builds +3. **Stylelint warnings**: Deprecation warnings are expected, ignore them +4. **Test failures**: Always run `npm run build` before running tests +5. **Port conflicts**: Dev server uses ports 3000 and 3001 +6. **First run**: Server shows "db-config.json not found" - this is expected, starts setup wizard + +## Translations + +- Managed via Weblate. Add keys to `src/lang/en.json` only +- Don't include other languages in PRs +- Use `$t("key")` in Vue templates + +## Database + +- Primary: SQLite (also supports MariaDB/MySQL/PostgreSQL) +- Migrations in `db/knex_migrations/` using Knex.js +- Filename format validated by CI: `node ./extra/check-knex-filenames.mjs` + +## Testing + +- **Backend**: Node.js test runner, fast unit tests +- **E2E**: Playwright (requires `npx playwright install` first time) +- Test data in `data/playwright-test` + +## Adding New Features + +### New Notification Provider +Files to modify: +1. `server/notification-providers/PROVIDER_NAME.js` (backend logic) +2. `server/notification.js` (register provider) +3. `src/components/notifications/PROVIDER_NAME.vue` (frontend UI) +4. `src/components/notifications/index.js` (register frontend) +5. `src/components/NotificationDialog.vue` (add to list) +6. `src/lang/en.json` (add translation keys) + +### New Monitor Type +Files to modify: +1. `server/monitor-types/MONITORING_TYPE.js` (backend logic) +2. `server/uptime-kuma-server.js` (register monitor type) +3. `src/pages/EditMonitor.vue` (frontend UI) +4. `src/lang/en.json` (add translation keys) + +## Important Notes + +1. **Trust these instructions** - based on testing. Search only if incomplete/incorrect +2. **Dependencies**: 5 known vulnerabilities (3 moderate, 2 high) - acknowledged, don't fix without discussion +3. **Git Branches**: `master` (v2 development), `1.23.X` (v1 maintenance) +4. **Node Version**: >= 20.4.0 required +5. **Socket.IO**: Most backend logic in `server/socket-handlers/`, not REST +6. **Never commit**: `data/`, `dist/`, `tmp/`, `private/`, `node_modules/` From a52186cf7e8ab1e6101acf4f622e39d9055cc066 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 2 Nov 2025 02:52:40 +0800 Subject: [PATCH 25/35] refactor(logging): improve log function parameters (#6298) --- server/server.js | 2 +- src/util.js | 57 +++++++++++++----------------------------- src/util.ts | 64 ++++++++++++++---------------------------------- 3 files changed, 36 insertions(+), 87 deletions(-) diff --git a/server/server.js b/server/server.js index 6dba70a3e..86a6d2b20 100644 --- a/server/server.js +++ b/server/server.js @@ -59,7 +59,7 @@ if (process.env.UPTIME_KUMA_WS_ORIGIN_CHECK === "bypass") { } const checkVersion = require("./check-version"); -log.info("server", "Uptime Kuma Version: " + checkVersion.version); +log.info("server", "Uptime Kuma Version:", checkVersion.version); log.info("server", "Loading modules"); diff --git a/src/util.js b/src/util.js index 9998205f9..9ceaaf064 100644 --- a/src/util.js +++ b/src/util.js @@ -133,7 +133,7 @@ function ucfirst(str) { } exports.ucfirst = ucfirst; function debug(msg) { - exports.log.log("", msg, "debug"); + exports.log.log("", "debug", msg); } exports.debug = debug; class Logger { @@ -156,7 +156,7 @@ class Logger { this.debug("server", this.hideLog); } } - log(module, msg, level) { + log(module, level, ...msg) { if (level === "DEBUG" && !exports.isDev) { return; } @@ -177,7 +177,6 @@ class Logger { let timePart; let modulePart; let levelPart; - let msgPart; if (exports.isNode) { switch (level) { case "DEBUG": @@ -189,72 +188,50 @@ class Logger { } modulePart = "[" + moduleColor + module + exports.CONSOLE_STYLE_Reset + "]"; levelPart = levelColor + `${level}:` + exports.CONSOLE_STYLE_Reset; - switch (level) { - case "ERROR": - if (typeof msg === "string") { - msgPart = exports.CONSOLE_STYLE_FgRed + msg + exports.CONSOLE_STYLE_Reset; - } - else { - msgPart = msg; - } - break; - case "DEBUG": - if (typeof msg === "string") { - msgPart = exports.CONSOLE_STYLE_FgGray + msg + exports.CONSOLE_STYLE_Reset; - } - else { - msgPart = msg; - } - break; - default: - msgPart = msg; - break; - } } else { timePart = now; modulePart = `[${module}]`; levelPart = `${level}:`; - msgPart = msg; } switch (level) { case "ERROR": - console.error(timePart, modulePart, levelPart, msgPart); + console.error(timePart, modulePart, levelPart, ...msg); break; case "WARN": - console.warn(timePart, modulePart, levelPart, msgPart); + console.warn(timePart, modulePart, levelPart, ...msg); break; case "INFO": - console.info(timePart, modulePart, levelPart, msgPart); + console.info(timePart, modulePart, levelPart, ...msg); break; case "DEBUG": if (exports.isDev) { - console.debug(timePart, modulePart, levelPart, msgPart); + console.debug(timePart, modulePart, levelPart, ...msg); } break; default: - console.log(timePart, modulePart, levelPart, msgPart); + console.log(timePart, modulePart, levelPart, ...msg); break; } } - info(module, msg) { - this.log(module, msg, "info"); + info(module, ...msg) { + this.log(module, "info", ...msg); } - warn(module, msg) { - this.log(module, msg, "warn"); + warn(module, ...msg) { + this.log(module, "warn", ...msg); } - error(module, msg) { - this.log(module, msg, "error"); + error(module, ...msg) { + this.log(module, "error", ...msg); } - debug(module, msg) { - this.log(module, msg, "debug"); + debug(module, ...msg) { + this.log(module, "debug", ...msg); } - exception(module, exception, msg) { + exception(module, exception, ...msg) { let finalMessage = exception; if (msg) { finalMessage = `${msg}: ${exception}`; } - this.log(module, finalMessage, "error"); + this.log(module, "error", finalMessage); } } exports.log = new Logger(); diff --git a/src/util.ts b/src/util.ts index 1098bec4e..6bf9501b5 100644 --- a/src/util.ts +++ b/src/util.ts @@ -193,7 +193,7 @@ export function ucfirst(str: string) { * @returns {void} */ export function debug(msg: unknown) { - log.log("", msg, "debug"); + log.log("", "debug", msg); } class Logger { @@ -238,11 +238,11 @@ class Logger { /** * Write a message to the log * @param module The module the log comes from - * @param msg Message to write * @param level Log level. One of INFO, WARN, ERROR, DEBUG or can be customized. + * @param msg Message to write * @returns {void} */ - log(module: string, msg: any, level: string) { + log(module: string, level: string, ...msg: unknown[]) { if (level === "DEBUG" && !isDev) { return; } @@ -267,7 +267,6 @@ class Logger { let timePart: string; let modulePart: string; let levelPart: string; - let msgPart: string; if (isNode) { // Add console colors @@ -281,54 +280,33 @@ class Logger { } modulePart = "[" + moduleColor + module + CONSOLE_STYLE_Reset + "]"; - levelPart = levelColor + `${level}:` + CONSOLE_STYLE_Reset; - switch (level) { - case "ERROR": - if (typeof msg === "string") { - msgPart = CONSOLE_STYLE_FgRed + msg + CONSOLE_STYLE_Reset; - } else { - msgPart = msg; - } - break; - case "DEBUG": - if (typeof msg === "string") { - msgPart = CONSOLE_STYLE_FgGray + msg + CONSOLE_STYLE_Reset; - } else { - msgPart = msg; - } - break; - default: - msgPart = msg; - break; - } } else { // No console colors timePart = now; modulePart = `[${module}]`; levelPart = `${level}:`; - msgPart = msg; } // Write to console switch (level) { case "ERROR": - console.error(timePart, modulePart, levelPart, msgPart); + console.error(timePart, modulePart, levelPart, ...msg); break; case "WARN": - console.warn(timePart, modulePart, levelPart, msgPart); + console.warn(timePart, modulePart, levelPart, ...msg); break; case "INFO": - console.info(timePart, modulePart, levelPart, msgPart); + console.info(timePart, modulePart, levelPart, ...msg); break; case "DEBUG": if (isDev) { - console.debug(timePart, modulePart, levelPart, msgPart); + console.debug(timePart, modulePart, levelPart, ...msg); } break; default: - console.log(timePart, modulePart, levelPart, msgPart); + console.log(timePart, modulePart, levelPart, ...msg); break; } } @@ -339,8 +317,8 @@ class Logger { * @param msg Message to write * @returns {void} */ - info(module: string, msg: unknown) { - this.log(module, msg, "info"); + info(module: string, ...msg: unknown[]) { + this.log(module, "info", ...msg); } /** @@ -349,8 +327,8 @@ class Logger { * @param msg Message to write * @returns {void} */ - warn(module: string, msg: unknown) { - this.log(module, msg, "warn"); + warn(module: string, ...msg: unknown[]) { + this.log(module, "warn", ...msg); } /** @@ -359,8 +337,8 @@ class Logger { * @param msg Message to write * @returns {void} */ - error(module: string, msg: unknown) { - this.log(module, msg, "error"); + error(module: string, ...msg: unknown[]) { + this.log(module, "error", ...msg); } /** @@ -369,8 +347,8 @@ class Logger { * @param msg Message to write * @returns {void} */ - debug(module: string, msg: unknown) { - this.log(module, msg, "debug"); + debug(module: string, ...msg: unknown[]) { + this.log(module, "debug", ...msg); } /** @@ -380,14 +358,8 @@ class Logger { * @param msg The message to write * @returns {void} */ - exception(module: string, exception: unknown, msg: unknown) { - let finalMessage = exception; - - if (msg) { - finalMessage = `${msg}: ${exception}`; - } - - this.log(module, finalMessage, "error"); + exception(module: string, exception: unknown, ...msg: unknown[]) { + this.log(module, "error", ...msg, exception); } } From 5207ba6d97a565edba35a6daa827815e28184825 Mon Sep 17 00:00:00 2001 From: Dorian Grasset Date: Mon, 3 Nov 2025 21:21:36 +0100 Subject: [PATCH 26/35] fix: child monitors disappear after group deletion (#6287) Co-authored-by: Louis Lam --- server/server.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/server/server.js b/server/server.js index 86a6d2b20..207710a98 100644 --- a/server/server.js +++ b/server/server.js @@ -1060,6 +1060,27 @@ let needSetup = false; const startTime = Date.now(); + // Check if this is a group monitor and unlink children before deletion + const monitor = await R.findOne("monitor", " id = ? AND user_id = ? ", [ + monitorID, + socket.userID, + ]); + + if (monitor && monitor.type === "group") { + // Get all children before unlinking them + const children = await Monitor.getChildren(monitorID); + + // Unlink all children from the group + await Monitor.unlinkAllChildren(monitorID); + + // Notify frontend to update each child monitor's parent to null + if (children && children.length > 0) { + for (const child of children) { + await server.sendUpdateMonitorIntoList(socket, child.id); + } + } + } + await R.exec("DELETE FROM monitor WHERE id = ? AND user_id = ? ", [ monitorID, socket.userID, From 08d77e6fce6185cab239d74379a7edf231843ac8 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 4 Nov 2025 06:55:00 +0800 Subject: [PATCH 27/35] Fix build issue on Node.js 25 (#6295) --- .github/workflows/auto-test.yml | 6 +- config/vite.config.js | 2 - package-lock.json | 1356 +------------------------------ package.json | 1 - 4 files changed, 8 insertions(+), 1357 deletions(-) diff --git a/.github/workflows/auto-test.yml b/.github/workflows/auto-test.yml index 14b80f234..46fe5d23f 100644 --- a/.github/workflows/auto-test.yml +++ b/.github/workflows/auto-test.yml @@ -22,8 +22,12 @@ jobs: strategy: matrix: os: [macos-latest, ubuntu-22.04, windows-latest, ARM64] - node: [ 20, 24 ] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + node: [ 20, 24 ] + # Also test non-LTS, but only on Ubuntu. + include: + - os: ubuntu-22.04 + node: 25 steps: - run: git config --global core.autocrlf false # Mainly for Windows diff --git a/config/vite.config.js b/config/vite.config.js index 7f2dfb6ff..9c8b24f56 100644 --- a/config/vite.config.js +++ b/config/vite.config.js @@ -2,7 +2,6 @@ import vue from "@vitejs/plugin-vue"; import { defineConfig } from "vite"; import visualizer from "rollup-plugin-visualizer"; import viteCompression from "vite-plugin-compression"; -import VueDevTools from "vite-plugin-vue-devtools"; const postCssScss = require("postcss-scss"); const postcssRTLCSS = require("postcss-rtlcss"); @@ -31,7 +30,6 @@ export default defineConfig({ algorithm: "brotliCompress", filter: viteCompressionFilter, }), - VueDevTools(), ], css: { postcss: { diff --git a/package-lock.json b/package-lock.json index b063d8877..420b7a923 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "2.0.1", + "version": "2.0.2", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.8.22", @@ -138,7 +138,6 @@ "v-pagination-3": "~0.1.7", "vite": "~5.4.15", "vite-plugin-compression": "^0.5.1", - "vite-plugin-vue-devtools": "^7.0.15", "vue": "~3.4.2", "vue-chartjs": "~5.2.0", "vue-confirm-dialog": "~1.0.2", @@ -155,7 +154,7 @@ "whatwg-url": "~12.0.1" }, "engines": { - "node": "18 || >= 20.4.0" + "node": ">= 20.4.0" } }, "node_modules/@actions/github": { @@ -185,16 +184,6 @@ "undici": "^5.25.4" } }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", @@ -1220,274 +1209,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", - "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.3" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", - "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", - "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -1508,30 +1229,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/parser": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", @@ -1548,121 +1245,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz", - "integrity": "sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-decorators": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz", - "integrity": "sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", - "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", @@ -1673,40 +1255,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", @@ -2632,17 +2180,6 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -3105,13 +2642,6 @@ "node": ">=16" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -3246,42 +2776,6 @@ "@redis/client": "^1.0.0" } }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.52.5", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", @@ -3641,13 +3135,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -3684,19 +3171,6 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@smithy/abort-controller": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.3.tgz", @@ -4949,127 +4423,6 @@ "vue": "^3.2.25" } }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz", - "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz", - "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.2", - "@vue/babel-helper-vue-transform-on": "1.5.0", - "@vue/babel-plugin-resolve-type": "1.5.0", - "@vue/shared": "^3.5.18" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } - } - }, - "node_modules/@vue/babel-plugin-jsx/node_modules/@vue/shared": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", - "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz", - "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/parser": "^7.28.0", - "@vue/compiler-sfc": "^3.5.18" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz", - "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/shared": "3.5.22", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", - "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.22", - "@vue/shared": "3.5.22" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", - "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/compiler-core": "3.5.22", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-ssr": "3.5.22", - "@vue/shared": "3.5.22", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.19", - "postcss": "^8.5.6", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", - "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.22", - "@vue/shared": "3.5.22" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", - "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", - "dev": true, - "license": "MIT" - }, "node_modules/@vue/compiler-core": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", @@ -5131,69 +4484,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@vue/devtools-core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.7.tgz", - "integrity": "sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.7", - "@vue/devtools-shared": "^7.7.7", - "mitt": "^3.0.1", - "nanoid": "^5.1.0", - "pathe": "^2.0.3", - "vite-hot-client": "^2.0.4" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@vue/devtools-core/node_modules/nanoid": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", - "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", - "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.7.7", - "birpc": "^2.3.0", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.2" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", - "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, "node_modules/@vue/reactivity": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", @@ -6105,16 +5395,6 @@ "node": "^4.5.0 || >= 5.9" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.8.18", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.18.tgz", - "integrity": "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, "node_modules/basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -6181,16 +5461,6 @@ "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", "license": "MIT" }, - "node_modules/birpc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz", - "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -6317,40 +5587,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -6661,27 +5897,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7182,13 +6397,6 @@ "node": ">= 0.6" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, "node_modules/cookie": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", @@ -7204,22 +6412,6 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT" }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/core-js": { "version": "3.26.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", @@ -8171,13 +7363,6 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/electron-to-chromium": { - "version": "1.5.237", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.237.tgz", - "integrity": "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==", - "dev": true, - "license": "ISC" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -8391,16 +7576,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser-es": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", - "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/es-abstract": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", @@ -8906,89 +8081,6 @@ "bare-events": "^2.7.0" } }, - "node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", @@ -9247,22 +8339,6 @@ "node": ">=0.4.0" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -9860,16 +8936,6 @@ "node": ">= 4" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -10309,13 +9375,6 @@ "readable-stream": "^3.6.0" } }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, - "license": "MIT" - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -10468,16 +9527,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -11147,19 +10196,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", @@ -11212,19 +10248,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -11383,19 +10406,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonata": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.1.0.tgz", @@ -11607,13 +10617,6 @@ "dev": true, "license": "MIT" }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -12489,16 +11492,6 @@ } } }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -12774,13 +11767,6 @@ "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==", "license": "MIT" }, - "node_modules/node-releases": { - "version": "2.0.25", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.25.tgz", - "integrity": "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==", - "dev": true, - "license": "MIT" - }, "node_modules/node-ssh": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.1.0.tgz", @@ -12899,36 +11885,6 @@ "node": "> v0.6.0" } }, - "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -13239,19 +12195,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -13402,20 +12345,6 @@ "node": ">=8" } }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, - "license": "MIT" - }, "node_modules/pg": { "version": "8.11.6", "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.6.tgz", @@ -13796,22 +12725,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", @@ -15379,21 +14292,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15705,16 +14603,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split-ca": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", @@ -16031,19 +14919,6 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", @@ -16202,19 +15077,6 @@ "node": ">=8" } }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -16646,16 +15508,6 @@ "node": ">=0.6" } }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -16934,19 +15786,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -16992,37 +15831,6 @@ "node": ">= 0.8" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -17179,19 +15987,6 @@ } } }, - "node_modules/vite-hot-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz", - "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" - } - }, "node_modules/vite-plugin-compression": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", @@ -17207,138 +16002,6 @@ "vite": ">=2.0.0" } }, - "node_modules/vite-plugin-inspect": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz", - "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.10", - "@rollup/pluginutils": "^5.1.3", - "debug": "^4.3.7", - "error-stack-parser-es": "^0.1.5", - "fs-extra": "^11.2.0", - "open": "^10.1.0", - "perfect-debounce": "^1.0.0", - "picocolors": "^1.1.1", - "sirv": "^3.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - } - } - }, - "node_modules/vite-plugin-inspect/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-inspect/node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/vite-plugin-inspect/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-inspect/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/vite-plugin-vue-devtools": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.7.tgz", - "integrity": "sha512-d0fIh3wRcgSlr4Vz7bAk4va1MkdqhQgj9ANE/rBhsAjOnRfTLs2ocjFMvSUOsv6SRRXU9G+VM7yMgqDb6yI4iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-core": "^7.7.7", - "@vue/devtools-kit": "^7.7.7", - "@vue/devtools-shared": "^7.7.7", - "execa": "^9.5.2", - "sirv": "^3.0.1", - "vite-plugin-inspect": "0.8.9", - "vite-plugin-vue-inspector": "^5.3.1" - }, - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" - } - }, - "node_modules/vite-plugin-vue-inspector": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.2.tgz", - "integrity": "sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/plugin-proposal-decorators": "^7.23.0", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.22.15", - "@vue/babel-plugin-jsx": "^1.1.5", - "@vue/compiler-dom": "^3.3.4", - "kolorist": "^1.8.0", - "magic-string": "^0.30.4" - }, - "peerDependencies": { - "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" - } - }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -18045,19 +16708,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zip-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", diff --git a/package.json b/package.json index dda62ca39..d9614df7f 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,6 @@ "v-pagination-3": "~0.1.7", "vite": "~5.4.15", "vite-plugin-compression": "^0.5.1", - "vite-plugin-vue-devtools": "^7.0.15", "vue": "~3.4.2", "vue-chartjs": "~5.2.0", "vue-confirm-dialog": "~1.0.2", From 6dfa574e36322f2924e6e65d8f8c5e87057e459a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Osman=20Karag=C3=B6z?= Date: Tue, 4 Nov 2025 20:20:39 +0300 Subject: [PATCH 28/35] Fix: monitor(tailscale): Check exit code before failing on stderr output (#6309) --- server/monitor-types/tailscale-ping.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/monitor-types/tailscale-ping.js b/server/monitor-types/tailscale-ping.js index 8537651cd..f2a927b91 100644 --- a/server/monitor-types/tailscale-ping.js +++ b/server/monitor-types/tailscale-ping.js @@ -31,7 +31,7 @@ class TailscalePing extends MonitorType { timeout: timeout, encoding: "utf8", }); - if (res.stderr && res.stderr.toString()) { + if (res.stderr && res.stderr.toString() && res.code !== 0) { throw new Error(`Error in output: ${res.stderr.toString()}`); } if (res.stdout && res.stdout.toString()) { From 36ac5dd56dfb6f71bb0741a42f9fc44bf7712ff3 Mon Sep 17 00:00:00 2001 From: Max <48136746+TheBestPartOfMe@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:13:46 +0100 Subject: [PATCH 29/35] feat: Add Drag & drop for groups (#6256) Co-authored-by: Frank Elsinga --- src/components/MonitorListItem.vue | 128 ++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/src/components/MonitorListItem.vue b/src/components/MonitorListItem.vue index ce38086b9..4946a625d 100644 --- a/src/components/MonitorListItem.vue +++ b/src/components/MonitorListItem.vue @@ -1,6 +1,15 @@