diff --git a/apps/docs/docs/getting-started/after-the-installation.mdx b/apps/docs/docs/getting-started/after-the-installation.mdx index e4fe8e725..2a8b1f5c9 100644 --- a/apps/docs/docs/getting-started/after-the-installation.mdx +++ b/apps/docs/docs/getting-started/after-the-installation.mdx @@ -48,11 +48,11 @@ You may refresh anytime and continue from a different device - the onboarding is ### Starting from scratch Depending on your auth provider configuration you will either first see the admin user creation form or the external group creation form. -If credentials provider was selected, you'll be prompted to create an admin user for Homarr. -This user cannot be deleted and has full control over Homarr and all of it's boards. -You must choose an username and password (both can later be changed). -We enforce strict password requirements, when you enter your password, to protect your instance if you accidentially -expose it to the Internet. +If the credentials provider was selected, you'll be prompted to create an admin user for Homarr. +This user cannot be deleted and has full control over Homarr and all of its boards. +You must choose a username and password (both can later be changed). +We enforce strict password requirements when you enter your password to protect your instance if you accidentally +expose it to the internet. { diff --git a/packages/db/migrations/custom/0000_release_widget_provider_to_options.ts b/packages/db/migrations/custom/0000_release_widget_provider_to_options.ts index 8cec43188..85f39bcbc 100644 --- a/packages/db/migrations/custom/0000_release_widget_provider_to_options.ts +++ b/packages/db/migrations/custom/0000_release_widget_provider_to_options.ts @@ -23,18 +23,19 @@ export async function migrateReleaseWidgetProviderToOptionsAsync(db: Database) { if (options.repositories.length === 0) continue; if (!options.repositories.some((repository) => "providerKey" in repository)) continue; - const updatedRepositories = options.repositories.map( - ({ providerKey, ...otherFields }: { providerKey: string; [key: string]: unknown }) => { - // Ensure providerKey is camelCase + const updatedRepositories = options.repositories + .map(({ providerKey, ...otherFields }: { providerKey: string; [key: string]: unknown }) => { const provider = providerKey.charAt(0).toLowerCase() + providerKey.slice(1); + const matchedProvider = releaseProviderKinds.find((kind) => kind === provider); + if (!matchedProvider) return null; return { id: createId(), - provider: releaseProviderKinds.find((kind) => kind === provider), + provider: matchedProvider, ...otherFields, }; - }, - ); + }) + .filter((repo) => repo !== null); updates.push({ id: item.id, diff --git a/packages/db/migrations/custom/0003_remove_widget_only_integrations.ts b/packages/db/migrations/custom/0003_remove_widget_only_integrations.ts index b98fc35b5..0c7a04d6c 100644 --- a/packages/db/migrations/custom/0003_remove_widget_only_integrations.ts +++ b/packages/db/migrations/custom/0003_remove_widget_only_integrations.ts @@ -54,21 +54,11 @@ export async function migrateWidgetOnlyIntegrationsToOptionsAsync(db: Database) .filter((item) => oldIntegrationById.has(item.integrationId)) .map((item) => [item.itemId, oldIntegrationById.get(item.integrationId)]), ); - const oldIntegrationItemIdsByItemId = oldIntegrationItems - .filter((item) => oldIntegrationById.has(item.integrationId)) - .reduce>((acc, item) => { - const itemIds = acc.get(item.itemId) ?? []; - itemIds.push(item.integrationId); - acc.set(item.itemId, itemIds); - return acc; - }, new Map()); - const existingItems = await db.query.items.findMany({ where: (items, { inArray }) => inArray(items.kind, ["releases", "timetable"]), }); const updatedItems: { id: string; options: object }[] = []; - const unlinkItemIds: string[] = []; for (const item of existingItems) { const options = SuperJSON.parse>(item.options); @@ -89,12 +79,10 @@ export async function migrateWidgetOnlyIntegrationsToOptionsAsync(db: Database) }; }); updatedItems.push({ id: item.id, options: { ...options, repositories } }); - if (oldIntegrationItemIdsByItemId.has(item.id)) unlinkItemIds.push(item.id); } if (item.kind === "timetable" && linkedIntegration?.kind === "searchCh") { updatedItems.push({ id: item.id, options: { ...options, baseUrl: linkedIntegration.url } }); - unlinkItemIds.push(item.id); } } @@ -105,10 +93,7 @@ export async function migrateWidgetOnlyIntegrationsToOptionsAsync(db: Database) .where(eq(items.id, update.id)); } - if (unlinkItemIds.length > 0) { - await db.delete(integrationItems).where(inArray(integrationItems.itemId, unlinkItemIds)); - } - + await db.delete(integrationItems).where(inArray(integrationItems.integrationId, oldIntegrationIds)); await db.delete(integrations).where(inArray(integrations.id, oldIntegrationIds)); console.log(`Migrated widget-only integrations to widget options count="${updatedItems.length}"`); diff --git a/packages/request-handler/src/release-providers.ts b/packages/request-handler/src/release-providers.ts index ebca83318..31c8a29fe 100644 --- a/packages/request-handler/src/release-providers.ts +++ b/packages/request-handler/src/release-providers.ts @@ -46,8 +46,8 @@ export const getLatestRelease = ( versionRegex?: string, ): ReleaseProviderResponse | null => { const validReleases = releases.filter((result) => { - if (result.latestRelease) return versionRegex ? new RegExp(versionRegex).test(result.latestRelease) : true; - return true; + if (!result.latestRelease) return false; + return versionRegex ? new RegExp(versionRegex).test(result.latestRelease) : true; }); return validReleases.length === 0 @@ -443,16 +443,20 @@ const getGitlabDetailsAsync = async (baseUrl: string, encodedIdentifier: string) }; }; +const npmTimeMetadataKeys = new Set(["created", "modified"]); + const npmReleasesSchema = z.object({ time: z .record( z.string(), z.string().transform((value) => new Date(value)), ) - .transform((version) => - Object.entries(version).map(([key, value]) => ({ latestRelease: key, latestReleaseAt: value })), + .transform((entries) => + Object.entries(entries) + .filter(([key]) => !npmTimeMetadataKeys.has(key)) + .map(([key, value]) => ({ latestRelease: key, latestReleaseAt: value })), ), - versions: z.record(z.string(), z.object({ description: z.string() })), + versions: z.record(z.string(), z.object({ description: z.string().optional() })), name: z.string(), }); diff --git a/packages/request-handler/src/timetable.ts b/packages/request-handler/src/timetable.ts index fa33e4000..166f1e8ee 100644 --- a/packages/request-handler/src/timetable.ts +++ b/packages/request-handler/src/timetable.ts @@ -1,5 +1,5 @@ import dayjs from "dayjs"; -import z from "zod/v4"; +import { z } from "zod/v4"; import { ResponseError } from "@homarr/common/server"; import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; @@ -88,7 +88,18 @@ const getTimetableAsync = async ( options: { stationId: string; limit: number }, ): Promise => { const now = new Date(); - const [date, time] = now.toLocaleString("en-CH", { timeZone: "Europe/Zurich" }).split(", ") as [string, string]; + const date = new Intl.DateTimeFormat("en-US", { + timeZone: "Europe/Zurich", + month: "2-digit", + day: "2-digit", + year: "numeric", + }).format(now); + const time = new Intl.DateTimeFormat("en-GB", { + timeZone: "Europe/Zurich", + hour: "2-digit", + minute: "2-digit", + hour12: false, + }).format(now); const response = await fetchWithTrustedCertificatesAsync( buildUrl(baseUrl, "/timetable/api/stationboard.json", { stop: options.stationId, @@ -96,7 +107,7 @@ const getTimetableAsync = async ( show_delays: 1, show_tracks: 1, date, - time: time.substring(0, 5), + time, }), ); if (!response.ok) throw new ResponseError(response); diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 84b24a515..6f41a3010 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 5e0f92e22..5c399904f 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "无效标识符", "noMatchingVersion": "没有找到匹配的版本", "noReleasesFound": "没有发现发布信息", - "noProviderSeleceted": "没有选择提供者", "noProviderResponse": "提供者没有响应", "noProviderSelected": "没有选择提供者" } diff --git a/packages/translation/src/lang/cr.json b/packages/translation/src/lang/cr.json index f4fd6ef8d..5e288750a 100644 --- a/packages/translation/src/lang/cr.json +++ b/packages/translation/src/lang/cr.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "crwdns3512:0crwdne3512:0", "noMatchingVersion": "crwdns3514:0crwdne3514:0", "noReleasesFound": "crwdns3516:0crwdne3516:0", - "noProviderSeleceted": "crwdns3518:0crwdne3518:0", "noProviderResponse": "crwdns3520:0crwdne3520:0", "noProviderSelected": "crwdns3518:0crwdne3518:0" } diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 690e78e49..52f9b8e12 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 7890a1553..21e918697 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Ugyldig identifikator", "noMatchingVersion": "Ingen matchende version fundet", "noReleasesFound": "Ingen udgivelser fundet", - "noProviderSeleceted": "Ingen udbyder valgt", "noProviderResponse": "Intet svar fra udbyder", "noProviderSelected": "Ingen udbyder valgt" } diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index 6596321b6..9748dbf82 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index b84c76904..11f53458f 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Ungültige Kennung", "noMatchingVersion": "Keine passende Version gefunden", "noReleasesFound": "Keine Veröffentlichungen gefunden", - "noProviderSeleceted": "Kein Anbieter ausgewählt", "noProviderResponse": "Keine Antwort vom Anbieter", "noProviderSelected": "Kein Anbieter ausgewählt" } diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 0bf3a37d1..05b30fdd9 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index ce591e42b..509729789 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index ef4440e30..ffe1acea4 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Identificador no válido", "noMatchingVersion": "No se encontró una versión correspondiente", "noReleasesFound": "No se encontraron publicaciones", - "noProviderSeleceted": "No se ha seleccionado ningún proveedor", "noProviderResponse": "No hay respuesta del proveedor", "noProviderSelected": "No se ha seleccionado ningún proveedor" } diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 06991bd0c..19314ee0f 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/fi.json b/packages/translation/src/lang/fi.json index 36e68e9fd..feaa81646 100644 --- a/packages/translation/src/lang/fi.json +++ b/packages/translation/src/lang/fi.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "Toimittajaa ei ole valittu", "noProviderResponse": "", "noProviderSelected": "Toimittajaa ei ole valittu" } diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index ddc5978aa..4f3f1aadf 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Identifiant non valide", "noMatchingVersion": "Aucune version correspondante trouvée", "noReleasesFound": "Aucune publication trouvée", - "noProviderSeleceted": "Aucun fournisseur sélectionné", "noProviderResponse": "Aucune réponse du fournisseur", "noProviderSelected": "Aucun fournisseur sélectionné" } diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index fac9c0f7f..a6c8244b3 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "מזהה לא חוקי", "noMatchingVersion": "לא נמצאה גרסה תואמת", "noReleasesFound": "לא נמצאו שיחרורים", - "noProviderSeleceted": "לא נבחר ספק", "noProviderResponse": "אין תשובה מהספק", "noProviderSelected": "לא נבחר ספק" } diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index f5783a384..a0fbd854d 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index cf147749d..8deb6630a 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 8dd34bc36..d85b55e4b 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Identificatore non valido", "noMatchingVersion": "Nessuna versione corrispondente trovata", "noReleasesFound": "Nessun rilascio trovato", - "noProviderSeleceted": "Nessun provider selezionato", "noProviderResponse": "Nessuna risposta dal provider", "noProviderSelected": "Nessun provider selezionato" } diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 2c0b5943a..88226d259 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "無効な識別子", "noMatchingVersion": "一致するバージョンが見つかりません", "noReleasesFound": "リリースが見つかりませんでした", - "noProviderSeleceted": "プロバイダーが選択されていません", "noProviderResponse": "プロバイダーからの応答がありません", "noProviderSelected": "プロバイダーが選択されていません" } diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 39d5dde10..435af4381 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index b9140ed7b..74d3b2e17 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 136d36326..4ea91fce0 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 3a403e373..821f9e43e 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Ongeldige identificator", "noMatchingVersion": "Geen overeenkomende versie gevonden", "noReleasesFound": "Geen uitgaves gevonden", - "noProviderSeleceted": "Geen aanbieder geselecteerd", "noProviderResponse": "Geen reactie van aanbieder", "noProviderSelected": "Geen aanbieder geselecteerd" } diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index cb244b347..cb76f3fdb 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Ugyldig identifikator", "noMatchingVersion": "Ingen samsvarende versjon funnet", "noReleasesFound": "Ingen utgivelser funnet", - "noProviderSeleceted": "Ingen leverandør valgt", "noProviderResponse": "Ingen respons fra leverandør", "noProviderSelected": "Ingen leverandør valgt" } diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 505135400..3cfe1a4b0 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Nieprawidłowy identyfikator", "noMatchingVersion": "Nie znaleziono pasującej wersji", "noReleasesFound": "Nie znaleziono wydań!", - "noProviderSeleceted": "Nie wybrano dostawcy", "noProviderResponse": "Brak odpowiedzi od dostawcy", "noProviderSelected": "Nie wybrano dostawcy" } diff --git a/packages/translation/src/lang/pt-br.json b/packages/translation/src/lang/pt-br.json index fda6321fe..c1e0dbb05 100644 --- a/packages/translation/src/lang/pt-br.json +++ b/packages/translation/src/lang/pt-br.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Identificador inválido", "noMatchingVersion": "Nenhuma versão correspondente encontrada", "noReleasesFound": "Nenhum lançamento encontrado", - "noProviderSeleceted": "Nenhum provedor selecionado", "noProviderResponse": "Nenhuma resposta do provedor", "noProviderSelected": "Nenhum provedor selecionado" } diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index aaa479f56..a6bd09895 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 230748ff3..239cc530f 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 56782b717..21c61ef35 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Неверный идентификатор", "noMatchingVersion": "Подходящая версия не найдена", "noReleasesFound": "Релизы не найдены", - "noProviderSeleceted": "Провайдер не выбран", "noProviderResponse": "Нет ответа от провайдера", "noProviderSelected": "Провайдер не выбран" } diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 65bf13b93..1bea61beb 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "Nenašla sa žiadna zodpovedajúca verzia", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index a1f5035f9..92ddd382d 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 49fd61158..3a27bdfb6 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 5917b6a6e..677228d56 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "Geçersiz tanımlayıcı", "noMatchingVersion": "Eşleşen sürüm bulunamadı", "noReleasesFound": "Hiçbir sürüm bulunamadı", - "noProviderSeleceted": "Hiçbir sağlayıcı seçilmedi", "noProviderResponse": "Sağlayıcıdan yanıt alınamadı", "noProviderSelected": "Hiçbir sağlayıcı seçilmedi" } diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 27e9bd0ae..cf395ab0e 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index d09cd5504..269fda1ec 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 30ce2dfe3..2933d2080 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -3205,7 +3205,6 @@ "invalidIdentifier": "", "noMatchingVersion": "找不到匹配的版本", "noReleasesFound": "", - "noProviderSeleceted": "", "noProviderResponse": "", "noProviderSelected": "" } diff --git a/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx index de3658b98..bf310c4c1 100644 --- a/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx +++ b/packages/widgets/src/_inputs/widget-multiReleasesRepositories-input.tsx @@ -204,7 +204,7 @@ export const WidgetMultiReleasesRepositoriesInput = ({ }} /> - + {providerName} diff --git a/packages/widgets/src/immich/album-carousel/component.tsx b/packages/widgets/src/immich/album-carousel/component.tsx index a8bf09051..9b18dfb89 100644 --- a/packages/widgets/src/immich/album-carousel/component.tsx +++ b/packages/widgets/src/immich/album-carousel/component.tsx @@ -31,6 +31,10 @@ export default function ImmichAlbumCarouselWidget({ return options.randomizePhotos ? shuffle(assets) : assets; }, [album?.assets, options.randomizePhotos]); + useEffect(() => { + setCurrentPhotoIndex(0); + }, [photoAssets]); + if (!options.albumId) { return ; }