From 543113292bca5ed8730e3e4306ff4d880f5f4fe8 Mon Sep 17 00:00:00 2001 From: ajnart Date: Mon, 17 Apr 2023 14:48:04 +0900 Subject: [PATCH 01/13] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Calendar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widgets/calendar/CalendarDay.tsx | 4 +- src/widgets/calendar/CalendarTile.tsx | 77 ++++++++++++++------------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/widgets/calendar/CalendarDay.tsx b/src/widgets/calendar/CalendarDay.tsx index 86887e03a..7124e40e7 100644 --- a/src/widgets/calendar/CalendarDay.tsx +++ b/src/widgets/calendar/CalendarDay.tsx @@ -1,4 +1,4 @@ -import { Box, Indicator, IndicatorProps, Popover } from '@mantine/core'; +import { ActionIcon, Box, Button, Indicator, IndicatorProps, Popover } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { isToday } from '../../tools/shared/time/date.tool'; import { MediaList } from './MediaList'; @@ -70,7 +70,7 @@ const DayIndicator = ({ color, medias, children, position }: DayIndicatorProps) if (medias.length === 0) return children; return ( - + {children} ); diff --git a/src/widgets/calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx index 1d0008f04..e1cac7830 100644 --- a/src/widgets/calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -9,6 +9,7 @@ import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; import { CalendarDay } from './CalendarDay'; import { MediasType } from './type'; +import { useColorTheme } from '../../tools/color'; const definition = defineWidget({ id: 'calendar', @@ -50,6 +51,7 @@ interface CalendarTileProps { function CalendarTile({ widget }: CalendarTileProps) { const { name: configName } = useConfigContext(); const [month, setMonth] = useState(new Date()); + const { secondaryColor } = useColorTheme(); const { data: medias } = useQuery({ queryKey: ['calendar/medias', { month: month.getMonth(), year: month.getFullYear() }], @@ -65,42 +67,45 @@ function CalendarTile({ widget }: CalendarTileProps) { }); return ( - - ( - - )} - /> - + ( + + )} + /> ); } From 252651c1fbc7cd73eb44821758e16fb24d5f0730 Mon Sep 17 00:00:00 2001 From: ajnart Date: Mon, 17 Apr 2023 15:07:18 +0900 Subject: [PATCH 02/13] =?UTF-8?q?=F0=9F=90=9B=20Fix=20edit=20modal=20zInde?= =?UTF-8?q?x=20and=20imports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx | 2 +- src/widgets/calendar/CalendarDay.tsx | 2 +- src/widgets/calendar/CalendarTile.tsx | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx index 491ae346f..5d1e49023 100644 --- a/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx +++ b/src/components/Dashboard/Tiles/Widgets/WidgetsMenu.tsx @@ -70,7 +70,7 @@ export const WidgetsMenu = ({ integration, widget }: WidgetsMenuProps) => { // Cast as the right type for the correct widget widgetOptions: widgetDefinitionObject.options as any, }, - zIndex: 5, + zIndex: 250, }); }; diff --git a/src/widgets/calendar/CalendarDay.tsx b/src/widgets/calendar/CalendarDay.tsx index 7124e40e7..51616521f 100644 --- a/src/widgets/calendar/CalendarDay.tsx +++ b/src/widgets/calendar/CalendarDay.tsx @@ -1,4 +1,4 @@ -import { ActionIcon, Box, Button, Indicator, IndicatorProps, Popover } from '@mantine/core'; +import { Box, Indicator, IndicatorProps, Popover } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { isToday } from '../../tools/shared/time/date.tool'; import { MediaList } from './MediaList'; diff --git a/src/widgets/calendar/CalendarTile.tsx b/src/widgets/calendar/CalendarTile.tsx index e1cac7830..93d207378 100644 --- a/src/widgets/calendar/CalendarTile.tsx +++ b/src/widgets/calendar/CalendarTile.tsx @@ -9,7 +9,6 @@ import { defineWidget } from '../helper'; import { IWidget } from '../widgets'; import { CalendarDay } from './CalendarDay'; import { MediasType } from './type'; -import { useColorTheme } from '../../tools/color'; const definition = defineWidget({ id: 'calendar', @@ -51,7 +50,6 @@ interface CalendarTileProps { function CalendarTile({ widget }: CalendarTileProps) { const { name: configName } = useConfigContext(); const [month, setMonth] = useState(new Date()); - const { secondaryColor } = useColorTheme(); const { data: medias } = useQuery({ queryKey: ['calendar/medias', { month: month.getMonth(), year: month.getFullYear() }], From a18c8df66414d13e5a57ba36ecba56282ef1c5e2 Mon Sep 17 00:00:00 2001 From: ajnart Date: Mon, 17 Apr 2023 15:14:26 +0900 Subject: [PATCH 03/13] =?UTF-8?q?=F0=9F=90=9B=20Fix=20media=20request=20no?= =?UTF-8?q?t=20using=20external=20address?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/modules/media-requests/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/api/modules/media-requests/index.ts b/src/pages/api/modules/media-requests/index.ts index bbe9f0ef2..567b2f422 100644 --- a/src/pages/api/modules/media-requests/index.ts +++ b/src/pages/api/modules/media-requests/index.ts @@ -47,7 +47,7 @@ const Get = async (request: NextApiRequest, response: NextApiResponse) => { status: item.status, backdropPath: `https://image.tmdb.org/t/p/original/${genericItem.backdropPath}`, posterPath: `https://image.tmdb.org/t/p/w600_and_h900_bestv2/${genericItem.posterPath}`, - href: `${app.url}/movie/${item.media.tmdbId}`, + href: `${app.behaviour.externalUrl}/movie/${item.media.tmdbId}`, }; }) ); From 42b7254a9405f5317d62e24895d99e80f71800fb Mon Sep 17 00:00:00 2001 From: ajnart Date: Mon, 17 Apr 2023 17:00:47 +0900 Subject: [PATCH 04/13] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20typo=20in=20me?= =?UTF-8?q?dia=20request=20widget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/locales/da/modules/media-requests-list.json | 2 +- public/locales/de/modules/media-requests-list.json | 2 +- public/locales/en/modules/media-requests-list.json | 2 +- public/locales/es/modules/media-requests-list.json | 2 +- public/locales/he/modules/media-requests-list.json | 2 +- public/locales/it/modules/media-requests-list.json | 2 +- public/locales/no/modules/media-requests-list.json | 2 +- public/locales/sk/modules/media-requests-list.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/public/locales/da/modules/media-requests-list.json b/public/locales/da/modules/media-requests-list.json index bb2e0ddff..22baeb40e 100644 --- a/public/locales/da/modules/media-requests-list.json +++ b/public/locales/da/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Ingen anmodninger fundet. Kontroller, at du har konfigureret dine apps korrekt.", - "pending": "Der er {countPendingApproval} anmodninger, der venter på godkendelse.", + "pending": "Der er {{countPendingApproval}} anmodninger, der venter på godkendelse.", "nonePending": "Der er i øjeblikket ingen godkendelser, der er under behandling. Du er i mål!", "state": { "approved": "Godkendt", diff --git a/public/locales/de/modules/media-requests-list.json b/public/locales/de/modules/media-requests-list.json index bab554413..c87d10101 100644 --- a/public/locales/de/modules/media-requests-list.json +++ b/public/locales/de/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Keine Anfragen gefunden. Bitte stellen Sie sicher, dass Sie Ihre Anwendungen richtig konfiguriert haben.", - "pending": "Es gibt {countPendingApproval} Anträge, die auf eine Genehmigung warten.", + "pending": "Es gibt {{countPendingApproval}} Anträge, die auf eine Genehmigung warten.", "nonePending": "Es sind derzeit keine Genehmigungen ausstehend. Sie sind startklar!", "state": { "approved": "Genehmigt", diff --git a/public/locales/en/modules/media-requests-list.json b/public/locales/en/modules/media-requests-list.json index bf56d4e06..34f2c4da1 100644 --- a/public/locales/en/modules/media-requests-list.json +++ b/public/locales/en/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "No requests found. Please ensure that you've configured your apps correctly.", - "pending": "There are {countPendingApproval} requests waiting for an approval.", + "pending": "There are {{countPendingApproval}} requests waiting for an approval.", "nonePending": "There are currently no pending approvals. You're good to go!", "state": { "approved": "Approved", diff --git a/public/locales/es/modules/media-requests-list.json b/public/locales/es/modules/media-requests-list.json index 5f734dce5..7992a49eb 100644 --- a/public/locales/es/modules/media-requests-list.json +++ b/public/locales/es/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Peticiones no encontradas. Por favor, asegúrate de tener configuradas tus apps correctamente.", - "pending": "Hay {countPendingApproval} peticiones esperando a ser aprobadas.", + "pending": "Hay {{countPendingApproval}} peticiones esperando a ser aprobadas.", "nonePending": "Actualmente no hay aprobaciones pendientes. ¡Listo!", "state": { "approved": "Aprobado", diff --git a/public/locales/he/modules/media-requests-list.json b/public/locales/he/modules/media-requests-list.json index e36207b78..bfe4cf29c 100644 --- a/public/locales/he/modules/media-requests-list.json +++ b/public/locales/he/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "לא נמצאו בקשות. אנא ודא שהגדרת את האפליקציות שלך כנדרש.", - "pending": "יש {countPendingApproval} בקשות הממתינות לאישור.", + "pending": "יש {{countPendingApproval}} בקשות הממתינות לאישור.", "nonePending": "אין כרגע אישורים ממתינים. ניתן להמשיך!", "state": { "approved": "אושר", diff --git a/public/locales/it/modules/media-requests-list.json b/public/locales/it/modules/media-requests-list.json index da452e2d8..df0adba1e 100644 --- a/public/locales/it/modules/media-requests-list.json +++ b/public/locales/it/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Nessuna richiesta trovata. Assicurati di aver configurato correttamente le tue app.", - "pending": "Ci sono {countPendingApproval} richieste in attesa di approvazione.", + "pending": "Ci sono {{countPendingApproval}} richieste in attesa di approvazione.", "nonePending": "Al momento non ci sono approvazioni in attesa. È tutto pronto!", "state": { "approved": "Approvato", diff --git a/public/locales/no/modules/media-requests-list.json b/public/locales/no/modules/media-requests-list.json index b3314c954..9f16a0f25 100644 --- a/public/locales/no/modules/media-requests-list.json +++ b/public/locales/no/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Ingen forespørsler funnet. Vennligst skjekk at du har konfigurert appene dine riktig.", - "pending": "Det er {countPendingApproval} forespørsler som venter på en godkjenning.", + "pending": "Det er {{countPendingApproval}} forespørsler som venter på en godkjenning.", "nonePending": "Det er for tiden ingen ventende godkjenninger. Alt er klart!", "state": { "approved": "Godkjent", diff --git a/public/locales/sk/modules/media-requests-list.json b/public/locales/sk/modules/media-requests-list.json index b1e3f3ff8..40139b293 100644 --- a/public/locales/sk/modules/media-requests-list.json +++ b/public/locales/sk/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Nenašli sa žiadne požiadavky. Skontrolujte, či ste správne nakonfigurovali svoje aplikácie.", - "pending": "Na schválenie čaká {countPendingApproval} žiadostí.", + "pending": "Na schválenie čaká {{countPendingApproval}} žiadostí.", "nonePending": "V súčasnosti nie sú k dispozícii žiadne schválenia. Môžete začať!", "state": { "approved": "Schválené", From 2ed085831ba147cbc868807c17c3c6ce2daa1002 Mon Sep 17 00:00:00 2001 From: Larvey <39219859+LarveyOfficial@users.noreply.github.com> Date: Fri, 21 Apr 2023 04:15:27 -0400 Subject: [PATCH 05/13] =?UTF-8?q?=E2=9C=A8Allow=20Video=20Stream=20widget?= =?UTF-8?q?=20to=20play=20any=20video=20file=20type.=20(#835)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove type limitation for video player This allows the video player to play any video source, including m3u8 live streams, mp4, gifs, etc. * Fixed Linting. --- src/widgets/video/VideoFeed.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/widgets/video/VideoFeed.tsx b/src/widgets/video/VideoFeed.tsx index ab4e4744b..5486243a1 100644 --- a/src/widgets/video/VideoFeed.tsx +++ b/src/widgets/video/VideoFeed.tsx @@ -15,7 +15,6 @@ const VideoFeed = ({ source, controls, autoPlay, muted }: VideoFeedProps) => { const [player, setPlayer] = useState>(); const { classes, cx } = useStyles(); - useEffect(() => { // make sure Video.js player is only initialized once if (player) { @@ -50,7 +49,7 @@ const VideoFeed = ({ source, controls, autoPlay, muted }: VideoFeedProps) => { {/* eslint-disable-next-line jsx-a11y/media-has-caption */} ); From f4d936e3e5087ca41dc24bc5733d0b9836d8fb29 Mon Sep 17 00:00:00 2001 From: Thomas Camlong <49837342+ajnart@users.noreply.github.com> Date: Fri, 21 Apr 2023 17:15:47 +0900 Subject: [PATCH 06/13] New Crowdin updates (#829) * New translations media-requests-list.json (Spanish) * New translations media-requests-list.json (Danish) * New translations media-requests-list.json (German) * New translations media-requests-list.json (Hebrew) * New translations media-requests-list.json (Italian) * New translations media-requests-list.json (Norwegian) * New translations media-requests-list.json (Slovak) * New translations media-requests-list.json (English) * New translations media-requests-list.json (Spanish) * New translations media-requests-list.json (German) * New translations media-requests-list.json (English) * New translations rss.json (German) * New translations media-requests-list.json (Hebrew) * New translations media-requests-list.json (Italian) * New translations media-requests-list.json (Chinese Simplified) * New translations media-requests-list.json (Chinese Simplified) * New translations media-requests-stats.json (Chinese Simplified) * New translations search.json (Chinese Simplified) * New translations add-app.json (Chinese Simplified) * New translations error-boundary.json (Chinese Simplified) * New translations media-requests-list.json (Danish) * New translations media-requests-list.json (Dutch) * New translations media-requests-stats.json (Dutch) * New translations common.json (Dutch) * New translations dashdot.json (Dutch) * New translations ping.json (Dutch) * New translations page-appearance.json (Dutch) * New translations config-changer.json (Dutch) * New translations search-engine.json (Dutch) * New translations add-app.json (Dutch) * New translations about.json (Dutch) * New translations change-position.json (Dutch) * New translations torrents-status.json (Dutch) * New translations general.json (Dutch) * New translations gridstack.json (Dutch) * New translations video-stream.json (Dutch) * New translations rss.json (Dutch) * New translations rss.json (English) * New translations iframe.json (Dutch) * New translations error-boundary.json (Dutch) * New translations dashdot.json (Chinese Simplified) * New translations about.json (Chinese Simplified) * New translations rss.json (Chinese Simplified) * New translations common.json (Chinese Simplified) * New translations rss.json (Chinese Simplified) * New translations error-boundary.json (Chinese Simplified) --- .../de/modules/media-requests-list.json | 2 +- public/locales/de/modules/rss.json | 10 +++++----- .../en/modules/media-requests-list.json | 2 +- public/locales/en/modules/rss.json | 4 ++-- public/locales/nl/common.json | 6 +++--- public/locales/nl/layout/modals/about.json | 14 +++++++------- public/locales/nl/layout/modals/add-app.json | 10 +++++----- .../nl/layout/modals/change-position.json | 2 ++ public/locales/nl/modules/dashdot.json | 4 ++-- public/locales/nl/modules/iframe.json | 8 ++++---- .../nl/modules/media-requests-list.json | 18 +++++++++--------- .../nl/modules/media-requests-stats.json | 12 ++++++------ public/locales/nl/modules/ping.json | 2 +- public/locales/nl/modules/rss.json | 10 +++++----- public/locales/nl/modules/torrents-status.json | 2 +- public/locales/nl/modules/video-stream.json | 12 ++++++------ .../nl/settings/customization/general.json | 12 ++++++------ .../nl/settings/customization/gridstack.json | 2 +- .../customization/page-appearance.json | 8 ++++---- .../nl/settings/general/config-changer.json | 6 +++--- .../nl/settings/general/search-engine.json | 2 +- public/locales/nl/widgets/error-boundary.json | 10 +++++----- .../no/modules/media-requests-list.json | 2 +- .../sk/modules/media-requests-list.json | 2 +- public/locales/zh/common.json | 2 +- public/locales/zh/layout/modals/about.json | 8 ++++---- public/locales/zh/layout/modals/add-app.json | 4 ++-- public/locales/zh/modules/dashdot.json | 14 +++++++------- .../zh/modules/media-requests-list.json | 18 +++++++++--------- .../zh/modules/media-requests-stats.json | 12 ++++++------ public/locales/zh/modules/rss.json | 10 +++++----- public/locales/zh/modules/search.json | 10 +++++----- public/locales/zh/widgets/error-boundary.json | 10 +++++----- 33 files changed, 126 insertions(+), 124 deletions(-) diff --git a/public/locales/de/modules/media-requests-list.json b/public/locales/de/modules/media-requests-list.json index c87d10101..b4fffec49 100644 --- a/public/locales/de/modules/media-requests-list.json +++ b/public/locales/de/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Keine Anfragen gefunden. Bitte stellen Sie sicher, dass Sie Ihre Anwendungen richtig konfiguriert haben.", - "pending": "Es gibt {{countPendingApproval}} Anträge, die auf eine Genehmigung warten.", + "pending": "{{countPendingApproval}} Anfragen warten auf eine Genehmigung.", "nonePending": "Es sind derzeit keine Genehmigungen ausstehend. Sie sind startklar!", "state": { "approved": "Genehmigt", diff --git a/public/locales/de/modules/rss.json b/public/locales/de/modules/rss.json index 488ed34ff..7b442343f 100644 --- a/public/locales/de/modules/rss.json +++ b/public/locales/de/modules/rss.json @@ -5,18 +5,18 @@ "settings": { "title": "Einstellungen für das RSS-Widget", "rssFeedUrl": { - "label": "", - "description": "" + "label": "RSS Feed URLs", + "description": "Die URLs der RSS Feeds, die angezeigt werden sollen." }, "refreshInterval": { - "label": "" + "label": "Aktualisierungsintervall (in Minuten)" } }, "card": { "errors": { "general": { - "title": "", - "text": "" + "title": "RSS Feed konnte nicht abgerufen werden", + "text": "Es ist ein Fehler beim Erreichen des RSS Feeds passiert. Stelle sicher, dass die eingetragene URL des RSS Feeds richtig ist. URLs sollten den offiziellen Spezifikationen entsprechen. Nach einem Update des Feeds muss möglicherweise die Dashboard-Seite aktualisiert werden." } } } diff --git a/public/locales/en/modules/media-requests-list.json b/public/locales/en/modules/media-requests-list.json index 34f2c4da1..56babff77 100644 --- a/public/locales/en/modules/media-requests-list.json +++ b/public/locales/en/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "No requests found. Please ensure that you've configured your apps correctly.", - "pending": "There are {{countPendingApproval}} requests waiting for an approval.", + "pending": "There are {{countPendingApproval}} requests waiting for approval.", "nonePending": "There are currently no pending approvals. You're good to go!", "state": { "approved": "Approved", diff --git a/public/locales/en/modules/rss.json b/public/locales/en/modules/rss.json index 9566f1dc4..91a096a4a 100644 --- a/public/locales/en/modules/rss.json +++ b/public/locales/en/modules/rss.json @@ -5,8 +5,8 @@ "settings": { "title": "Settings for RSS widget", "rssFeedUrl": { - "label": "RSS feeds urls", - "description": "The urls of the RSS feeds you want to display from." + "label": "RSS feed URLs", + "description": "The URLs of the RSS feeds you want to display from." }, "refreshInterval": { "label": "Refresh interval (in minutes)" diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index 60b5b1cec..9ee089ef7 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -9,14 +9,14 @@ "version": "Versie", "changePosition": "Positie wijzigen", "remove": "Verwijder", - "removeConfirm": "", - "createItem": "", + "removeConfirm": "Weet u zeker dat u {{item}} wilt verwijderen?", + "createItem": "+ creëer {{item}}", "sections": { "settings": "Instellingen", "dangerZone": "Gevarenzone" }, "secrets": { - "apiKey": "", + "apiKey": "API sleutel", "username": "Gebruikersnaam", "password": "Wachtwoord" }, diff --git a/public/locales/nl/layout/modals/about.json b/public/locales/nl/layout/modals/about.json index f7fb65dff..57705182e 100644 --- a/public/locales/nl/layout/modals/about.json +++ b/public/locales/nl/layout/modals/about.json @@ -2,17 +2,17 @@ "description": "Homarr is een sterk, modern dashboard dat al je apps en diensten binnen handbereik brengt. Met Homarr heb je toegang tot en controle over alles op één handige locatie. Homarr integreert naadloos met de apps die je hebt toegevoegd en geeft je waardevolle informatie en volledige controle. Installatie is een fluitje van een cent en Homarr ondersteunt een breed scala aan implementatiemethoden.", "contact": "Problemen of vragen? Neem contact met ons op!", "addToDashboard": "Aan dashboard toevoegen", - "tip": "", - "key": "", - "action": "", - "keybinds": "", + "tip": "Mod verwijst naar uw modifier toets, dat zijn de Ctrl en Commando/Super/Windows toets", + "key": "Sneltoets", + "action": "Actie", + "keybinds": "Sneltoetsen", "metrics": { - "configurationSchemaVersion": "Versie configuratieschema", + "configurationSchemaVersion": "Configuratieschema versie", "configurationsCount": "Beschikbare configuraties", "version": "Versie", - "nodeEnvironment": "Knooppuntomgeving", + "nodeEnvironment": "Node environment", "i18n": "I18n vertaling namespaces geladen", "locales": "I18n talen geconfigureerd", - "experimental_disableEditMode": "" + "experimental_disableEditMode": "EXPERIMENTEEL: Bewerkingsmodus uitschakelen" } } \ No newline at end of file diff --git a/public/locales/nl/layout/modals/add-app.json b/public/locales/nl/layout/modals/add-app.json index 0fec507b5..df325254b 100644 --- a/public/locales/nl/layout/modals/add-app.json +++ b/public/locales/nl/layout/modals/add-app.json @@ -1,7 +1,7 @@ { "tabs": { "general": "Algemeen", - "behaviour": "", + "behaviour": "Gedrag", "network": "Netwerk", "appearance": "Opmaak", "integration": "Integratie" @@ -41,12 +41,12 @@ "label": "App icoon", "description": "", "autocomplete": { - "title": "", - "text": "" + "title": "Geen resultaten gevonden", + "text": "Probeer een specifiekere zoekterm te gebruiken. Als u het gewenste pictogram niet kunt vinden, plak dan de bovenstaande URL van de afbeelding voor een aangepast pictogram" }, "noItems": { - "title": "", - "text": "" + "title": "Externe pictogrammen laden", + "text": "Dit kan enkele seconden duren" } } }, diff --git a/public/locales/nl/layout/modals/change-position.json b/public/locales/nl/layout/modals/change-position.json index 3ae44f1ba..bfd2993ea 100644 --- a/public/locales/nl/layout/modals/change-position.json +++ b/public/locales/nl/layout/modals/change-position.json @@ -1,6 +1,8 @@ { + "xPosition": "X-as positie", "width": "Breedte", "height": "Hoogte", + "yPosition": "Y-as positie", "zeroOrHigher": "0 of hoger", "betweenXandY": "Tussen {{min}} en {{max}}" } \ No newline at end of file diff --git a/public/locales/nl/modules/dashdot.json b/public/locales/nl/modules/dashdot.json index b0e8436e3..c4efb66b5 100644 --- a/public/locales/nl/modules/dashdot.json +++ b/public/locales/nl/modules/dashdot.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Dash.", - "description": "", + "description": "Toont de grafieken van een externe Dash. instantie binnen Homarr.", "settings": { "title": "Instellingen voor Dash. widget", "url": { @@ -85,7 +85,7 @@ "noInformation": "Kan geen informatie verkrijgen van dash. - gebruikt u de laatste versie?", "protocolDowngrade": { "title": "Protocol downgrade gedetecteerd", - "text": "" + "text": "De verbinding met uw Dash. instantie gebruikt HTTP. Dit is een veiligheidsrisico, want HTTP is niet gecodeerd en aanvallers zouden deze verbinding kunnen misbruiken. Zorg ervoor dat Dash. HTTPS gebruikt, of downgrade Homarr naar HTTP (niet aanbevolen)." } }, "graphs": { diff --git a/public/locales/nl/modules/iframe.json b/public/locales/nl/modules/iframe.json index 3acc9cb99..dfbe2e5f2 100644 --- a/public/locales/nl/modules/iframe.json +++ b/public/locales/nl/modules/iframe.json @@ -1,11 +1,11 @@ { "descriptor": { - "name": "", - "description": "", + "name": "iFrame", + "description": "Insluiten van alle inhoud van het internet. Sommige websites kunnen de toegang beperken.", "settings": { - "title": "", + "title": "iFrame Instellingen", "embedUrl": { - "label": "" + "label": "URL insluiten" }, "allowFullScreen": { "label": "Volledig scherm toestaan" diff --git a/public/locales/nl/modules/media-requests-list.json b/public/locales/nl/modules/media-requests-list.json index 72c9da211..6839d4c5b 100644 --- a/public/locales/nl/modules/media-requests-list.json +++ b/public/locales/nl/modules/media-requests-list.json @@ -1,17 +1,17 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Media Verzoeken", + "description": "Bekijk een lijst met alle mediaverzoeken van uw Overseerr of Jellyseerr instantie", "settings": { - "title": "" + "title": "Lijst met mediaverzoeken" } }, - "noRequests": "", - "pending": "", - "nonePending": "", + "noRequests": "Geen verzoeken gevonden. Zorg ervoor dat u uw apps correct hebt geconfigureerd.", + "pending": "Er zijn {{countPendingApproval}} verzoeken die op goedkeuring wachten.", + "nonePending": "Er zijn momenteel geen lopende goedkeuringen. Je bent klaar om te gaan!", "state": { - "approved": "", - "pendingApproval": "", - "declined": "" + "approved": "Goedgekeurd", + "pendingApproval": "In afwachting van goedkeuring", + "declined": "Afgewezen" } } diff --git a/public/locales/nl/modules/media-requests-stats.json b/public/locales/nl/modules/media-requests-stats.json index 0ea9c580e..855b6a591 100644 --- a/public/locales/nl/modules/media-requests-stats.json +++ b/public/locales/nl/modules/media-requests-stats.json @@ -1,14 +1,14 @@ { "descriptor": { - "name": "", - "description": "", + "name": "Media verzoek statistieken", + "description": "Statistieken over je mediaverzoeken", "settings": { - "title": "" + "title": "Mediaverzoeken statistieken" } }, "stats": { - "pending": "", - "tvRequests": "", - "movieRequests": "" + "pending": "Wachtende goedkeuringen", + "tvRequests": "TV verzoeken", + "movieRequests": "Film verzoeken" } } diff --git a/public/locales/nl/modules/ping.json b/public/locales/nl/modules/ping.json index f1769b3db..d95664309 100644 --- a/public/locales/nl/modules/ping.json +++ b/public/locales/nl/modules/ping.json @@ -1,7 +1,7 @@ { "descriptor": { "name": "Ping", - "description": "" + "description": "Toont een statusindicator afhankelijk van de HTTP-antwoordcode van een bepaalde URL." }, "states": { "online": "Online {{response}}", diff --git a/public/locales/nl/modules/rss.json b/public/locales/nl/modules/rss.json index cf6cfae9b..a1917bd80 100644 --- a/public/locales/nl/modules/rss.json +++ b/public/locales/nl/modules/rss.json @@ -5,18 +5,18 @@ "settings": { "title": "Instellingen voor RSS widget", "rssFeedUrl": { - "label": "", - "description": "" + "label": "RSS feed URLs", + "description": "De URL's van de RSS feeds waarvan u wilt weergeven." }, "refreshInterval": { - "label": "" + "label": "Verversingsinterval (in minuten)" } }, "card": { "errors": { "general": { - "title": "", - "text": "" + "title": "Kan RSS feed niet ophalen", + "text": "Er was een probleem met het bereiken van de RSS feed. Zorg ervoor dat u de RSS-feed correct hebt geconfigureerd met een geldige URL. URL's moeten overeenkomen met de officiële specificatie. Na het bijwerken van de feed, moet u mogelijk het dashboard vernieuwen." } } } diff --git a/public/locales/nl/modules/torrents-status.json b/public/locales/nl/modules/torrents-status.json index d52912336..09d9c201f 100644 --- a/public/locales/nl/modules/torrents-status.json +++ b/public/locales/nl/modules/torrents-status.json @@ -50,7 +50,7 @@ "text": "Voeg een ondersteunde Torrent-client toe om je huidige downloads te bekijken" }, "generic": { - "title": "", + "title": "Er is een onverwachte fout opgetreden", "text": "Homarr kon niet communiceren met je Torrent-clients. Controleer je configuratie" } }, diff --git a/public/locales/nl/modules/video-stream.json b/public/locales/nl/modules/video-stream.json index 7d99b18e0..427fdb9f5 100644 --- a/public/locales/nl/modules/video-stream.json +++ b/public/locales/nl/modules/video-stream.json @@ -1,20 +1,20 @@ { "descriptor": { - "name": "Video streams", - "description": "Voeg een video stream, video van een camera of een website in", + "name": "Video stream", + "description": "Een videostream of video van een camera of een website insluiten", "settings": { - "title": "Instellingen voor videostream-widget", + "title": "Instellingen voor video stream widget", "FeedUrl": { - "label": "" + "label": "Feed URL" }, "autoPlay": { - "label": "" + "label": "Automatisch afspelen" }, "muted": { "label": "Gedempte audio" }, "controls": { - "label": "Bedieningselementen videospeler" + "label": "Bediening van de videospeler" } } }, diff --git a/public/locales/nl/settings/customization/general.json b/public/locales/nl/settings/customization/general.json index cd9900da9..eeb37373e 100644 --- a/public/locales/nl/settings/customization/general.json +++ b/public/locales/nl/settings/customization/general.json @@ -1,21 +1,21 @@ { - "text": "Met aanpassingen kan je je ervaring met Homarr configureren en aanpassen naar je voorkeuren.", + "text": "Met aanpassingen kunt u uw ervaring met Homarr configureren en aanpassen aan uw voorkeuren.", "accordeon": { "layout": { "name": "Indeling", - "description": "Elementen op je header en dashboard tegels in- en uitschakelen" + "description": "In- en uitschakelen van elementen op je header en dashboard tegels" }, "gridstack": { "name": "Gridstack", - "description": "Het gedrag en de kolommen van je dashboard aanpassen" + "description": "Het gedrag en de kolommen van uw dashboard aanpassen" }, "pageMetadata": { - "name": "Pagina Metadata", - "description": "Tegels, logo en PWA aanpassen" + "name": "Pagina metadata", + "description": "Aanpassen van titels, logo en PWA" }, "appereance": { "name": "Opmaak", - "description": "" + "description": "Pas de achtergrond, kleuren en het uiterlijk van de app aan" } } } \ No newline at end of file diff --git a/public/locales/nl/settings/customization/gridstack.json b/public/locales/nl/settings/customization/gridstack.json index d3e645596..cb2093431 100644 --- a/public/locales/nl/settings/customization/gridstack.json +++ b/public/locales/nl/settings/customization/gridstack.json @@ -4,7 +4,7 @@ "descriptionPreset": "Aantal kolommen wanneer het scherm minder dan {{pixels}} pixels breed is.", "descriptionExceedsPreset": "Aantal kolommen wanneer het scherm groter is dan {{pixels}} pixels" }, - "unsavedChanges": "Je hebt niet opgeslagen wijzigingen. Klik op de knop Wijzigingen toepassen om ze toe te passen en op te slaan.", + "unsavedChanges": "U heeft niet opgeslagen wijzigingen. Klik op de knop Wijzigingen toepassen hieronder om ze toe te passen en op te slaan.", "applyChanges": "Wijzigingen toepassen", "defaultValues": "Standaardwaarden" } \ No newline at end of file diff --git a/public/locales/nl/settings/customization/page-appearance.json b/public/locales/nl/settings/customization/page-appearance.json index 44dee36c5..14bfcc6eb 100644 --- a/public/locales/nl/settings/customization/page-appearance.json +++ b/public/locales/nl/settings/customization/page-appearance.json @@ -5,22 +5,22 @@ }, "metaTitle": { "label": "Meta Titel", - "description": "" + "description": "De titel die wordt weergegeven in uw browsertabblad" }, "logo": { "label": "Logo", - "description": "" + "description": "Het logo dat linksboven wordt weergegeven" }, "favicon": { "label": "Favicon", - "description": "" + "description": "Het pictogram dat wordt weergegeven in uw browsertabblad" }, "background": { "label": "Achtergrond" }, "customCSS": { "label": "Eigen CSS", - "description": "", + "description": "Pas uw dashboard verder aan met behulp van CSS, alleen aanbevolen voor ervaren gebruikers", "placeholder": "Eigen CSS wordt als laatste toegepast", "applying": "CSS toepassen..." }, diff --git a/public/locales/nl/settings/general/config-changer.json b/public/locales/nl/settings/general/config-changer.json index fcfed6199..06e041789 100644 --- a/public/locales/nl/settings/general/config-changer.json +++ b/public/locales/nl/settings/general/config-changer.json @@ -36,8 +36,8 @@ }, "confirmDeletion": { "title": "Bevestig de verwijdering van uw configuratie", - "warningText": "", - "text": "", + "warningText": "Je staat op het punt om '{{configName}}' te verwijderen", + "text": "Houd er rekening mee dat het verwijderen niet teruggedraaid kan worden en dat je gegevens permanent verloren gaan. Nadat u op deze knop hebt geklikt, wordt het bestand permanent van uw schijf verwijderd. Zorg ervoor dat u een adequate back-up van uw configuratie maakt.", "buttons": { "confirm": "Ja, verwijder '{{configName}}'" } @@ -57,7 +57,7 @@ "message": "Configuratie verwijderen mislukt" }, "deleteFailedDefaultConfig": { - "title": "", + "title": "De standaardconfiguratie kan niet worden verwijderd", "message": "Configuratie is niet verwijderd uit het bestandssysteem" } } diff --git a/public/locales/nl/settings/general/search-engine.json b/public/locales/nl/settings/general/search-engine.json index f21f46807..737f4b890 100644 --- a/public/locales/nl/settings/general/search-engine.json +++ b/public/locales/nl/settings/general/search-engine.json @@ -2,7 +2,7 @@ "title": "Zoekmachine", "configurationName": "Zoekmachine configuratie", "tips": { - "generalTip": "", + "generalTip": "U kunt meerdere voorvoegsels gebruiken! Door deze voor uw zoekopdracht toe te voegen worden de resultaten gefilterd. !s (Web), !t (Torrents), !y (YouTube), en !m (Media).", "placeholderTip": "%s kan worden gebruikt als plaatshouder voor de query." }, "customEngine": { diff --git a/public/locales/nl/widgets/error-boundary.json b/public/locales/nl/widgets/error-boundary.json index 1782aed72..9253d8c97 100644 --- a/public/locales/nl/widgets/error-boundary.json +++ b/public/locales/nl/widgets/error-boundary.json @@ -1,14 +1,14 @@ { "card": { - "title": "", + "title": "Oeps, er was een fout!", "buttons": { - "details": "", - "tryAgain": "" + "details": "Beschrijving", + "tryAgain": "Probeer het opnieuw" } }, "modal": { "text": "", - "label": "", - "reportButton": "" + "label": "Uw fout", + "reportButton": "Deze fout melden" } } \ No newline at end of file diff --git a/public/locales/no/modules/media-requests-list.json b/public/locales/no/modules/media-requests-list.json index 9f16a0f25..e0c2166f4 100644 --- a/public/locales/no/modules/media-requests-list.json +++ b/public/locales/no/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Ingen forespørsler funnet. Vennligst skjekk at du har konfigurert appene dine riktig.", - "pending": "Det er {{countPendingApproval}} forespørsler som venter på en godkjenning.", + "pending": "", "nonePending": "Det er for tiden ingen ventende godkjenninger. Alt er klart!", "state": { "approved": "Godkjent", diff --git a/public/locales/sk/modules/media-requests-list.json b/public/locales/sk/modules/media-requests-list.json index 40139b293..c233047f1 100644 --- a/public/locales/sk/modules/media-requests-list.json +++ b/public/locales/sk/modules/media-requests-list.json @@ -7,7 +7,7 @@ } }, "noRequests": "Nenašli sa žiadne požiadavky. Skontrolujte, či ste správne nakonfigurovali svoje aplikácie.", - "pending": "Na schválenie čaká {{countPendingApproval}} žiadostí.", + "pending": "", "nonePending": "V súčasnosti nie sú k dispozícii žiadne schválenia. Môžete začať!", "state": { "approved": "Schválené", diff --git a/public/locales/zh/common.json b/public/locales/zh/common.json index 0c76984bb..79c381929 100644 --- a/public/locales/zh/common.json +++ b/public/locales/zh/common.json @@ -10,7 +10,7 @@ "changePosition": "改变位置", "remove": "移除", "removeConfirm": "你确定要删除 {{item}} 吗?", - "createItem": "", + "createItem": "创建{{item}}", "sections": { "settings": "设置", "dangerZone": "危险操作" diff --git a/public/locales/zh/layout/modals/about.json b/public/locales/zh/layout/modals/about.json index 244f0bd13..2d6b35985 100644 --- a/public/locales/zh/layout/modals/about.json +++ b/public/locales/zh/layout/modals/about.json @@ -2,10 +2,10 @@ "description": "Homarr是一个 顺滑的现代化 的面板,它把你所有的应用和服务汇于指尖。有了Homarr,你可以在一个页面访问和控制一切。Homarr与你添加的应用无缝交互,为你提供有价值的信息并由你完全控制。安装Homarr轻松简单,并且支持多种部署方式。", "contact": "遇到困难或问题?请与我们联系!", "addToDashboard": "添加到控制面板", - "tip": "", - "key": "", - "action": "", - "keybinds": "", + "tip": "Mod 指的是你的修饰键,它是 Ctrl 和 Command/Super/Windows 键", + "key": "快捷键", + "action": "操作", + "keybinds": "热键绑定", "metrics": { "configurationSchemaVersion": "配置样式版本", "configurationsCount": "可用的配置", diff --git a/public/locales/zh/layout/modals/add-app.json b/public/locales/zh/layout/modals/add-app.json index fdaeeb1d6..90b431f8f 100644 --- a/public/locales/zh/layout/modals/add-app.json +++ b/public/locales/zh/layout/modals/add-app.json @@ -1,7 +1,7 @@ { "tabs": { - "general": "一般", - "behaviour": "", + "general": "通用", + "behaviour": "动作", "network": "网络", "appearance": "外观", "integration": "融合" diff --git a/public/locales/zh/modules/dashdot.json b/public/locales/zh/modules/dashdot.json index 817df9efa..a7a367991 100644 --- a/public/locales/zh/modules/dashdot.json +++ b/public/locales/zh/modules/dashdot.json @@ -11,20 +11,20 @@ "label": "显示百分比" }, "columns": { - "label": "" + "label": "显示的列" }, "graphHeight": { "label": "图形的高度" }, "graphsOrder": { - "label": "", + "label": "图形(顺序)", "storage": { "label": "存储", "enabled": { "label": "在小工具中显示" }, "span": { - "label": "" + "label": "列宽度" }, "compactView": { "label": "显示为文本(紧凑)" @@ -39,7 +39,7 @@ "label": "在小工具中显示" }, "span": { - "label": "" + "label": "列宽度" }, "compactView": { "label": "显示为文本(紧凑)" @@ -51,7 +51,7 @@ "label": "在小工具中显示" }, "span": { - "label": "" + "label": "列宽度" }, "multiView": { "label": "显示为多核视图" @@ -63,7 +63,7 @@ "label": "在小工具中显示" }, "span": { - "label": "" + "label": "列宽度" } }, "gpu": { @@ -72,7 +72,7 @@ "label": "在小工具中显示" }, "span": { - "label": "" + "label": "列宽度" } } } diff --git a/public/locales/zh/modules/media-requests-list.json b/public/locales/zh/modules/media-requests-list.json index 72c9da211..1fef401f0 100644 --- a/public/locales/zh/modules/media-requests-list.json +++ b/public/locales/zh/modules/media-requests-list.json @@ -1,17 +1,17 @@ { "descriptor": { - "name": "", - "description": "", + "name": "媒体请求", + "description": "查看来自你的Overseerr或Jellyseerr实例的所有媒体请求的列表", "settings": { - "title": "" + "title": "媒体请求列表" } }, - "noRequests": "", - "pending": "", - "nonePending": "", + "noRequests": "没有找到请求。请确保你已经正确配置了你的应用程序。", + "pending": "有 {{countPendingApproval}} 个请求正等待核准。", + "nonePending": "目前没有待核准的项目。静待媒体更新!", "state": { - "approved": "", - "pendingApproval": "", - "declined": "" + "approved": "已核准", + "pendingApproval": "待核准", + "declined": "已拒绝" } } diff --git a/public/locales/zh/modules/media-requests-stats.json b/public/locales/zh/modules/media-requests-stats.json index 0ea9c580e..22c09f463 100644 --- a/public/locales/zh/modules/media-requests-stats.json +++ b/public/locales/zh/modules/media-requests-stats.json @@ -1,14 +1,14 @@ { "descriptor": { - "name": "", - "description": "", + "name": "媒体请求状态", + "description": "您的媒体请求统计", "settings": { - "title": "" + "title": "媒体请求状态" } }, "stats": { - "pending": "", - "tvRequests": "", - "movieRequests": "" + "pending": "待核准", + "tvRequests": "电视请求", + "movieRequests": "电影请求" } } diff --git a/public/locales/zh/modules/rss.json b/public/locales/zh/modules/rss.json index 85f800113..13f0ef03f 100644 --- a/public/locales/zh/modules/rss.json +++ b/public/locales/zh/modules/rss.json @@ -5,18 +5,18 @@ "settings": { "title": "设置RSS小部件", "rssFeedUrl": { - "label": "", - "description": "" + "label": "RSS Feed地址", + "description": "你想在其中展示的RSS订阅源URL" }, "refreshInterval": { - "label": "" + "label": "刷新间隔(以分钟计)" } }, "card": { "errors": { "general": { - "title": "", - "text": "" + "title": "无法加载此RSS订阅源", + "text": "加载此RSS订阅源时出现问题。请确保你正确配置了RSS订阅源的URL。URLs应该符合官方规范。在更新订阅源后,你可能需要重新加载仪表板。" } } } diff --git a/public/locales/zh/modules/search.json b/public/locales/zh/modules/search.json index a44b503af..f0ca2501f 100644 --- a/public/locales/zh/modules/search.json +++ b/public/locales/zh/modules/search.json @@ -6,23 +6,23 @@ "input": { "placeholder": "在网上搜索..." }, - "switched-to": "换成了", + "switched-to": "切换到:", "searchEngines": { "search": { "name": "网络", "description": "搜索..." }, "youtube": { - "name": "录像带", + "name": "油管", "description": "在Youtube上搜索" }, "torrents": { - "name": "火炬", - "description": "搜索山洪病毒" + "name": "种子", + "description": "搜索种子" }, "overseerr": { "name": "Overseerr", - "description": "在Overseer上搜索电影和电视剧。" + "description": "在媒体请求服务上搜索电影和电视剧。" } }, "tip": "你可以用快捷键选择搜索栏 ", diff --git a/public/locales/zh/widgets/error-boundary.json b/public/locales/zh/widgets/error-boundary.json index 1782aed72..a4d714e8d 100644 --- a/public/locales/zh/widgets/error-boundary.json +++ b/public/locales/zh/widgets/error-boundary.json @@ -1,14 +1,14 @@ { "card": { - "title": "", + "title": "糟糕,出现了一个错误!", "buttons": { - "details": "", - "tryAgain": "" + "details": "详情", + "tryAgain": "请再试一次" } }, "modal": { "text": "", - "label": "", - "reportButton": "" + "label": "请检查", + "reportButton": "报告该错误" } } \ No newline at end of file From 5a6c039f5bc0ccf036fd266f6b97389fcfdd5ab3 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:21:34 +0200 Subject: [PATCH 07/13] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20Ping=20array=20(#?= =?UTF-8?q?823)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Overview/AvailableElementsOverview.tsx | 1 + src/components/Dashboard/Tiles/Apps/AppPing.tsx | 12 +++++++++++- src/modules/Docker/ContainerActionBar.tsx | 1 + src/pages/api/configs/[slug].ts | 7 +++++++ src/pages/api/modules/ping.ts | 2 ++ src/types/app.ts | 1 + 6 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx index 0ec7e091d..653c86ec0 100644 --- a/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx +++ b/src/components/Dashboard/Modals/SelectElement/Components/Overview/AvailableElementsOverview.tsx @@ -96,6 +96,7 @@ export const AvailableElementTypes = ({ network: { enabledStatusChecker: true, statusCodes: ['200'], + okStatus: [200], }, behaviour: { isOpeningNewTab: true, diff --git a/src/components/Dashboard/Tiles/Apps/AppPing.tsx b/src/components/Dashboard/Tiles/Apps/AppPing.tsx index 0a14bb9f2..b2e3bd559 100644 --- a/src/components/Dashboard/Tiles/Apps/AppPing.tsx +++ b/src/components/Dashboard/Tiles/Apps/AppPing.tsx @@ -1,4 +1,5 @@ import { Indicator, Tooltip } from '@mantine/core'; +import Consola from 'consola'; import { useQuery } from '@tanstack/react-query'; import { motion } from 'framer-motion'; import { useTranslation } from 'next-i18next'; @@ -19,7 +20,7 @@ export const AppPing = ({ app }: AppPingProps) => { queryKey: ['ping', { id: app.id, name: app.name }], queryFn: async () => { const response = await fetch(`/api/modules/ping?url=${encodeURI(app.url)}`); - const isOk = app.network.statusCodes.includes(response.status.toString()); + const isOk = getIsOk(app, response.status); return { status: response.status, state: isOk ? 'online' : 'down', @@ -60,3 +61,12 @@ export const AppPing = ({ app }: AppPingProps) => { ); }; + +const getIsOk = (app: AppType, status: number) => { +if (app.network.okStatus === undefined || app.network.statusCodes.length >= 1) { +Consola.log('Using new status codes'); +return app.network.statusCodes.includes(status.toString()); +} +Consola.warn('Using deprecated okStatus'); +return app.network.okStatus.includes(status); +}; diff --git a/src/modules/Docker/ContainerActionBar.tsx b/src/modules/Docker/ContainerActionBar.tsx index fa3aa79fe..e5aa253b6 100644 --- a/src/modules/Docker/ContainerActionBar.tsx +++ b/src/modules/Docker/ContainerActionBar.tsx @@ -178,6 +178,7 @@ export default function ContainerActionBar({ selected, reload }: ContainerAction network: { enabledStatusChecker: true, statusCodes: ['200'], + okStatus: [200], }, behaviour: { isOpeningNewTab: true, diff --git a/src/pages/api/configs/[slug].ts b/src/pages/api/configs/[slug].ts index 7050413f6..b7cbfea8d 100644 --- a/src/pages/api/configs/[slug].ts +++ b/src/pages/api/configs/[slug].ts @@ -35,6 +35,13 @@ function Put(req: NextApiRequest, res: NextApiResponse) { apps: [ ...config.apps.map((app) => ({ ...app, + network: { + ...app.network, + statusCodes: app.network.okStatus === undefined ? + app.network.statusCodes : + app.network.okStatus.map((x) => x.toString()), + okStatus: undefined, + }, integration: { ...app.integration, properties: app.integration.properties.map((property) => { diff --git a/src/pages/api/modules/ping.ts b/src/pages/api/modules/ping.ts index 270ed49f8..7c2a1bbe1 100644 --- a/src/pages/api/modules/ping.ts +++ b/src/pages/api/modules/ping.ts @@ -1,5 +1,6 @@ import axios from 'axios'; import https from 'https'; +import Consola from 'consola'; import { NextApiRequest, NextApiResponse } from 'next'; async function Get(req: NextApiRequest, res: NextApiResponse) { @@ -13,6 +14,7 @@ async function Get(req: NextApiRequest, res: NextApiResponse) { }) .catch((error) => { if (error.response) { + Consola.error(`Unexpected response: ${error.response.data}`); res.status(error.response.status).json(error.response.statusText); } else if (error.code === 'ECONNABORTED') { res.status(408).json('Request Timeout'); diff --git a/src/types/app.ts b/src/types/app.ts index ca933d2d4..ad951539f 100644 --- a/src/types/app.ts +++ b/src/types/app.ts @@ -23,6 +23,7 @@ interface AppBehaviourType { interface AppNetworkType { enabledStatusChecker: boolean; + okStatus?: number[]; statusCodes: string[]; } From da2dcf821c7023b7bb100d27d3c5dd46914cc6b9 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:09:21 +0200 Subject: [PATCH 08/13] =?UTF-8?q?=F0=9F=94=96=20Update=20version=20in=20pa?= =?UTF-8?q?ckage.json=20(#844)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7cca6a3d2..1202031b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "0.12.0", + "version": "0.12.1", "description": "Homarr - A homepage for your server.", "license": "MIT", "repository": { From f308e647889d4121cbbe33b524a4303ee78f909c Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:31:27 +0200 Subject: [PATCH 09/13] =?UTF-8?q?=F0=9F=93=9D=20Update=20README.md=20(#822?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 📝 Update README.md * Update README.md Co-authored-by: Bjorn Lammers * Update README.md Co-authored-by: Bjorn Lammers * Update README.md Co-authored-by: Bjorn Lammers * Update README.md Co-authored-by: Bjorn Lammers * Update README.md Co-authored-by: Bjorn Lammers --------- Co-authored-by: Bjorn Lammers --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e0310f032..74e8569c1 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,10 @@ Simplify the management of your server with Homarr - a sleek, modern dashboard t - 📄 Detailed documentation and active community - 🔍 Search through the web or supported integrations in an instant - 🏴󠁧󠁢󠁮󠁩󠁲󠁿 Monitor your application with a built-in status system -- 🦞 Comprehensive built-in icon picker with over 1000 icons -- 🐳 Easy deployment with Docker, unRAID, Synology -- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, ...) -- 💵 Free and Open-Source - your data stays on your device +- 🦞 Comprehensive built-in icon picker with over 7000 icons +- 🐳 Easy deployment with Docker, unRAID, and Synology +- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...) +- 💵 Free and Open-Source - your data stays on your device. No telemetry data.

@@ -96,8 +96,7 @@ https://user-images.githubusercontent.com/30572287/217098893-5880e7de-13d0-42c5- ![Installation Section](docs/section-installation.png) -There are many different ways, how Homarr can be installed. -Since we are developing Homarr very frequently, we recommend reading our official installation guides: +Since we are updating Homarr very frequently, we recommend reading our official installation guides: @@ -117,7 +116,7 @@ Although a donation is appreciated, there are other ways you can support us. -You can also support us [translating the entire project in as many languages as possible,](https://homarr.dev/docs/community/translations) or contribute directly to the code or documentation. +You can also support us by helping with [translating the entire project](https://homarr.dev/docs/community/translations) to as many language as possible or contributing directly to the code or documentation. **Please read our [Contribution Guidelines](/CONTRIBUTING.md)** From cd9fa354ec8a59134e073c9f5eefa7ee73396bde Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sun, 23 Apr 2023 22:09:29 +0200 Subject: [PATCH 10/13] =?UTF-8?q?=F0=9F=90=9B=20Fix=20rss=20widget=20crash?= =?UTF-8?q?=20with=20legacy=20string=20(#848)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/api/configs/[slug].ts | 35 ++++++++++-- src/widgets/rss/RssWidgetTile.tsx | 95 ++++++++++++++++--------------- 2 files changed, 79 insertions(+), 51 deletions(-) diff --git a/src/pages/api/configs/[slug].ts b/src/pages/api/configs/[slug].ts index b7cbfea8d..e7f37f4ef 100644 --- a/src/pages/api/configs/[slug].ts +++ b/src/pages/api/configs/[slug].ts @@ -8,6 +8,8 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { BackendConfigType, ConfigType } from '../../../types/config'; import { getConfig } from '../../../tools/config/getConfig'; +import widgets from '../../../widgets'; +import { IRssWidget } from '../../../widgets/rss/RssWidgetTile'; function Put(req: NextApiRequest, res: NextApiResponse) { if (process.env.DISABLE_EDIT_MODE === 'true') { @@ -30,16 +32,17 @@ function Put(req: NextApiRequest, res: NextApiResponse) { const previousConfig = getConfig(slug); - const newConfig: BackendConfigType = { + let newConfig: BackendConfigType = { ...config, apps: [ ...config.apps.map((app) => ({ ...app, network: { ...app.network, - statusCodes: app.network.okStatus === undefined ? - app.network.statusCodes : - app.network.okStatus.map((x) => x.toString()), + statusCodes: + app.network.okStatus === undefined + ? app.network.statusCodes + : app.network.okStatus.map((x) => x.toString()), okStatus: undefined, }, integration: { @@ -83,6 +86,30 @@ function Put(req: NextApiRequest, res: NextApiResponse) { ], }; + newConfig = { + ...newConfig, + widgets: [ + ...newConfig.widgets.map((x) => { + if (x.type !== 'rss') { + return x; + } + + const rssWidget = x as IRssWidget; + + return { + ...rssWidget, + properties: { + ...rssWidget.properties, + rssFeedUrl: + typeof rssWidget.properties.rssFeedUrl === 'string' + ? [rssWidget.properties.rssFeedUrl] + : rssWidget.properties.rssFeedUrl, + }, + } as IRssWidget; + }), + ], + }; + // Save the body in the /data/config folder with the slug as filename const targetPath = path.join('data/configs', `${slug}.json`); fs.writeFileSync(targetPath, JSON.stringify(newConfig, null, 2), 'utf8'); diff --git a/src/widgets/rss/RssWidgetTile.tsx b/src/widgets/rss/RssWidgetTile.tsx index c3022fd00..07e19ea71 100644 --- a/src/widgets/rss/RssWidgetTile.tsx +++ b/src/widgets/rss/RssWidgetTile.tsx @@ -120,58 +120,59 @@ function RssTile({ widget }: RssTileProps) { {data.map((feed, index) => ( - {feed.feed && feed.feed.items.map((item: any, index: number) => ( - - {item.enclosure && ( - // eslint-disable-next-line @next/next/no-img-element - backdrop - )} - - + {feed.feed && + feed.feed.items.map((item: any, index: number) => ( + {item.enclosure && ( - - - + // eslint-disable-next-line @next/next/no-img-element + backdrop )} - - {item.categories && ( - - {item.categories.map((category: any, categoryIndex: number) => ( - {category} - ))} - - )} - {item.title} - - {item.content} - - - {item.pubDate && ( - + + {item.enclosure && ( + + + )} + + {item.categories && ( + + {item.categories.map((category: any, categoryIndex: number) => ( + {category} + ))} + + )} + + {item.title} + + {item.content} + + + {item.pubDate && ( + + )} + - - - ))} + + ))} ))} From 2494ee6a34930acd8f52fe7d1b4a8155135bb693 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Mon, 24 Apr 2023 20:09:12 +0200 Subject: [PATCH 11/13] =?UTF-8?q?=F0=9F=92=84=20Fix=20max=20iframe=20width?= =?UTF-8?q?=20(#851)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widgets/iframe/IFrameTile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/iframe/IFrameTile.tsx b/src/widgets/iframe/IFrameTile.tsx index 8cc2efe1f..43f673ad4 100644 --- a/src/widgets/iframe/IFrameTile.tsx +++ b/src/widgets/iframe/IFrameTile.tsx @@ -55,7 +55,7 @@ function IFrameTile({ widget }: IFrameTileProps) { } return ( - +