Compare commits
10
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c3b584bd2 | ||
|
|
e3cf680cbd | ||
|
|
24989ddd16 | ||
|
|
8cd9e8c826 | ||
|
|
5b91687912 | ||
|
|
a3df31ff05 | ||
|
|
c5c9daf5a5 | ||
|
|
ab0e878fbf | ||
|
|
885be1b9a1 | ||
|
|
0f8a86fdde |
No files matched your search
@@ -39,13 +39,26 @@ import { immichServerStatsWidget } from '../../widgets/immich-server-stats';
|
||||
'Scroll down to "API Keys"',
|
||||
'Click "New API Key"',
|
||||
'Enter a name, e.g. "Homarr"',
|
||||
(<span>
|
||||
Select the following permissions:{" "}
|
||||
<code>album.read</code>,{" "}
|
||||
<code>user.read</code>,{" "}
|
||||
<code>server.statistics</code>,{" "}
|
||||
<code>asset.download</code>
|
||||
</span>),
|
||||
(
|
||||
|
||||
<span>
|
||||
|
||||
Select the following permissions:{" "}
|
||||
<code>album.statistics</code>,{" "}
|
||||
<code>album.read</code>,{" "}
|
||||
<code>album.create</code>,{" "}
|
||||
<code>user.read</code>,{" "}
|
||||
<code>user.update</code>,{" "}
|
||||
<code>asset.read</code>,{" "}
|
||||
<code>asset.download</code>,{" "}
|
||||
<code>asset.statistics</code>,{" "}
|
||||
<code>server.statistics</code>,{" "}
|
||||
<code>server.about</code>.
|
||||
<br />
|
||||
Additional permissions may be required depending on your Immich version. If you encounter authorization errors, grant any missing permissions requested by the server.
|
||||
</span>
|
||||
|
||||
),Ï
|
||||
'Create the integration in Homarr and copy the API key to there'
|
||||
]
|
||||
}]} />
|
||||
}]} />
|
||||
@@ -1,40 +1,48 @@
|
||||
---
|
||||
title: 'Unifi Controller'
|
||||
title: "Unifi Controller"
|
||||
description: "Unifi Controller is a network management platform for Unifi devices."
|
||||
hide_title: true
|
||||
---
|
||||
|
||||
import { IntegrationHeader } from '@site/src/components/integrations/header';
|
||||
import { IntegrationCapabilites } from '@site/src/components/integrations/widgets';
|
||||
import { AddingIntegration } from '@site/src/components/integrations/adding';
|
||||
import {IntegrationSecrets} from '@site/src/components/integrations/secrets';
|
||||
import { IntegrationHeader } from "@site/src/components/integrations/header";
|
||||
import { IntegrationCapabilites } from "@site/src/components/integrations/widgets";
|
||||
import { AddingIntegration } from "@site/src/components/integrations/adding";
|
||||
import { IntegrationSecrets } from "@site/src/components/integrations/secrets";
|
||||
import { IconTopologyFull } from "@tabler/icons-react";
|
||||
import { unifiControllerIntegration } from '.';
|
||||
import { networkControllerSummaryWidget } from '@site/docs/widgets/network-controller-summary';
|
||||
import { networkControllerStatusWidget } from '@site/docs/widgets/network-controller-status';
|
||||
import { unifiControllerIntegration } from ".";
|
||||
import { networkControllerSummaryWidget } from "@site/docs/widgets/network-controller-summary";
|
||||
import { networkControllerStatusWidget } from "@site/docs/widgets/network-controller-status";
|
||||
|
||||
|
||||
<IntegrationHeader
|
||||
integration={unifiControllerIntegration}
|
||||
categories={['Network controller']}
|
||||
/>
|
||||
<IntegrationHeader integration={unifiControllerIntegration} categories={["Network controller"]} />
|
||||
|
||||
This integration is using the [node-unifi](https://www.npmjs.com/package/node-unifi) library under the hood to connect to the Unifi Controller.
|
||||
Therfore it should support CloudKey Gen1, CloudKey Gen2, UnifiOS-based UDM-Pro controllers as well as self-hosted UniFi controllers.
|
||||
|
||||
### Widgets & Capabilities
|
||||
|
||||
<IntegrationCapabilites
|
||||
items={[
|
||||
{ widget: networkControllerSummaryWidget },
|
||||
{ widget: networkControllerStatusWidget}
|
||||
]}
|
||||
items={[{ widget: networkControllerSummaryWidget }, { widget: networkControllerStatusWidget }]}
|
||||
/>
|
||||
|
||||
### Adding the integration
|
||||
|
||||
<AddingIntegration />
|
||||
|
||||
Use the local HTTPS address of your controller:
|
||||
|
||||
- UniFi OS consoles such as Dream Router, Dream Machine, Cloud Gateway, and CloudKey use `https://<host>` (port 443).
|
||||
- Self-hosted UniFi Network Servers normally use `https://<host>:8443`.
|
||||
- If you omit the port, Homarr tries port 443 first and then port 8443 when the first port cannot be reached.
|
||||
|
||||
Use a local administrator account. Cloud-only accounts and accounts with multi-factor authentication are not supported by the underlying client.
|
||||
|
||||
### Secrets
|
||||
<IntegrationSecrets secrets={[{
|
||||
credentials: ['username', 'password'],
|
||||
steps: []
|
||||
}]} />
|
||||
|
||||
<IntegrationSecrets
|
||||
secrets={[
|
||||
{
|
||||
credentials: ["username", "password"],
|
||||
steps: [],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
@@ -32,7 +32,7 @@
|
||||
"@scalar/api-reference-react": "catalog:",
|
||||
"@signalwire/docusaurus-plugin-llms-txt": "^1.2.2",
|
||||
"@tabler/icons-react": "catalog:",
|
||||
"@tailwindcss/postcss": "^4.3.1",
|
||||
"@tailwindcss/postcss": "^4.3.2",
|
||||
"clsx": "catalog:",
|
||||
"dayjs": "catalog:",
|
||||
"docusaurus-plugin-image-zoom": "^3.0.1",
|
||||
@@ -44,7 +44,7 @@
|
||||
"react": "catalog:",
|
||||
"react-dom": "catalog:",
|
||||
"swiper": "^12.2.0",
|
||||
"tailwindcss": "^4.3.1"
|
||||
"tailwindcss": "^4.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "^3.10.1",
|
||||
|
||||
@@ -60,8 +60,8 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/tags/connections"
|
||||
| "/docs/tags/custom-widgets"
|
||||
| "/docs/tags/customization"
|
||||
| "/docs/tags/data-sources"
|
||||
| "/docs/tags/data"
|
||||
| "/docs/tags/data-sources"
|
||||
| "/docs/tags/database"
|
||||
| "/docs/tags/developer"
|
||||
| "/docs/tags/development"
|
||||
@@ -99,8 +99,8 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/tags/redis"
|
||||
| "/docs/tags/responsive"
|
||||
| "/docs/tags/roles"
|
||||
| "/docs/tags/search-engines"
|
||||
| "/docs/tags/search"
|
||||
| "/docs/tags/search-engines"
|
||||
| "/docs/tags/secrets"
|
||||
| "/docs/tags/security"
|
||||
| "/docs/tags/self-signed"
|
||||
@@ -132,15 +132,6 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/advanced/running-as-different-user"
|
||||
| "/docs/advanced/single-sign-on"
|
||||
| "/docs/advanced/styling"
|
||||
| "/docs/category/advanced"
|
||||
| "/docs/category/community"
|
||||
| "/docs/category/developer-guides"
|
||||
| "/docs/category/getting-started"
|
||||
| "/docs/category/installation-1"
|
||||
| "/docs/category/installation"
|
||||
| "/docs/category/integrations"
|
||||
| "/docs/category/management"
|
||||
| "/docs/category/widgets"
|
||||
| "/docs/community/donate"
|
||||
| "/docs/community/faq"
|
||||
| "/docs/community/get-in-touch"
|
||||
@@ -168,6 +159,7 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/integrations/archiveteam-warrior"
|
||||
| "/docs/integrations/aria2"
|
||||
| "/docs/integrations/audiobookshelf"
|
||||
| "/docs/integrations/bazarr"
|
||||
| "/docs/integrations/beszel"
|
||||
| "/docs/integrations/coolify"
|
||||
| "/docs/integrations/dash-dot"
|
||||
@@ -192,6 +184,7 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/integrations/opnsense"
|
||||
| "/docs/integrations/overseerr"
|
||||
| "/docs/integrations/paperless-ngx"
|
||||
| "/docs/integrations/patchmon"
|
||||
| "/docs/integrations/peanut"
|
||||
| "/docs/integrations/pi-hole"
|
||||
| "/docs/integrations/plex"
|
||||
@@ -205,9 +198,11 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/integrations/slskd"
|
||||
| "/docs/integrations/sonarr"
|
||||
| "/docs/integrations/speedtest-tracker"
|
||||
| "/docs/integrations/synology"
|
||||
| "/docs/integrations/tdarr"
|
||||
| "/docs/integrations/technitium-dns"
|
||||
| "/docs/integrations/tracearr"
|
||||
| "/docs/integrations/traefik"
|
||||
| "/docs/integrations/transmission"
|
||||
| "/docs/integrations/truenas"
|
||||
| "/docs/integrations/umami"
|
||||
@@ -230,6 +225,7 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/widgets/anchor-note"
|
||||
| "/docs/widgets/app"
|
||||
| "/docs/widgets/audio-stats"
|
||||
| "/docs/widgets/bazarr"
|
||||
| "/docs/widgets/beszel-alerts"
|
||||
| "/docs/widgets/beszel-system-grid"
|
||||
| "/docs/widgets/beszel-system-stats"
|
||||
@@ -249,6 +245,7 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/widgets/immich-album-carousel"
|
||||
| "/docs/widgets/immich-server-stats"
|
||||
| "/docs/widgets/indexer-manager"
|
||||
| "/docs/widgets/media-missing"
|
||||
| "/docs/widgets/media-releases"
|
||||
| "/docs/widgets/media-request-list"
|
||||
| "/docs/widgets/media-request-stats"
|
||||
@@ -260,15 +257,18 @@ export type HomarrDocumentationPath =
|
||||
| "/docs/widgets/notebook"
|
||||
| "/docs/widgets/notifications"
|
||||
| "/docs/widgets/paperless-ngx"
|
||||
| "/docs/widgets/patchmon"
|
||||
| "/docs/widgets/releases"
|
||||
| "/docs/widgets/rss-feed"
|
||||
| "/docs/widgets/smart-home-entity-state"
|
||||
| "/docs/widgets/smart-home-execute-automation"
|
||||
| "/docs/widgets/speedtest-tracker"
|
||||
| "/docs/widgets/stock-price"
|
||||
| "/docs/widgets/system-disks"
|
||||
| "/docs/widgets/system-resources"
|
||||
| "/docs/widgets/timetable"
|
||||
| "/docs/widgets/tracearr"
|
||||
| "/docs/widgets/traefik"
|
||||
| "/docs/widgets/umami"
|
||||
| "/docs/widgets/ups"
|
||||
| "/docs/widgets/uptime-kuma"
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
import { describe, expect, test, vi } from "vitest";
|
||||
|
||||
vi.hoisted(() => {
|
||||
process.env.SKIP_ENV_VALIDATION = "true";
|
||||
process.env.SECRET_ENCRYPTION_KEY = "ff3f4f7ce30e870c9630de9e5d244ffa81101a24ed0dfe5f064beb53a7e684f1";
|
||||
process.env.ENABLE_DNS_CACHING = "false";
|
||||
});
|
||||
|
||||
const controllerCtor = vi.fn();
|
||||
const controllerLogin = vi.fn().mockResolvedValue(true);
|
||||
|
||||
vi.mock("@homarr/redis", () => ({
|
||||
createGetSetChannel: () => ({
|
||||
getAsync: vi.fn().mockResolvedValue(null),
|
||||
setAsync: vi.fn().mockResolvedValue(undefined),
|
||||
removeAsync: vi.fn().mockResolvedValue(undefined),
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock("@homarr/core/infrastructure/logs", () => ({
|
||||
createLogger: () => ({ debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() }),
|
||||
ErrorWithMetadata: class extends Error {},
|
||||
}));
|
||||
|
||||
vi.mock("@homarr/core/infrastructure/http", () => ({
|
||||
createCustomCheckServerIdentity: () => (() => undefined) as never,
|
||||
fetchWithTrustedCertificatesAsync: vi.fn(),
|
||||
createAxiosCertificateInstanceAsync: vi.fn().mockResolvedValue({}),
|
||||
createCertificateAgentAsync: vi.fn().mockResolvedValue(undefined),
|
||||
}));
|
||||
|
||||
vi.mock("@homarr/core/infrastructure/certificates", () => ({
|
||||
getTrustedCertificateHostnamesAsync: vi.fn().mockResolvedValue([]),
|
||||
getAllTrustedCertificatesAsync: vi.fn().mockResolvedValue([]),
|
||||
}));
|
||||
|
||||
vi.mock("axios", () => ({
|
||||
AxiosError: Error,
|
||||
default: {
|
||||
create: vi.fn().mockReturnValue({}),
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock("http-cookie-agent/http", () => ({
|
||||
HttpCookieAgent: class {},
|
||||
HttpsCookieAgent: class {},
|
||||
}));
|
||||
|
||||
vi.mock("@homarr/node-unifi", () => {
|
||||
class FakeController {
|
||||
public options: Record<string, unknown>;
|
||||
constructor(options: Record<string, unknown>) {
|
||||
this.options = options;
|
||||
controllerCtor(options);
|
||||
}
|
||||
public async login(): Promise<true> {
|
||||
return await controllerLogin(this.options.port);
|
||||
}
|
||||
public async getSitesStats(): Promise<unknown[]> {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
return { default: { Controller: FakeController } };
|
||||
});
|
||||
|
||||
import { UnifiControllerIntegration } from "../unifi-controller-integration";
|
||||
|
||||
const createIntegration = (url: string) =>
|
||||
new UnifiControllerIntegration({
|
||||
id: "test-unifi",
|
||||
name: "Test Unifi",
|
||||
url,
|
||||
externalUrl: null,
|
||||
decryptedSecrets: [
|
||||
{ kind: "username", value: "admin" },
|
||||
{ kind: "password", value: "secret" },
|
||||
],
|
||||
});
|
||||
|
||||
describe("UnifiControllerIntegration port resolution", () => {
|
||||
test("a URL without a port uses the UniFi OS port 443", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin.mockClear().mockResolvedValue(true);
|
||||
await createIntegration("http://192.168.1.1").getNetworkSummaryAsync();
|
||||
|
||||
expect(controllerCtor).toHaveBeenCalledTimes(1);
|
||||
expect(controllerCtor).toHaveBeenCalledWith(expect.objectContaining({ host: "192.168.1.1", port: 443 }));
|
||||
});
|
||||
|
||||
test("a connection failure on port 443 falls back to the self-hosted controller port 8443", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin
|
||||
.mockClear()
|
||||
.mockRejectedValueOnce(Object.assign(new Error("connect ECONNREFUSED"), { isAxiosError: true }))
|
||||
.mockResolvedValueOnce(true);
|
||||
|
||||
await createIntegration("http://controller.lan").getNetworkSummaryAsync();
|
||||
|
||||
expect(controllerCtor).toHaveBeenNthCalledWith(1, expect.objectContaining({ port: 443 }));
|
||||
expect(controllerCtor).toHaveBeenNthCalledWith(2, expect.objectContaining({ port: 8443 }));
|
||||
});
|
||||
|
||||
test("https://controller.lan:8443 keeps the user-specified port", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin.mockClear().mockResolvedValue(true);
|
||||
await createIntegration("https://controller.lan:8443").getNetworkSummaryAsync();
|
||||
|
||||
expect(controllerCtor).toHaveBeenCalledWith(expect.objectContaining({ host: "controller.lan", port: 8443 }));
|
||||
});
|
||||
|
||||
test("https://192.168.1.1:8443 keeps the user-specified port", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin.mockClear().mockResolvedValue(true);
|
||||
await createIntegration("https://192.168.1.1:8443").getNetworkSummaryAsync();
|
||||
|
||||
expect(controllerCtor).toHaveBeenCalledWith(expect.objectContaining({ host: "192.168.1.1", port: 8443 }));
|
||||
});
|
||||
|
||||
test("an unusual port like 10443 is honored verbatim", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin.mockClear().mockResolvedValue(true);
|
||||
await createIntegration("https://192.168.1.1:10443").getNetworkSummaryAsync();
|
||||
|
||||
expect(controllerCtor).toHaveBeenCalledWith(expect.objectContaining({ host: "192.168.1.1", port: 10443 }));
|
||||
});
|
||||
|
||||
test("an authentication failure on port 443 does not try another port", async () => {
|
||||
controllerCtor.mockClear();
|
||||
controllerLogin.mockClear().mockRejectedValueOnce(
|
||||
Object.assign(new Error("Request failed with status code 401"), {
|
||||
isAxiosError: true,
|
||||
response: { status: 401 },
|
||||
}),
|
||||
);
|
||||
|
||||
await expect(createIntegration("https://controller.lan").getNetworkSummaryAsync()).rejects.toThrow();
|
||||
|
||||
expect(controllerCtor).toHaveBeenCalledTimes(1);
|
||||
expect(controllerCtor).toHaveBeenCalledWith(expect.objectContaining({ port: 443 }));
|
||||
});
|
||||
});
|
||||
@@ -2,7 +2,6 @@ import type tls from "node:tls";
|
||||
import axios from "axios";
|
||||
import { HttpCookieAgent, HttpsCookieAgent } from "http-cookie-agent/http";
|
||||
|
||||
import { getPortFromUrl } from "@homarr/common";
|
||||
import {
|
||||
getAllTrustedCertificatesAsync,
|
||||
getTrustedCertificateHostnamesAsync,
|
||||
@@ -67,26 +66,53 @@ export class UnifiControllerIntegration extends Integration implements NetworkCo
|
||||
checkServerIdentity: createCustomCheckServerIdentity(await getTrustedCertificateHostnamesAsync()),
|
||||
};
|
||||
|
||||
const client = new Unifi.Controller({
|
||||
host: url.hostname,
|
||||
port: getPortFromUrl(url),
|
||||
username: this.getSecretValue("username"),
|
||||
password: this.getSecretValue("password"),
|
||||
createAxiosInstance({ cookies }) {
|
||||
return axios.create({
|
||||
adapter: "http",
|
||||
httpAgent: new HttpCookieAgent({ cookies }),
|
||||
httpsAgent: new HttpsCookieAgent({
|
||||
cookies,
|
||||
requestCert: true,
|
||||
...certificateOptions,
|
||||
}),
|
||||
});
|
||||
},
|
||||
});
|
||||
// ponytail: node-unifi always connects over HTTPS, regardless of the protocol in the
|
||||
// integration URL. UniFi OS consoles use port 443 while self-hosted controllers normally
|
||||
// use 8443. If no port was provided, try both without hiding authentication errors.
|
||||
const ports = url.port ? [Number(url.port)] : [443, 8443];
|
||||
const createClientForPortAsync = async (port: number) => {
|
||||
const client = new Unifi.Controller({
|
||||
host: url.hostname,
|
||||
port,
|
||||
username: this.getSecretValue("username"),
|
||||
password: this.getSecretValue("password"),
|
||||
createAxiosInstance({ cookies }) {
|
||||
return axios.create({
|
||||
adapter: "http",
|
||||
httpAgent: new HttpCookieAgent({ cookies }),
|
||||
httpsAgent: new HttpsCookieAgent({
|
||||
cookies,
|
||||
requestCert: true,
|
||||
...certificateOptions,
|
||||
}),
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
await client.login(this.getSecretValue("username"), this.getSecretValue("password"), null);
|
||||
return client;
|
||||
await client.login(this.getSecretValue("username"), this.getSecretValue("password"), null);
|
||||
return client;
|
||||
};
|
||||
|
||||
for (const [index, port] of ports.entries()) {
|
||||
try {
|
||||
return await createClientForPortAsync(port);
|
||||
} catch (error) {
|
||||
const isLastPort = index === ports.length - 1;
|
||||
if (isLastPort || !this.isPortFallbackError(error)) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error("Unable to connect to the UniFi controller");
|
||||
}
|
||||
|
||||
private isPortFallbackError(error: unknown) {
|
||||
if (typeof error === "object" && error !== null && "isAxiosError" in error && error.isAxiosError === true) {
|
||||
return !("response" in error) || error.response === undefined;
|
||||
}
|
||||
|
||||
return error instanceof Error && error.message === "failed to detect UniFiOS status";
|
||||
}
|
||||
|
||||
private getStatusValueOverAllSites<S extends HealthSubsystem>(
|
||||
|
||||
@@ -732,8 +732,8 @@
|
||||
"displayType": "",
|
||||
"jsonPath": "",
|
||||
"jsonPathHint": "",
|
||||
"label": "",
|
||||
"unit": "",
|
||||
"label": "Étiquette",
|
||||
"unit": "Unité",
|
||||
"mappings": "",
|
||||
"tablePath": "",
|
||||
"tablePathHint": "",
|
||||
@@ -755,14 +755,14 @@
|
||||
"striped": "",
|
||||
"compact": "",
|
||||
"maxHeight": "",
|
||||
"color": "",
|
||||
"color": "Couleur",
|
||||
"buttonLabel": "",
|
||||
"buttonColor": "",
|
||||
"confirmText": "",
|
||||
"confirmText": "Texte de confirmation",
|
||||
"confirmTextHint": "",
|
||||
"successMessage": "",
|
||||
"successMessage": "Message de réussite",
|
||||
"successMessageHint": "",
|
||||
"enabled": "",
|
||||
"enabled": "Activé",
|
||||
"template": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
@@ -1017,13 +1017,13 @@
|
||||
"timetable": "",
|
||||
"photoService": "",
|
||||
"documents": "",
|
||||
"notes": "",
|
||||
"mediaMonitoring": "",
|
||||
"speedtest": "",
|
||||
"notes": "Notes",
|
||||
"mediaMonitoring": "Supervision",
|
||||
"speedtest": "Test de débit",
|
||||
"analytics": "",
|
||||
"vpn": "",
|
||||
"mediaLibrary": "",
|
||||
"uptimeMonitoring": ""
|
||||
"mediaLibrary": "Bibliothèque de médias",
|
||||
"uptimeMonitoring": "Surveillance des disponibilités"
|
||||
},
|
||||
"testConnection": {
|
||||
"action": {
|
||||
@@ -1298,7 +1298,7 @@
|
||||
"newLabel": "Nouvelle clé privée"
|
||||
},
|
||||
"slug": {
|
||||
"label": "",
|
||||
"label": "Slug de la page de statut",
|
||||
"newLabel": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1599,7 +1599,7 @@
|
||||
"menu": {
|
||||
"label": {
|
||||
"settings": "Impostazioni",
|
||||
"refresh": "",
|
||||
"refresh": "Aggiorna",
|
||||
"options": "Opzioni",
|
||||
"actions": "Azioni"
|
||||
}
|
||||
@@ -1904,7 +1904,7 @@
|
||||
"noStation": "Nessuna stazione selezionata",
|
||||
"option": {
|
||||
"baseUrl": {
|
||||
"label": ""
|
||||
"label": "Url Search.ch"
|
||||
},
|
||||
"station": {
|
||||
"label": "Stazione"
|
||||
@@ -2791,8 +2791,8 @@
|
||||
"description": "Visualizza la data dell'immagine e l'indice corrente nella parte inferiore della presentazione"
|
||||
},
|
||||
"randomizePhotos": {
|
||||
"label": "",
|
||||
"description": ""
|
||||
"label": "Immagini casuali",
|
||||
"description": "Mostra le foto in ordine casuale invece di iniziare sempre con lo stesso ordine degli album."
|
||||
}
|
||||
},
|
||||
"description": "Presentazione delle immagini nel tuo album Immich",
|
||||
@@ -3158,7 +3158,7 @@
|
||||
"label": "Provider"
|
||||
},
|
||||
"providerUrl": {
|
||||
"label": ""
|
||||
"label": "URL Provider"
|
||||
},
|
||||
"identifier": {
|
||||
"label": "Identificatore",
|
||||
@@ -3209,10 +3209,10 @@
|
||||
"tooltip": "Impossibile analizzare il provider, impostarlo manualmente dopo aver importato le immagini"
|
||||
},
|
||||
"tokens": {
|
||||
"label": "",
|
||||
"token": "",
|
||||
"configured": "",
|
||||
"notConfigured": "",
|
||||
"label": "Token Provider",
|
||||
"token": "Token",
|
||||
"configured": "Token configurato",
|
||||
"notConfigured": "Nessun token impostato",
|
||||
"save": "Salva"
|
||||
}
|
||||
}
|
||||
@@ -3236,9 +3236,9 @@
|
||||
"invalidIdentifier": "Identificatore non valido",
|
||||
"noMatchingVersion": "Nessuna versione corrispondente trovata",
|
||||
"noReleasesFound": "Nessun rilascio trovato",
|
||||
"noProviderSelected": "",
|
||||
"noProviderSelected": "Nessun provider selezionato",
|
||||
"noProviderResponse": "Nessuna risposta dal provider",
|
||||
"unexpected": ""
|
||||
"unexpected": "Errore provider inaspettato"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3132,7 +3132,7 @@
|
||||
"label": ""
|
||||
},
|
||||
"showOnlyIcon": {
|
||||
"label": ""
|
||||
"label": "Показати тільки іконку"
|
||||
},
|
||||
"topReleases": {
|
||||
"label": "",
|
||||
@@ -3229,7 +3229,7 @@
|
||||
"openReleasePage": "",
|
||||
"releaseDescription": "",
|
||||
"projectDescription": "",
|
||||
"created": "",
|
||||
"created": "Створено",
|
||||
"error": {
|
||||
"label": "",
|
||||
"messages": {
|
||||
@@ -3350,7 +3350,7 @@
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"latestResult": "",
|
||||
"latestResult": "Останній результат",
|
||||
"averages": "",
|
||||
"tests": "",
|
||||
"recentResults": "",
|
||||
|
||||
Generated
+114
-107
@@ -442,7 +442,7 @@ catalogs:
|
||||
specifier: ^1.18.0
|
||||
version: 1.18.0
|
||||
posthog-js:
|
||||
specifier: ^1.396.1
|
||||
specifier: ^1.396.2
|
||||
version: 1.396.3
|
||||
posthog-node:
|
||||
specifier: ^4.18.0
|
||||
@@ -520,8 +520,8 @@ catalogs:
|
||||
specifier: ^6.0.3
|
||||
version: 6.0.3
|
||||
undici:
|
||||
specifier: 7.27.2
|
||||
version: 7.27.2
|
||||
specifier: 7.28.0
|
||||
version: 7.28.0
|
||||
use-deep-compare-effect:
|
||||
specifier: ^1.8.1
|
||||
version: 1.8.1
|
||||
@@ -702,7 +702,7 @@ importers:
|
||||
version: 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
||||
'@scalar/api-reference-react':
|
||||
specifier: 'catalog:'
|
||||
version: 0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)
|
||||
version: 0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@signalwire/docusaurus-plugin-llms-txt':
|
||||
specifier: ^1.2.2
|
||||
version: 1.2.2(@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))
|
||||
@@ -710,8 +710,8 @@ importers:
|
||||
specifier: 'catalog:'
|
||||
version: 3.44.0(react@19.2.7)
|
||||
'@tailwindcss/postcss':
|
||||
specifier: ^4.3.1
|
||||
version: 4.3.1
|
||||
specifier: ^4.3.2
|
||||
version: 4.3.2
|
||||
clsx:
|
||||
specifier: 'catalog:'
|
||||
version: 2.1.1
|
||||
@@ -746,8 +746,8 @@ importers:
|
||||
specifier: ^12.2.0
|
||||
version: 12.2.0
|
||||
tailwindcss:
|
||||
specifier: ^4.3.1
|
||||
version: 4.3.1
|
||||
specifier: ^4.3.2
|
||||
version: 4.3.2
|
||||
devDependencies:
|
||||
'@docusaurus/module-type-aliases':
|
||||
specifier: ^3.10.1
|
||||
@@ -913,7 +913,7 @@ importers:
|
||||
version: 1.29.0(zod@4.4.3)
|
||||
'@scalar/api-reference-react':
|
||||
specifier: 'catalog:'
|
||||
version: 0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)
|
||||
version: 0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@tabler/icons-react':
|
||||
specifier: 'catalog:'
|
||||
version: 3.44.0(react@19.2.7)
|
||||
@@ -1151,7 +1151,7 @@ importers:
|
||||
version: 2.2.6
|
||||
undici:
|
||||
specifier: 'catalog:'
|
||||
version: 7.27.2
|
||||
version: 7.28.0
|
||||
devDependencies:
|
||||
'@homarr/tsconfig':
|
||||
specifier: workspace:^0.1.0
|
||||
@@ -1500,7 +1500,7 @@ importers:
|
||||
version: 19.2.7(react@19.2.7)
|
||||
undici:
|
||||
specifier: 'catalog:'
|
||||
version: 7.27.2
|
||||
version: 7.28.0
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
@@ -1923,7 +1923,7 @@ importers:
|
||||
version: link:../image-proxy
|
||||
'@homarr/node-unifi':
|
||||
specifier: 'catalog:'
|
||||
version: 2.6.0(undici@7.27.2)
|
||||
version: 2.6.0(undici@7.28.0)
|
||||
'@homarr/redis':
|
||||
specifier: workspace:^0.1.0
|
||||
version: link:../redis
|
||||
@@ -1959,7 +1959,7 @@ importers:
|
||||
version: 2.2.2
|
||||
undici:
|
||||
specifier: 'catalog:'
|
||||
version: 7.27.2
|
||||
version: 7.28.0
|
||||
ws:
|
||||
specifier: 'catalog:'
|
||||
version: 8.21.0
|
||||
@@ -2264,7 +2264,7 @@ importers:
|
||||
version: 2.2.6
|
||||
undici:
|
||||
specifier: 'catalog:'
|
||||
version: 7.27.2
|
||||
version: 7.28.0
|
||||
zod:
|
||||
specifier: 'catalog:'
|
||||
version: 4.4.3
|
||||
@@ -7172,69 +7172,69 @@ packages:
|
||||
'@tabler/icons@3.44.0':
|
||||
resolution: {integrity: sha512-Wn0AOZG9sg0L+bjfMqq4eNhC6pQjIrk94LvvWYNYkY8KH8wC3YILRzQlrnVJc4FUeMxH/AK97QsYCX35H3LndA==}
|
||||
|
||||
'@tailwindcss/node@4.3.1':
|
||||
resolution: {integrity: sha512-6NDaqRoAMSXD1mr/RXu0HBvNE9a2n5tHPsxu9XHLws8o4Twes5rBM2205SUUiJ9goAtadrN6xTGX0UDEwp/N4A==}
|
||||
'@tailwindcss/node@4.3.2':
|
||||
resolution: {integrity: sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg==}
|
||||
|
||||
'@tailwindcss/oxide-android-arm64@4.3.1':
|
||||
resolution: {integrity: sha512-SVlyf61g374l5cHyg8x9kf5xmLcOaxvOTsbsqDnSsDJaKOEFZ7GCvi84VAVGpxojYOs1+3K6M0UjXfqPU8vmOQ==}
|
||||
'@tailwindcss/oxide-android-arm64@4.3.2':
|
||||
resolution: {integrity: sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@tailwindcss/oxide-darwin-arm64@4.3.1':
|
||||
resolution: {integrity: sha512-hVnWLwv+e/l7c4WKyVtHVrIPvYdqWHjRB3MDIqARynzFtnQg85kmQEFCbV9Ja0VVx4xXTIiDWY60Y7iz/iNoDA==}
|
||||
'@tailwindcss/oxide-darwin-arm64@4.3.2':
|
||||
resolution: {integrity: sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@tailwindcss/oxide-darwin-x64@4.3.1':
|
||||
resolution: {integrity: sha512-Cf7abu0WVgbhU7ANgPUnSAvm7nCvMweusHb8FnaHlLfv/Caq4GYaEZg7ZImzzmjx4lIAfuS8q+eLIS7A7IzxIg==}
|
||||
'@tailwindcss/oxide-darwin-x64@4.3.2':
|
||||
resolution: {integrity: sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@tailwindcss/oxide-freebsd-x64@4.3.1':
|
||||
resolution: {integrity: sha512-ZZqzX2Y+GXtXXfqSfpJhDm60OoZfvLHLCgm+J7NVqgHHJjG/m9ugZI77RwTsVd4fnBJuCFP6Ae6kTJb71UdS8g==}
|
||||
'@tailwindcss/oxide-freebsd-x64@4.3.2':
|
||||
resolution: {integrity: sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.3.1':
|
||||
resolution: {integrity: sha512-/Ah/xik0LaMYfv9DZ0S/t4pBlBNYOcqtRwusjgovHkvT8ixueWCLyJjsaF5kQIckjb4IT8Q6K6p/iPmZMixYgg==}
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2':
|
||||
resolution: {integrity: sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.3.1':
|
||||
resolution: {integrity: sha512-gqdFoVJlw444GvpnheZLHmvTzSxI/cOUUh2KSNejQjTcYkW062SVD+En0rUgD+QV91bz1XGIGtt1HJd48xUGbQ==}
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.3.2':
|
||||
resolution: {integrity: sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.3.1':
|
||||
resolution: {integrity: sha512-Bwv9KwOvE0VKa86xPFif9b9c3Y1NxOV1P0gLti/IYaWEsQYZXDlxfGEtA8mdDZ7SG3wyNXAWYT5SIn3giL57oA==}
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.3.2':
|
||||
resolution: {integrity: sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.3.1':
|
||||
resolution: {integrity: sha512-Ymi8O8T15HYQdOUWUtTI6ldN0neHP85FC+Qz32xTcZ7iJXtem/x8ITev0o1e9e5rkqj4lONZfTRLvkmin1+tKg==}
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.3.2':
|
||||
resolution: {integrity: sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.3.1':
|
||||
resolution: {integrity: sha512-M+P/91qJ6uILLw4k2G93GMDRAXj61SMvFQYt39AqvUqYgExXpLL5aepfns7sj4HiAQeolirQF9E0lzRvdf4zPQ==}
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.3.2':
|
||||
resolution: {integrity: sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.3.1':
|
||||
resolution: {integrity: sha512-zsM8uOeqvVGHsAXsJxsT28ttosFahLJKCLOTUBqRAtKnVgGSRitds9T432QiT8b77Yga7JIBkulIRRlJPtYhRA==}
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.3.2':
|
||||
resolution: {integrity: sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
cpu: [wasm32]
|
||||
bundledDependencies:
|
||||
@@ -7245,24 +7245,24 @@ packages:
|
||||
- '@emnapi/wasi-threads'
|
||||
- tslib
|
||||
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.3.1':
|
||||
resolution: {integrity: sha512-aiNvSq9BsVk8V513lDKlrCFAgf8qBMPZTpgEhInL+NwQqs97mYmupVMrPrgBBSL8Pv/0zXu9MrMF9rMun1ZeNg==}
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.3.2':
|
||||
resolution: {integrity: sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.3.1':
|
||||
resolution: {integrity: sha512-xDEyu1rg290472FEGaKHnzyDyh5QH+AlWvsU5hMoMtPpzmKlRI0jaYKCgSHDYtaQWZOYbMaduSyCwFwY4n1HmA==}
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.3.2':
|
||||
resolution: {integrity: sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ==}
|
||||
engines: {node: '>= 20'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@tailwindcss/oxide@4.3.1':
|
||||
resolution: {integrity: sha512-yVPyo8RNkabVr3O2EhHEE0Rewu7YKzc1DhIqfL46LKveFrmu9XbDazNOJY7/GRuvw1h6u3utWnR29H/p5JPlgA==}
|
||||
'@tailwindcss/oxide@4.3.2':
|
||||
resolution: {integrity: sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag==}
|
||||
engines: {node: '>= 20'}
|
||||
|
||||
'@tailwindcss/postcss@4.3.1':
|
||||
resolution: {integrity: sha512-dNJuNbdEJT/SWRuXTYP1WSamelsz3ztkUsdtWQPjrexysrTpaEPM40P/71knXiXLYEojqPOEGitVLLpPMS5T6A==}
|
||||
'@tailwindcss/postcss@4.3.2':
|
||||
resolution: {integrity: sha512-rjVWYCa7Ngbi5AarT6k8TkxUG3Wl1QKzHdIZVsjZSzf36Jmo2IKZt/NHRAwly8oDkbBOH0YTu+CHuf9jPxMc+g==}
|
||||
|
||||
'@tanstack/match-sorter-utils@8.19.4':
|
||||
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
|
||||
@@ -11177,6 +11177,7 @@ packages:
|
||||
|
||||
jiti@2.7.0:
|
||||
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
|
||||
hasBin: true
|
||||
|
||||
joi@17.13.3:
|
||||
resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
|
||||
@@ -14290,8 +14291,8 @@ packages:
|
||||
tailwind-merge@3.5.0:
|
||||
resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==}
|
||||
|
||||
tailwindcss@4.3.1:
|
||||
resolution: {integrity: sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q==}
|
||||
tailwindcss@4.3.2:
|
||||
resolution: {integrity: sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA==}
|
||||
|
||||
tapable@2.3.3:
|
||||
resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
|
||||
@@ -14661,6 +14662,10 @@ packages:
|
||||
resolution: {integrity: sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==}
|
||||
engines: {node: '>=20.18.1'}
|
||||
|
||||
undici@7.28.0:
|
||||
resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
|
||||
engines: {node: '>=20.18.1'}
|
||||
|
||||
undici@8.5.0:
|
||||
resolution: {integrity: sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==}
|
||||
engines: {node: '>=22.19.0'}
|
||||
@@ -18408,9 +18413,9 @@ snapshots:
|
||||
dependencies:
|
||||
'@hapi/hoek': 9.3.0
|
||||
|
||||
'@headlessui/tailwindcss@0.2.2(tailwindcss@4.3.1)':
|
||||
'@headlessui/tailwindcss@0.2.2(tailwindcss@4.3.2)':
|
||||
dependencies:
|
||||
tailwindcss: 4.3.1
|
||||
tailwindcss: 4.3.2
|
||||
|
||||
'@headlessui/vue@1.7.23(vue@3.5.35(typescript@6.0.3))':
|
||||
dependencies:
|
||||
@@ -18419,11 +18424,11 @@ snapshots:
|
||||
|
||||
'@homarr/gridstack@1.12.0': {}
|
||||
|
||||
'@homarr/node-unifi@2.6.0(undici@7.27.2)':
|
||||
'@homarr/node-unifi@2.6.0(undici@7.28.0)':
|
||||
dependencies:
|
||||
axios: 1.9.0
|
||||
eventemitter2: 6.4.9
|
||||
http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.27.2)
|
||||
http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.28.0)
|
||||
tough-cookie: 5.1.2
|
||||
ws: 8.21.0
|
||||
transitivePeerDependencies:
|
||||
@@ -20090,11 +20095,11 @@ snapshots:
|
||||
|
||||
'@rvf/set-get@7.0.1': {}
|
||||
|
||||
'@scalar/agent-chat@0.12.13(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)':
|
||||
'@scalar/agent-chat@0.12.13(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
|
||||
dependencies:
|
||||
'@ai-sdk/vue': 3.0.33(vue@3.5.35(typescript@6.0.3))(zod@4.4.3)
|
||||
'@scalar/api-client': 3.12.0(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/api-client': 3.12.0(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/icons': 0.7.3(typescript@6.0.3)
|
||||
'@scalar/json-magic': 0.12.17
|
||||
@@ -20128,17 +20133,17 @@ snapshots:
|
||||
- universal-cookie
|
||||
- zod
|
||||
|
||||
'@scalar/api-client@3.12.0(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)':
|
||||
'@scalar/api-client@3.12.0(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.1)
|
||||
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2)
|
||||
'@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
|
||||
'@scalar/blocks': 0.1.0(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/blocks': 0.1.0(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/icons': 0.7.3(typescript@6.0.3)
|
||||
'@scalar/oas-utils': 0.19.1(typescript@6.0.3)
|
||||
'@scalar/openapi-types': 0.9.1
|
||||
'@scalar/sidebar': 0.9.25(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/sidebar': 0.9.25(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/snippetz': 0.9.19
|
||||
'@scalar/themes': 0.16.2
|
||||
'@scalar/typebox': 0.1.3
|
||||
@@ -20176,9 +20181,9 @@ snapshots:
|
||||
- typescript
|
||||
- universal-cookie
|
||||
|
||||
'@scalar/api-reference-react@0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)':
|
||||
'@scalar/api-reference-react@0.9.49(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
|
||||
dependencies:
|
||||
'@scalar/api-reference': 1.62.0(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@scalar/api-reference': 1.62.0(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@scalar/types': 0.16.0
|
||||
react: 19.2.7
|
||||
transitivePeerDependencies:
|
||||
@@ -20198,19 +20203,19 @@ snapshots:
|
||||
- universal-cookie
|
||||
- zod
|
||||
|
||||
'@scalar/api-reference@1.62.0(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)':
|
||||
'@scalar/api-reference@1.62.0(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
|
||||
dependencies:
|
||||
'@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
|
||||
'@scalar/agent-chat': 0.12.13(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@scalar/api-client': 3.12.0(nprogress@0.2.0)(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/blocks': 0.1.0(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/agent-chat': 0.12.13(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
|
||||
'@scalar/api-client': 3.12.0(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/blocks': 0.1.0(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/code-highlight': 0.4.0
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/icons': 0.7.3(typescript@6.0.3)
|
||||
'@scalar/oas-utils': 0.19.1(typescript@6.0.3)
|
||||
'@scalar/schemas': 0.7.0
|
||||
'@scalar/sidebar': 0.9.25(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/sidebar': 0.9.25(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/snippetz': 0.9.19
|
||||
'@scalar/themes': 0.16.2
|
||||
'@scalar/types': 0.16.0
|
||||
@@ -20242,9 +20247,9 @@ snapshots:
|
||||
- universal-cookie
|
||||
- zod
|
||||
|
||||
'@scalar/blocks@0.1.0(tailwindcss@4.3.1)(typescript@6.0.3)':
|
||||
'@scalar/blocks@0.1.0(tailwindcss@4.3.2)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/icons': 0.7.3(typescript@6.0.3)
|
||||
'@scalar/snippetz': 0.9.19
|
||||
@@ -20280,11 +20285,11 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@scalar/components@0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)':
|
||||
'@scalar/components@0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@floating-ui/utils': 0.2.10
|
||||
'@floating-ui/vue': 1.1.9(vue@3.5.35(typescript@6.0.3))
|
||||
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.1)
|
||||
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2)
|
||||
'@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
|
||||
'@scalar/code-highlight': 0.4.0
|
||||
'@scalar/helpers': 0.9.0
|
||||
@@ -20342,9 +20347,9 @@ snapshots:
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/validation': 0.6.0
|
||||
|
||||
'@scalar/sidebar@0.9.25(tailwindcss@4.3.1)(typescript@6.0.3)':
|
||||
'@scalar/sidebar@0.9.25(tailwindcss@4.3.2)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.1)(typescript@6.0.3)
|
||||
'@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@6.0.3)
|
||||
'@scalar/helpers': 0.9.0
|
||||
'@scalar/icons': 0.7.3(typescript@6.0.3)
|
||||
'@scalar/themes': 0.16.2
|
||||
@@ -20821,7 +20826,7 @@ snapshots:
|
||||
|
||||
'@tabler/icons@3.44.0': {}
|
||||
|
||||
'@tailwindcss/node@4.3.1':
|
||||
'@tailwindcss/node@4.3.2':
|
||||
dependencies:
|
||||
'@jridgewell/remapping': 2.3.5
|
||||
enhanced-resolve: 5.21.6
|
||||
@@ -20829,66 +20834,66 @@ snapshots:
|
||||
lightningcss: 1.32.0
|
||||
magic-string: 0.30.21
|
||||
source-map-js: 1.2.1
|
||||
tailwindcss: 4.3.1
|
||||
tailwindcss: 4.3.2
|
||||
|
||||
'@tailwindcss/oxide-android-arm64@4.3.1':
|
||||
'@tailwindcss/oxide-android-arm64@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-darwin-arm64@4.3.1':
|
||||
'@tailwindcss/oxide-darwin-arm64@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-darwin-x64@4.3.1':
|
||||
'@tailwindcss/oxide-darwin-x64@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-freebsd-x64@4.3.1':
|
||||
'@tailwindcss/oxide-freebsd-x64@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.3.1':
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.3.1':
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.3.1':
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.3.1':
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.3.1':
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.3.1':
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.3.1':
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.3.1':
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.3.2':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide@4.3.1':
|
||||
'@tailwindcss/oxide@4.3.2':
|
||||
optionalDependencies:
|
||||
'@tailwindcss/oxide-android-arm64': 4.3.1
|
||||
'@tailwindcss/oxide-darwin-arm64': 4.3.1
|
||||
'@tailwindcss/oxide-darwin-x64': 4.3.1
|
||||
'@tailwindcss/oxide-freebsd-x64': 4.3.1
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.1
|
||||
'@tailwindcss/oxide-linux-arm64-gnu': 4.3.1
|
||||
'@tailwindcss/oxide-linux-arm64-musl': 4.3.1
|
||||
'@tailwindcss/oxide-linux-x64-gnu': 4.3.1
|
||||
'@tailwindcss/oxide-linux-x64-musl': 4.3.1
|
||||
'@tailwindcss/oxide-wasm32-wasi': 4.3.1
|
||||
'@tailwindcss/oxide-win32-arm64-msvc': 4.3.1
|
||||
'@tailwindcss/oxide-win32-x64-msvc': 4.3.1
|
||||
'@tailwindcss/oxide-android-arm64': 4.3.2
|
||||
'@tailwindcss/oxide-darwin-arm64': 4.3.2
|
||||
'@tailwindcss/oxide-darwin-x64': 4.3.2
|
||||
'@tailwindcss/oxide-freebsd-x64': 4.3.2
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.2
|
||||
'@tailwindcss/oxide-linux-arm64-gnu': 4.3.2
|
||||
'@tailwindcss/oxide-linux-arm64-musl': 4.3.2
|
||||
'@tailwindcss/oxide-linux-x64-gnu': 4.3.2
|
||||
'@tailwindcss/oxide-linux-x64-musl': 4.3.2
|
||||
'@tailwindcss/oxide-wasm32-wasi': 4.3.2
|
||||
'@tailwindcss/oxide-win32-arm64-msvc': 4.3.2
|
||||
'@tailwindcss/oxide-win32-x64-msvc': 4.3.2
|
||||
|
||||
'@tailwindcss/postcss@4.3.1':
|
||||
'@tailwindcss/postcss@4.3.2':
|
||||
dependencies:
|
||||
'@alloc/quick-lru': 5.2.0
|
||||
'@tailwindcss/node': 4.3.1
|
||||
'@tailwindcss/oxide': 4.3.1
|
||||
postcss: 8.5.15
|
||||
tailwindcss: 4.3.1
|
||||
'@tailwindcss/node': 4.3.2
|
||||
'@tailwindcss/oxide': 4.3.2
|
||||
postcss: 8.5.16
|
||||
tailwindcss: 4.3.2
|
||||
|
||||
'@tanstack/match-sorter-utils@8.19.4':
|
||||
dependencies:
|
||||
@@ -24825,12 +24830,12 @@ snapshots:
|
||||
|
||||
http-cache-semantics@4.2.0: {}
|
||||
|
||||
http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.27.2):
|
||||
http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.28.0):
|
||||
dependencies:
|
||||
agent-base: 7.1.3
|
||||
tough-cookie: 5.1.2
|
||||
optionalDependencies:
|
||||
undici: 7.27.2
|
||||
undici: 7.28.0
|
||||
|
||||
http-deceiver@1.2.7: {}
|
||||
|
||||
@@ -28918,7 +28923,7 @@ snapshots:
|
||||
|
||||
tailwind-merge@3.5.0: {}
|
||||
|
||||
tailwindcss@4.3.1: {}
|
||||
tailwindcss@4.3.2: {}
|
||||
|
||||
tapable@2.3.3: {}
|
||||
|
||||
@@ -29309,6 +29314,8 @@ snapshots:
|
||||
|
||||
undici@7.27.2: {}
|
||||
|
||||
undici@7.28.0: {}
|
||||
|
||||
undici@8.5.0: {}
|
||||
|
||||
unhead@2.1.15:
|
||||
|
||||
+4
-2
@@ -93,7 +93,7 @@ catalog:
|
||||
"@types/video.js": ^7.3.58
|
||||
"@types/ws": ^8.18.1
|
||||
"@types/xml2js": ^0.4.14
|
||||
posthog-js: ^1.396.1
|
||||
posthog-js: ^1.396.2
|
||||
posthog-node: ^4.18.0
|
||||
"@vitejs/plugin-react": ^6.0.3
|
||||
"@vitest/coverage-v8": ^4.1.9
|
||||
@@ -179,7 +179,7 @@ catalog:
|
||||
turbo: ^2.10.0
|
||||
typescript: ^6.0.3
|
||||
vite: ^8.1.0
|
||||
undici: 7.27.2
|
||||
undici: 7.28.0
|
||||
use-deep-compare-effect: ^1.8.1
|
||||
video.js: ^8.23.9
|
||||
vite-tsconfig-paths: ^6.1.1
|
||||
@@ -205,6 +205,8 @@ minimumReleaseAgeExclude:
|
||||
- turbo@2.9.14
|
||||
# Renovate security update: form-data@4.0.6
|
||||
- form-data@4.0.6
|
||||
# Renovate security update: undici@7.28.0
|
||||
- undici@7.28.0
|
||||
overrides:
|
||||
"@babel/helpers@<7.26.10": ">=7.29.7"
|
||||
"@babel/runtime@<7.26.10": ">=7.29.7"
|
||||
|
||||
Reference in new issue
Block a user