chore(release): automatic release v1.45.0

This commit is contained in:
homarr-releases[bot]
2025-11-28 19:14:48 +00:00
committed by GitHub
57 changed files with 541 additions and 358 deletions

View File

@@ -33,6 +33,7 @@ body:
options: options:
# The below comment is used to insert a new version with on-release.yml # The below comment is used to insert a new version with on-release.yml
#NEXT_VERSION# #NEXT_VERSION#
- 1.44.0
- 1.43.1 - 1.43.1
- 1.43.0 - 1.43.0
- 1.42.1 - 1.42.1

View File

@@ -15,6 +15,21 @@
matchUpdateTypes: ["minor", "patch", "pin", "digest"], matchUpdateTypes: ["minor", "patch", "pin", "digest"],
automerge: true, automerge: true,
}, },
{
// disallow automerge for onlyBuiltDependencies
matchPackageNames: [
"@tree-sitter-grammars/tree-sitter-yaml",
"bcrypt",
"better-sqlite3",
"cpu-features",
"esbuild",
"sharp",
"ssh2",
"tree-sitter",
"tree-sitter-json",
],
automerge: false,
},
], ],
updateInternalDeps: true, updateInternalDeps: true,
rangeStrategy: "bump", rangeStrategy: "bump",

View File

@@ -1,4 +1,6 @@
name: "[Quality] Code Analysis" name: "[Quality] Code Analysis"
permissions:
contents: read
on: on:
pull_request: pull_request:

View File

@@ -1,4 +1,6 @@
name: "[Crowdin] Upload translations" name: "[Crowdin] Upload translations"
permissions:
contents: read
on: on:
workflow_dispatch: workflow_dispatch:

View File

@@ -9,6 +9,8 @@ env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CROWDIN_TOKEN: "${{ secrets.CROWDIN_UPDATE_CONTRIBUTORS_TOKEN }}" CROWDIN_TOKEN: "${{ secrets.CROWDIN_UPDATE_CONTRIBUTORS_TOKEN }}"
permissions:
contents: read
jobs: jobs:
update-contributors: update-contributors:
runs-on: ubuntu-latest runs-on: ubuntu-latest

1
.npmrc
View File

@@ -3,3 +3,4 @@
# @link https://docs.expo.dev/guides/monorepos/#common-issues # @link https://docs.expo.dev/guides/monorepos/#common-issues
node-linker=hoisted node-linker=hoisted
strict-peer-dependencies=false strict-peer-dependencies=false
engine-strict=true

View File

@@ -1,4 +1,4 @@
FROM node:24.11.0-alpine AS base FROM node:24.11.1-alpine AS base
FROM base AS builder FROM base AS builder
RUN apk add --no-cache libc6-compat RUN apk add --no-cache libc6-compat
@@ -55,7 +55,7 @@ COPY --from=builder /app/apps/nextjs/.next/standalone ./
COPY --from=builder /app/apps/nextjs/.next/static ./apps/nextjs/.next/static COPY --from=builder /app/apps/nextjs/.next/static ./apps/nextjs/.next/static
COPY --from=builder /app/apps/nextjs/public ./apps/nextjs/public COPY --from=builder /app/apps/nextjs/public ./apps/nextjs/public
COPY scripts/run.sh ./run.sh COPY scripts/run.sh ./run.sh
COPY --chmod=777 scripts/entrypoint.sh ./entrypoint.sh COPY --chmod=755 scripts/entrypoint.sh ./entrypoint.sh
COPY packages/redis/redis.conf /app/redis.conf COPY packages/redis/redis.conf /app/redis.conf
COPY nginx.conf /etc/nginx/templates/nginx.conf COPY nginx.conf /etc/nginx/templates/nginx.conf

View File

@@ -58,7 +58,7 @@
"@mantine/tiptap": "^8.3.8", "@mantine/tiptap": "^8.3.8",
"@million/lint": "1.0.14", "@million/lint": "1.0.14",
"@tabler/icons-react": "^3.35.0", "@tabler/icons-react": "^3.35.0",
"@tanstack/react-query": "^5.90.9", "@tanstack/react-query": "^5.90.10",
"@tanstack/react-query-devtools": "^5.90.2", "@tanstack/react-query-devtools": "^5.90.2",
"@tanstack/react-query-next-experimental": "^5.91.0", "@tanstack/react-query-next-experimental": "^5.91.0",
"@trpc/client": "^11.7.1", "@trpc/client": "^11.7.1",
@@ -74,7 +74,7 @@
"dayjs": "^1.11.19", "dayjs": "^1.11.19",
"dotenv": "^17.2.3", "dotenv": "^17.2.3",
"flag-icons": "^7.5.0", "flag-icons": "^7.5.0",
"glob": "^11.0.3", "glob": "^12.0.0",
"isomorphic-dompurify": "^2.32.0", "isomorphic-dompurify": "^2.32.0",
"jotai": "^2.15.1", "jotai": "^2.15.1",
"mantine-react-table": "2.0.0-beta.9", "mantine-react-table": "2.0.0-beta.9",
@@ -85,7 +85,7 @@
"react-dom": "19.2.0", "react-dom": "19.2.0",
"react-error-boundary": "^6.0.0", "react-error-boundary": "^6.0.0",
"react-simple-code-editor": "^0.14.1", "react-simple-code-editor": "^0.14.1",
"sass": "^1.94.0", "sass": "^1.94.1",
"superjson": "2.2.5", "superjson": "2.2.5",
"swagger-ui-react": "^5.30.2", "swagger-ui-react": "^5.30.2",
"use-deep-compare-effect": "^1.8.1", "use-deep-compare-effect": "^1.8.1",
@@ -98,7 +98,7 @@
"@types/chroma-js": "3.1.2", "@types/chroma-js": "3.1.2",
"@types/node": "^24.10.1", "@types/node": "^24.10.1",
"@types/prismjs": "^1.26.5", "@types/prismjs": "^1.26.5",
"@types/react": "19.2.5", "@types/react": "19.2.6",
"@types/react-dom": "19.2.3", "@types/react-dom": "19.2.3",
"@types/swagger-ui-react": "^5.18.0", "@types/swagger-ui-react": "^5.18.0",
"concurrently": "^9.2.1", "concurrently": "^9.2.1",

View File

@@ -45,22 +45,24 @@
"@testcontainers/redis": "^11.8.1", "@testcontainers/redis": "^11.8.1",
"@turbo/gen": "^2.6.1", "@turbo/gen": "^2.6.1",
"@vitejs/plugin-react": "^5.1.1", "@vitejs/plugin-react": "^5.1.1",
"@vitest/coverage-v8": "^4.0.9", "@vitest/coverage-v8": "^4.0.10",
"@vitest/ui": "^4.0.9", "@vitest/ui": "^4.0.10",
"conventional-changelog-conventionalcommits": "^9.1.0", "conventional-changelog-conventionalcommits": "^9.1.0",
"cross-env": "^10.1.0", "cross-env": "^10.1.0",
"jsdom": "^27.2.0", "jsdom": "^27.2.0",
"json5": "^2.2.3",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"semantic-release": "^25.0.2", "semantic-release": "^25.0.2",
"testcontainers": "^11.8.1", "testcontainers": "^11.8.1",
"turbo": "^2.6.1", "turbo": "^2.6.1",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"vite-tsconfig-paths": "^5.1.4", "vite-tsconfig-paths": "^5.1.4",
"vitest": "^4.0.9" "vitest": "^4.0.10"
}, },
"packageManager": "pnpm@10.22.0", "packageManager": "pnpm@10.22.0",
"engines": { "engines": {
"node": ">=24.11.1" "node": ">=24.11.1",
"pnpm": ">=10.22.0"
}, },
"pnpm": { "pnpm": {
"onlyBuiltDependencies": [ "onlyBuiltDependencies": [
@@ -81,14 +83,14 @@
"brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1", "brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1",
"brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1", "brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1",
"esbuild@<=0.24.2": ">=0.27.0", "esbuild@<=0.24.2": ">=0.27.0",
"form-data@>=4.0.0 <4.0.4": ">=4.0.4", "form-data@>=4.0.0 <4.0.4": ">=4.0.5",
"hono@<4.6.5": ">=4.10.6", "hono@<4.6.5": ">=4.10.6",
"linkifyjs@<4.3.2": ">=4.3.2", "linkifyjs@<4.3.2": ">=4.3.2",
"nanoid@>=4.0.0 <5.0.9": ">=5.1.6", "nanoid@>=4.0.0 <5.0.9": ">=5.1.6",
"prismjs@<1.30.0": ">=1.30.0", "prismjs@<1.30.0": ">=1.30.0",
"proxmox-api>undici": "7.16.0", "proxmox-api>undici": "7.16.0",
"react-is": "^19.2.0", "react-is": "^19.2.0",
"rollup@>=4.0.0 <4.22.4": ">=4.53.2", "rollup@>=4.0.0 <4.22.4": ">=4.53.3",
"sha.js@<=2.4.11": ">=2.4.12", "sha.js@<=2.4.11": ">=2.4.12",
"tar-fs@>=3.0.0 <3.0.9": ">=3.1.1", "tar-fs@>=3.0.0 <3.0.9": ">=3.1.1",
"tar-fs@>=2.0.0 <2.1.3": ">=3.1.1", "tar-fs@>=2.0.0 <2.1.3": ">=3.1.1",

View File

@@ -43,7 +43,7 @@
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.4.0", "@kubernetes/client-node": "^1.4.0",
"@tanstack/react-query": "^5.90.9", "@tanstack/react-query": "^5.90.10",
"@trpc/client": "^11.7.1", "@trpc/client": "^11.7.1",
"@trpc/react-query": "^11.7.1", "@trpc/react-query": "^11.7.1",
"@trpc/server": "^11.7.1", "@trpc/server": "^11.7.1",

View File

@@ -38,7 +38,7 @@
"react-dom": "19.2.0", "react-dom": "19.2.0",
"undici": "7.16.0", "undici": "7.16.0",
"zod": "^4.1.12", "zod": "^4.1.12",
"zod-validation-error": "^4.0.2" "zod-validation-error": "^5.0.0"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -29,7 +29,7 @@
"@homarr/core": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0",
"@homarr/cron-jobs": "workspace:^0.1.0", "@homarr/cron-jobs": "workspace:^0.1.0",
"@homarr/log": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0",
"@tanstack/react-query": "^5.90.9", "@tanstack/react-query": "^5.90.10",
"@trpc/client": "^11.7.1", "@trpc/client": "^11.7.1",
"@trpc/server": "^11.7.1", "@trpc/server": "^11.7.1",
"@trpc/tanstack-react-query": "^11.7.1", "@trpc/tanstack-react-query": "^11.7.1",
@@ -42,7 +42,7 @@
"@homarr/prettier-config": "workspace:^0.1.0", "@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0",
"@types/node-cron": "^3.0.11", "@types/node-cron": "^3.0.11",
"@types/react": "19.2.5", "@types/react": "19.2.6",
"eslint": "^9.39.1", "eslint": "^9.39.1",
"typescript": "^5.9.3" "typescript": "^5.9.3"
} }

View File

@@ -32,7 +32,7 @@
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0", "@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0",
"@types/dockerode": "^3.3.46", "@types/dockerode": "^3.3.47",
"eslint": "^9.39.1", "eslint": "^9.39.1",
"typescript": "^5.9.3" "typescript": "^5.9.3"
} }

View File

@@ -8,3 +8,4 @@ export type { Docker };
export const containerStates = ["created", "running", "paused", "restarting", "exited", "removing", "dead"] as const; export const containerStates = ["created", "running", "paused", "restarting", "exited", "removing", "dead"] as const;
export type ContainerState = (typeof containerStates)[number]; export type ContainerState = (typeof containerStates)[number];
export * from "./labels";

View File

@@ -0,0 +1,4 @@
export const dockerLabels = {
// Label to hide a container from Homarrs docker integration
hide: "homarr.hide",
} as const;

View File

@@ -26,6 +26,7 @@
"@homarr/common": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0",
"@homarr/definitions": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0",
"@homarr/docker": "workspace:^0.1.0",
"@homarr/integrations": "workspace:^0.1.0", "@homarr/integrations": "workspace:^0.1.0",
"@homarr/log": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0",
"@homarr/redis": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0",

View File

@@ -3,9 +3,9 @@ import type { ContainerInfo, ContainerStats } from "dockerode";
import { db, like, or } from "@homarr/db"; import { db, like, or } from "@homarr/db";
import { icons } from "@homarr/db/schema"; import { icons } from "@homarr/db/schema";
import type { ContainerState } from "@homarr/docker";
import { dockerLabels, DockerSingleton } from "@homarr/docker";
import type { ContainerState } from "../../docker/src";
import { DockerSingleton } from "../../docker/src";
import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler"; import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler";
export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({ export const dockerContainersRequestHandler = createCachedWidgetRequestHandler({
@@ -27,13 +27,11 @@ async function getContainersWithStatsAsync() {
const containers = await Promise.all( const containers = await Promise.all(
dockerInstances.map(async ({ instance, host }) => { dockerInstances.map(async ({ instance, host }) => {
const instanceContainers = await instance.listContainers({ all: true }); const instanceContainers = await instance.listContainers({ all: true });
return instanceContainers.map((container) => ({ return instanceContainers
...container, .filter((container) => dockerLabels.hide in container.Labels === false)
instance: host, .map((container) => ({ ...container, instance: host }));
}));
}), }),
).then((res) => res.flat()); ).then((res) => res.flat());
const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`)); const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`));
const dbIcons = const dbIcons =

View File

@@ -33,7 +33,7 @@
"deepmerge": "4.3.1", "deepmerge": "4.3.1",
"mantine-react-table": "2.0.0-beta.9", "mantine-react-table": "2.0.0-beta.9",
"next": "16.0.3", "next": "16.0.3",
"next-intl": "4.5.3", "next-intl": "4.5.5",
"react": "19.2.0", "react": "19.2.0",
"react-dom": "19.2.0" "react-dom": "19.2.0"
}, },

View File

@@ -2232,6 +2232,7 @@
"unknown": "", "unknown": "",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "未知", "unknown": "未知",
"pending": "等待处理", "pending": "等待处理",
"processing": "处理中", "processing": "处理中",
"requested": "",
"partiallyAvailable": "部分", "partiallyAvailable": "部分",
"available": "可用", "available": "可用",
"blacklisted": "已列入黑名单", "blacklisted": "已列入黑名单",

View File

@@ -2232,6 +2232,7 @@
"unknown": "crwdns1314:0crwdne1314:0", "unknown": "crwdns1314:0crwdne1314:0",
"pending": "crwdns1316:0crwdne1316:0", "pending": "crwdns1316:0crwdne1316:0",
"processing": "crwdns1318:0crwdne1318:0", "processing": "crwdns1318:0crwdne1318:0",
"requested": "crwdns3806:0crwdne3806:0",
"partiallyAvailable": "crwdns1320:0crwdne1320:0", "partiallyAvailable": "crwdns1320:0crwdne1320:0",
"available": "crwdns1322:0crwdne1322:0", "available": "crwdns1322:0crwdne1322:0",
"blacklisted": "crwdns3468:0crwdne3468:0", "blacklisted": "crwdns3468:0crwdne3468:0",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Neznámý", "unknown": "Neznámý",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Částečně dostupné", "partiallyAvailable": "Částečně dostupné",
"available": "K dispozici", "available": "K dispozici",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Ukendt", "unknown": "Ukendt",
"pending": "Afventende", "pending": "Afventende",
"processing": "Behandler", "processing": "Behandler",
"requested": "",
"partiallyAvailable": "Delvis", "partiallyAvailable": "Delvis",
"available": "Tilgængelig", "available": "Tilgængelig",
"blacklisted": "Blacklistet", "blacklisted": "Blacklistet",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Unbekannt", "unknown": "Unbekannt",
"pending": "Ausstehend", "pending": "Ausstehend",
"processing": "In Bearbeitung", "processing": "In Bearbeitung",
"requested": "",
"partiallyAvailable": "Teilweise", "partiallyAvailable": "Teilweise",
"available": "Verfügbar", "available": "Verfügbar",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Unbekannt", "unknown": "Unbekannt",
"pending": "Ausstehend", "pending": "Ausstehend",
"processing": "In Bearbeitung", "processing": "In Bearbeitung",
"requested": "",
"partiallyAvailable": "Teilweise", "partiallyAvailable": "Teilweise",
"available": "Verfügbar", "available": "Verfügbar",
"blacklisted": "Gesperrt", "blacklisted": "Gesperrt",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Άγνωστο", "unknown": "Άγνωστο",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Μερικώς", "partiallyAvailable": "Μερικώς",
"available": "Διαθέσιμο", "available": "Διαθέσιμο",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "", "unknown": "",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Desconocido", "unknown": "Desconocido",
"pending": "Pendiente", "pending": "Pendiente",
"processing": "Procesando", "processing": "Procesando",
"requested": "",
"partiallyAvailable": "Parcial", "partiallyAvailable": "Parcial",
"available": "Disponible", "available": "Disponible",
"blacklisted": "Lista negra", "blacklisted": "Lista negra",

View File

@@ -2232,6 +2232,7 @@
"unknown": "", "unknown": "",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Inconnu", "unknown": "Inconnu",
"pending": "En attente", "pending": "En attente",
"processing": "Traitement en cours", "processing": "Traitement en cours",
"requested": "",
"partiallyAvailable": "Partiel", "partiallyAvailable": "Partiel",
"available": "Disponible", "available": "Disponible",
"blacklisted": "Sur la liste noire", "blacklisted": "Sur la liste noire",

View File

@@ -2232,6 +2232,7 @@
"unknown": "לא ידוע", "unknown": "לא ידוע",
"pending": "בהמתנה", "pending": "בהמתנה",
"processing": "מעבד", "processing": "מעבד",
"requested": "",
"partiallyAvailable": "חלקי", "partiallyAvailable": "חלקי",
"available": "זמין", "available": "זמין",
"blacklisted": "ברשימה השחורה", "blacklisted": "ברשימה השחורה",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Nepoznato", "unknown": "Nepoznato",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Ismeretlen", "unknown": "Ismeretlen",
"pending": "", "pending": "",
"processing": "Feldolgozás", "processing": "Feldolgozás",
"requested": "",
"partiallyAvailable": "Részleges", "partiallyAvailable": "Részleges",
"available": "Elérhető", "available": "Elérhető",
"blacklisted": "", "blacklisted": "",

View File

@@ -730,7 +730,7 @@
"error": { "error": {
"common": { "common": {
"cause": { "cause": {
"title": "" "title": "Causa con più dettagli"
} }
}, },
"unknown": { "unknown": {
@@ -738,7 +738,7 @@
"description": "Si è verificato un errore sconosciuto, apri la causa sottostante per vedere maggiori dettagli" "description": "Si è verificato un errore sconosciuto, apri la causa sottostante per vedere maggiori dettagli"
}, },
"parse": { "parse": {
"title": "", "title": "Errore di analisi",
"description": "La risposta non può essere analizzata. Si prega di verificare che l'URL stia puntando all'URL di base del servizio." "description": "La risposta non può essere analizzata. Si prega di verificare che l'URL stia puntando all'URL di base del servizio."
}, },
"authorization": { "authorization": {
@@ -959,8 +959,8 @@
"newLabel": "Nuovo ID token" "newLabel": "Nuovo ID token"
}, },
"realm": { "realm": {
"label": "", "label": "Dominio",
"newLabel": "" "newLabel": "Nuovo dominio"
}, },
"personalAccessToken": { "personalAccessToken": {
"label": "Token d'Accesso Personale", "label": "Token d'Accesso Personale",
@@ -1053,7 +1053,7 @@
"backToOverview": "Torna alla panoramica", "backToOverview": "Torna alla panoramica",
"change": "Cambia", "change": "Cambia",
"create": "Crea", "create": "Crea",
"createAnother": "", "createAnother": "Crea e ricomincia",
"edit": "Modifica", "edit": "Modifica",
"import": "Importa", "import": "Importa",
"insert": "Inserisci", "insert": "Inserisci",
@@ -1389,8 +1389,8 @@
} }
}, },
"dnsHoleSummary": { "dnsHoleSummary": {
"name": "", "name": "Riepilogo del filtraggio DNS",
"description": "", "description": "Mostra il riepilogo del tuo filtro DNS",
"option": { "option": {
"layout": { "layout": {
"label": "Layout", "label": "Layout",
@@ -1411,7 +1411,7 @@
} }
}, },
"error": { "error": {
"internalServerError": "", "internalServerError": "Impossibile recuperare il riepilogo del filtro DNS",
"integrationsDisconnected": "Nessun dato disponibile, tutte le integrazioni disconnesse" "integrationsDisconnected": "Nessun dato disponibile, tutte le integrazioni disconnesse"
}, },
"data": { "data": {
@@ -1423,7 +1423,7 @@
"domainsTooltip": "A causa di più integrazioni, Homarr non può calcolare il numero esatto di domini bloccati" "domainsTooltip": "A causa di più integrazioni, Homarr non può calcolare il numero esatto di domini bloccati"
}, },
"dnsHoleControls": { "dnsHoleControls": {
"name": "", "name": "Controlli del filtro DNS",
"description": "Controlla PiHole o AdGuard dalla tua dashboard", "description": "Controlla PiHole o AdGuard dalla tua dashboard",
"option": { "option": {
"layout": { "layout": {
@@ -1445,7 +1445,7 @@
} }
}, },
"error": { "error": {
"internalServerError": "" "internalServerError": "Impossibile controllare il DNS Hole"
}, },
"controls": { "controls": {
"enableAll": "Abilita tutto", "enableAll": "Abilita tutto",
@@ -1514,7 +1514,7 @@
"label": "Indirizzo del server" "label": "Indirizzo del server"
}, },
"isBedrockServer": { "isBedrockServer": {
"label": "" "label": "Server Bedrock"
} }
}, },
"status": { "status": {
@@ -1625,7 +1625,7 @@
} }
}, },
"error": { "error": {
"noUrl": "", "noUrl": "Nessun URL iFrame fornito",
"unsupportedProtocol": "L'URL fornito sta usando un protocollo non supportato. Si prega di utilizzare uno di ({supportedProtocols})", "unsupportedProtocol": "L'URL fornito sta usando un protocollo non supportato. Si prega di utilizzare uno di ({supportedProtocols})",
"noBrowerSupport": "Il tuo browser non supporta iframes. Aggiorna il tuo browser." "noBrowerSupport": "Il tuo browser non supporta iframes. Aggiorna il tuo browser."
} }
@@ -1664,7 +1664,7 @@
} }
}, },
"stockPrice": { "stockPrice": {
"name": "", "name": "Prezzo delle azioni",
"description": "Visualizza il prezzo attuale delle azioni di una società", "description": "Visualizza il prezzo attuale delle azioni di una società",
"option": { "option": {
"stock": { "stock": {
@@ -1835,7 +1835,7 @@
"title": "Index manager", "title": "Index manager",
"testAll": "Prova tutto", "testAll": "Prova tutto",
"error": { "error": {
"internalServerError": "" "internalServerError": "Impossibile recuperare lo stato degli indicizzatori"
} }
}, },
"healthMonitoring": { "healthMonitoring": {
@@ -2020,7 +2020,7 @@
"name": "Nome", "name": "Nome",
"id": "Id", "id": "Id",
"metadata": { "metadata": {
"title": "", "title": "Statistiche per nerd",
"video": { "video": {
"title": "Video", "title": "Video",
"resolution": "Risoluzione" "resolution": "Risoluzione"
@@ -2034,7 +2034,7 @@
"title": "Transcodifica", "title": "Transcodifica",
"container": "Container", "container": "Container",
"resolution": "Risoluzione", "resolution": "Risoluzione",
"target": "" "target": "Codec di destinazione"
} }
} }
} }
@@ -2098,7 +2098,7 @@
"detailsTitle": "Categorie (Informazioni aggiuntive)" "detailsTitle": "Categorie (Informazioni aggiuntive)"
}, },
"downSpeed": { "downSpeed": {
"columnTitle": "", "columnTitle": "Giù",
"detailsTitle": "Velocità Di Download" "detailsTitle": "Velocità Di Download"
}, },
"index": { "index": {
@@ -2112,22 +2112,22 @@
"columnTitle": "Integrazione" "columnTitle": "Integrazione"
}, },
"name": { "name": {
"columnTitle": "" "columnTitle": "Nome del job"
}, },
"progress": { "progress": {
"columnTitle": "Avanzamento", "columnTitle": "Avanzamento",
"detailsTitle": "" "detailsTitle": "Avanzamento del download"
}, },
"ratio": { "ratio": {
"columnTitle": "Rapporto", "columnTitle": "Rapporto",
"detailsTitle": "Rapporto torrent (ricevuti/inviati)" "detailsTitle": "Rapporto torrent (ricevuti/inviati)"
}, },
"received": { "received": {
"columnTitle": "", "columnTitle": "Totale fuori servizio",
"detailsTitle": "Totale scaricati" "detailsTitle": "Totale scaricati"
}, },
"sent": { "sent": {
"columnTitle": "", "columnTitle": "Totale operativo",
"detailsTitle": "Totale Caricati" "detailsTitle": "Totale Caricati"
}, },
"size": { "size": {
@@ -2136,7 +2136,7 @@
}, },
"state": { "state": {
"columnTitle": "Stato", "columnTitle": "Stato",
"detailsTitle": "" "detailsTitle": "Stato job"
}, },
"time": { "time": {
"columnTitle": "Ora di fine", "columnTitle": "Ora di fine",
@@ -2158,7 +2158,7 @@
"completed": "Completato", "completed": "Completato",
"failed": "Non riuscito", "failed": "Non riuscito",
"processing": "In lavorazione", "processing": "In lavorazione",
"leeching": "", "leeching": "Leeching",
"stalled": "In stallo", "stalled": "In stallo",
"unknown": "Sconosciuto", "unknown": "Sconosciuto",
"seeding": "Seeding" "seeding": "Seeding"
@@ -2205,7 +2205,7 @@
"label": "Mostra suggerimento descrizione" "label": "Mostra suggerimento descrizione"
}, },
"showType": { "showType": {
"label": "" "label": "Mostra il badge del tipo di media"
}, },
"showSource": { "showSource": {
"label": "Mostra sorgente integrazione" "label": "Mostra sorgente integrazione"
@@ -2216,7 +2216,7 @@
} }
}, },
"mediaRequests-requestList": { "mediaRequests-requestList": {
"name": "", "name": "Elenco Richieste Media",
"description": "Visualizza un elenco di tutte le richieste media dalla tua istanza Overseerr o Jellyseerr", "description": "Visualizza un elenco di tutte le richieste media dalla tua istanza Overseerr o Jellyseerr",
"option": { "option": {
"linksTargetNewTab": { "linksTargetNewTab": {
@@ -2232,9 +2232,10 @@
"unknown": "Sconosciuto", "unknown": "Sconosciuto",
"pending": "In sospeso", "pending": "In sospeso",
"processing": "In lavorazione", "processing": "In lavorazione",
"requested": "Richiesto",
"partiallyAvailable": "Parziale", "partiallyAvailable": "Parziale",
"available": "Disponibile", "available": "Disponibile",
"blacklisted": "", "blacklisted": "In blacklist",
"deleted": "Eliminato" "deleted": "Eliminato"
}, },
"status": { "status": {
@@ -2247,7 +2248,7 @@
"toBeDetermined": "TBD" "toBeDetermined": "TBD"
}, },
"mediaRequests-requestStats": { "mediaRequests-requestStats": {
"name": "", "name": "Statistiche Richiesta Media",
"description": "Statistiche sulle richieste dei media", "description": "Statistiche sulle richieste dei media",
"option": {}, "option": {},
"titles": { "titles": {
@@ -2338,7 +2339,7 @@
"label": "Abilita RTL" "label": "Abilita RTL"
}, },
"textLinesClamp": { "textLinesClamp": {
"label": "" "label": "Limita le righe della descrizione"
}, },
"maximumAmountPosts": { "maximumAmountPosts": {
"label": "Limite di post" "label": "Limite di post"
@@ -2353,11 +2354,11 @@
"description": "Visualizza un elenco della versione corrente dei repository dati con la versione regex specificata.", "description": "Visualizza un elenco della versione corrente dei repository dati con la versione regex specificata.",
"option": { "option": {
"newReleaseWithin": { "newReleaseWithin": {
"label": "", "label": "Nuova versione entro",
"description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le nuove versioni." "description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le nuove versioni."
}, },
"staleReleaseWithin": { "staleReleaseWithin": {
"label": "", "label": "Rilascio obsoleto entro",
"description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le release obsolete." "description": "Esempio di utilizzo: 1w (1 settimana), 10M (10 mesi). Tipi di unità accettati h (ore), d (giorni), w (settimane), M (mesi), y (anni). Lasciare vuoto per non evidenziare le release obsolete."
}, },
"showOnlyHighlighted": { "showOnlyHighlighted": {
@@ -2702,7 +2703,7 @@
"label": "Titolo della pagina" "label": "Titolo della pagina"
}, },
"metaTitle": { "metaTitle": {
"label": "" "label": "Meta title"
}, },
"logoImageUrl": { "logoImageUrl": {
"label": "URL immagine del logo" "label": "URL immagine del logo"
@@ -2948,7 +2949,7 @@
"label": "Numero di colonne" "label": "Numero di colonne"
}, },
"breakpoint": { "breakpoint": {
"label": "", "label": "Breakpoint",
"description": "Il layout verrà utilizzato su tutti gli schermi più grandi di questo breakpoint fino al breakpoint più grande successivo." "description": "Il layout verrà utilizzato su tutti gli schermi più grandi di questo breakpoint fino al breakpoint più grande successivo."
} }
} }
@@ -3322,7 +3323,7 @@
"label": "Analytics" "label": "Analytics"
}, },
"smartHomeEntityState": { "smartHomeEntityState": {
"label": "" "label": "Stato dell'entità Smart Home"
}, },
"ping": { "ping": {
"label": "Ping" "label": "Ping"
@@ -3337,10 +3338,10 @@
"label": "Scaricamenti" "label": "Scaricamenti"
}, },
"mediaRequestStats": { "mediaRequestStats": {
"label": "" "label": "Statistiche richieste media"
}, },
"mediaRequestList": { "mediaRequestList": {
"label": "" "label": "Elenco richieste media"
}, },
"rssFeeds": { "rssFeeds": {
"label": "Feeds RSS" "label": "Feeds RSS"
@@ -3349,10 +3350,10 @@
"label": "Gestione Indicizzatori" "label": "Gestione Indicizzatori"
}, },
"healthMonitoring": { "healthMonitoring": {
"label": "" "label": "Monitoraggio integrità del sistema"
}, },
"dnsHole": { "dnsHole": {
"label": "" "label": "Dati di filtraggio DNS"
}, },
"updateChecker": { "updateChecker": {
"label": "Controllo aggiornamenti" "label": "Controllo aggiornamenti"
@@ -3435,10 +3436,10 @@
}, },
"trigger": { "trigger": {
"success": { "success": {
"message": "" "message": "Attività attivata con successo"
}, },
"error": { "error": {
"message": "" "message": "Impossibile attivare l'attività"
} }
}, },
"enable": { "enable": {
@@ -3453,7 +3454,7 @@
}, },
"toggle": { "toggle": {
"error": { "error": {
"message": "" "message": "Impossibile attivare lo stato dell'attività"
} }
} }
}, },
@@ -3517,12 +3518,12 @@
"action": "Azione" "action": "Azione"
}, },
"action": { "action": {
"toggleBoardEdit": "", "toggleBoardEdit": "Attiva la modalità di modifica della board",
"toggleColorScheme": "", "toggleColorScheme": "Attiva tema chiaro/scuro",
"saveNotebook": "", "saveNotebook": "Salva notebook (solo nel widget notebook)",
"openSpotlight": "Apri ricerca" "openSpotlight": "Apri ricerca"
}, },
"note": "" "note": "Suggerimento: 'Mod' si riferisce sia al tasto Ctrl che al tasto ⌘ su macOS"
} }
} }
} }
@@ -3534,7 +3535,7 @@
"updated": "Aggiornato {when}", "updated": "Aggiornato {when}",
"search": "Cerca {count} container", "search": "Cerca {count} container",
"selected": "{selectCount} di {totalCount} containers selezionati", "selected": "{selectCount} di {totalCount} containers selezionati",
"footer": "" "footer": "Totale container {count}"
}, },
"field": { "field": {
"name": { "name": {
@@ -3672,11 +3673,11 @@
"resources": { "resources": {
"title": "Risorse", "title": "Risorse",
"nodes": "Nodi", "nodes": "Nodi",
"namespaces": "", "namespaces": "Spazi dei nomi",
"ingresses": "Ingressi", "ingresses": "Ingressi",
"services": "Servizi", "services": "Servizi",
"pods": "Pods", "pods": "Pods",
"configmaps": "", "configmaps": "ConfigMaps",
"secrets": "Secrets", "secrets": "Secrets",
"volumes": "Volumi" "volumes": "Volumi"
} }
@@ -3721,7 +3722,7 @@
} }
}, },
"namespaces": { "namespaces": {
"label": "", "label": "Spazi dei nomi",
"field": { "field": {
"name": { "name": {
"label": "Nome" "label": "Nome"
@@ -3730,7 +3731,7 @@
"label": "Stato", "label": "Stato",
"option": { "option": {
"active": "Attivo", "active": "Attivo",
"terminating": "" "terminating": "Terminare"
} }
}, },
"creationTimestamp": { "creationTimestamp": {
@@ -3738,7 +3739,7 @@
} }
}, },
"table": { "table": {
"search": "" "search": "Cerca {count} spazi dei nomi"
} }
}, },
"ingresses": { "ingresses": {
@@ -3761,7 +3762,7 @@
} }
}, },
"table": { "table": {
"search": "" "search": "Cerca {count} ingresses"
} }
}, },
"services": { "services": {
@@ -3771,7 +3772,7 @@
"label": "Nome" "label": "Nome"
}, },
"namespace": { "namespace": {
"label": "" "label": "Spazio del nome"
}, },
"type": { "type": {
"label": "Tipo" "label": "Tipo"
@@ -3800,7 +3801,7 @@
"label": "Nome" "label": "Nome"
}, },
"namespace": { "namespace": {
"label": "" "label": "Spazio del nome"
}, },
"image": { "image": {
"label": "Immagine" "label": "Immagine"
@@ -3826,7 +3827,7 @@
"label": "Nome" "label": "Nome"
}, },
"namespace": { "namespace": {
"label": "" "label": "spazio del nome"
}, },
"type": { "type": {
"label": "tipo" "label": "tipo"
@@ -3836,24 +3837,24 @@
} }
}, },
"table": { "table": {
"search": "" "search": "Cerca {count} segreti"
} }
}, },
"configmaps": { "configmaps": {
"label": "", "label": "ConfigMaps",
"field": { "field": {
"name": { "name": {
"label": "Nome" "label": "Nome"
}, },
"namespace": { "namespace": {
"label": "" "label": "namespace"
}, },
"creationTimestamp": { "creationTimestamp": {
"label": "Creato" "label": "Creato"
} }
}, },
"table": { "table": {
"search": "" "search": "Cerca {count} ConfigMaps"
} }
}, },
"volumes": { "volumes": {
@@ -3863,7 +3864,7 @@
"label": "Nome" "label": "Nome"
}, },
"namespace": { "namespace": {
"label": "" "label": "Namespace"
}, },
"accessModes": { "accessModes": {
"label": "Modalità Di Accesso" "label": "Modalità Di Accesso"
@@ -3872,7 +3873,7 @@
"label": "Spazio di archiviazione" "label": "Spazio di archiviazione"
}, },
"storageClassName": { "storageClassName": {
"label": "" "label": "Nome Classe Archivio"
}, },
"volumeMode": { "volumeMode": {
"label": "Modalità Volume" "label": "Modalità Volume"
@@ -3888,7 +3889,7 @@
} }
}, },
"table": { "table": {
"search": "" "search": "Cerca {count} volumi"
} }
}, },
"error": { "error": {
@@ -3989,7 +3990,7 @@
"label": "Nodi" "label": "Nodi"
}, },
"namespaces": { "namespaces": {
"label": "" "label": "Namespaces"
}, },
"ingresses": { "ingresses": {
"label": "Ingressi" "label": "Ingressi"
@@ -4001,7 +4002,7 @@
"label": "pods" "label": "pods"
}, },
"configmaps": { "configmaps": {
"label": "" "label": "ConfigMaps"
}, },
"secrets": { "secrets": {
"label": "Secrets" "label": "Secrets"
@@ -4092,7 +4093,7 @@
"option": { "option": {
"colorScheme": { "colorScheme": {
"light": "Passa al tema chiaro", "light": "Passa al tema chiaro",
"dark": "Passa alla modalità scura" "dark": "Passa al tema scuro"
}, },
"language": { "language": {
"label": "Cambia lingua", "label": "Cambia lingua",

View File

@@ -2232,6 +2232,7 @@
"unknown": "不明", "unknown": "不明",
"pending": "保留中", "pending": "保留中",
"processing": "処理中", "processing": "処理中",
"requested": "",
"partiallyAvailable": "一部", "partiallyAvailable": "一部",
"available": "利用可能", "available": "利用可能",
"blacklisted": "ブラックリスト", "blacklisted": "ブラックリスト",

View File

@@ -2232,6 +2232,7 @@
"unknown": "알 수 없음", "unknown": "알 수 없음",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Nežinoma", "unknown": "Nežinoma",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Dalis", "partiallyAvailable": "Dalis",
"available": "Galima", "available": "Galima",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Nezināms", "unknown": "Nezināms",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Daļējs", "partiallyAvailable": "Daļējs",
"available": "Pieejams", "available": "Pieejams",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Onbekend", "unknown": "Onbekend",
"pending": "In afwachting", "pending": "In afwachting",
"processing": "Verwerken", "processing": "Verwerken",
"requested": "",
"partiallyAvailable": "Gedeeltelijk", "partiallyAvailable": "Gedeeltelijk",
"available": "Beschikbaar", "available": "Beschikbaar",
"blacklisted": "Geblacklist", "blacklisted": "Geblacklist",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Ukjent", "unknown": "Ukjent",
"pending": "Pågår", "pending": "Pågår",
"processing": "Prosesserer", "processing": "Prosesserer",
"requested": "",
"partiallyAvailable": "Delvis", "partiallyAvailable": "Delvis",
"available": "Tilgjengelig", "available": "Tilgjengelig",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Nieznany", "unknown": "Nieznany",
"pending": "Oczekujący", "pending": "Oczekujący",
"processing": "Przetwarzanie", "processing": "Przetwarzanie",
"requested": "",
"partiallyAvailable": "Częściowy", "partiallyAvailable": "Częściowy",
"available": "Dostępne", "available": "Dostępne",
"blacklisted": "Zablokowany", "blacklisted": "Zablokowany",

View File

@@ -7,7 +7,7 @@
"description": "Para começar, por favor selecione como você deseja configurar sua instância Homarr.", "description": "Para começar, por favor selecione como você deseja configurar sua instância Homarr.",
"action": { "action": {
"scratch": "Começar do zero", "scratch": "Começar do zero",
"importOldmarr": "Importe de uma instância Homarr anterior a 1,0" "importOldmarr": "Importe de uma instância Homarr anterior a 1.0"
} }
}, },
"import": { "import": {
@@ -307,12 +307,12 @@
"name": "Nome", "name": "Nome",
"members": "Membros", "members": "Membros",
"homeBoard": { "homeBoard": {
"label": "", "label": "Quadro inicial",
"description": "" "description": "Somente quadros acessíveis ao grupo podem ser selecionados"
}, },
"mobileBoard": { "mobileBoard": {
"label": "", "label": "Quadro para celular",
"description": "" "description": "Somente quadros acessíveis ao grupo podem ser selecionados"
} }
}, },
"permission": { "permission": {
@@ -320,8 +320,8 @@
"title": "Administrador", "title": "Administrador",
"item": { "item": {
"admin": { "admin": {
"label": "", "label": "Administrador",
"description": "" "description": "Membros com essa permissão têm acesso total a todos os recursos e configurações"
} }
} }
}, },
@@ -329,15 +329,15 @@
"title": "Aplicativos", "title": "Aplicativos",
"item": { "item": {
"create": { "create": {
"label": "", "label": "Criar aplicativo",
"description": "" "description": "Permitir que membros criem aplicativos"
}, },
"use-all": { "use-all": {
"label": "", "label": "Usar todas aplicações",
"description": "" "description": "Permitir que os membros adicionem qualquer aplicativo aos seus quadros"
}, },
"modify-all": { "modify-all": {
"label": "", "label": "Modificar todos os aplicativos",
"description": "" "description": ""
}, },
"full-all": { "full-all": {
@@ -410,7 +410,7 @@
"item": { "item": {
"view-logs": { "view-logs": {
"label": "", "label": "",
"description": "" "description": "Permitir que os membros visualizem os registros"
} }
} }
}, },
@@ -419,7 +419,7 @@
"item": { "item": {
"create": { "create": {
"label": "", "label": "",
"description": "" "description": "Permitir que os membros criem mecanismos de busca"
}, },
"modify-all": { "modify-all": {
"label": "", "label": "",
@@ -547,19 +547,19 @@
"title": "Aplicativos", "title": "Aplicativos",
"noResults": { "noResults": {
"title": "", "title": "",
"action": "" "action": "Crie seu primeiro aplicativo"
} }
}, },
"create": { "create": {
"title": "", "title": "Novo Aplicativo",
"notification": { "notification": {
"success": { "success": {
"title": "", "title": "Criado com sucesso",
"message": "" "message": "O aplicativo foi criado com sucesso"
}, },
"error": { "error": {
"title": "", "title": "Falha ao criar",
"message": "" "message": "Não foi possível criar o aplicativo"
} }
} }
}, },
@@ -618,9 +618,9 @@
"title": "" "title": ""
}, },
"create": { "create": {
"title": "", "title": "Criar aplicativo",
"description": "", "description": "Criar um aplicativo",
"action": "" "action": "Abrir criação de aplicativo"
}, },
"add": "" "add": ""
} }
@@ -649,14 +649,14 @@
"app": { "app": {
"option": { "option": {
"existing": { "existing": {
"title": "", "title": "Existente",
"label": "" "label": "Selecione um aplicativo existente"
}, },
"new": { "new": {
"title": "", "title": "Novo",
"url": { "url": {
"label": "", "label": "URL da aplicação",
"description": "" "description": "A URL do aplicativo será aberta quando acessada a partir do painel de controle"
} }
} }
} }
@@ -712,8 +712,8 @@
"sectionTitle": "" "sectionTitle": ""
}, },
"createApp": { "createApp": {
"label": "", "label": "Criar aplicativo",
"description": "" "description": "Crie um aplicativo com o mesmo nome e ícone da integração. Deixe o campo de entrada abaixo vazio para criar o aplicativo com a URL de integração."
}, },
"appHref": { "appHref": {
"placeholder": "" "placeholder": ""
@@ -1973,8 +1973,8 @@
}, },
"app": { "app": {
"noData": "", "noData": "",
"description": "", "description": "Clique <here></here> para criar um aplicativo",
"quickCreate": "" "quickCreate": "Criar aplicativo em tempo real"
}, },
"error": { "error": {
"noIntegration": "", "noIntegration": "",
@@ -2232,6 +2232,7 @@
"unknown": "Desconhecido", "unknown": "Desconhecido",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Parcial", "partiallyAvailable": "Parcial",
"available": "Disponível", "available": "Disponível",
"blacklisted": "", "blacklisted": "",
@@ -2659,7 +2660,7 @@
}, },
"onlyImportApps": { "onlyImportApps": {
"label": "", "label": "",
"description": "" "description": "Só adiciona os aplicativos, o quadro precisa ser recriado manualmente"
} }
}, },
"name": { "name": {
@@ -2692,8 +2693,8 @@
}, },
"quickCreateApp": { "quickCreateApp": {
"modal": { "modal": {
"title": "", "title": "Criar aplicativo em tempo real",
"createAndUse": "" "createAndUse": "Criar e utilizar"
} }
} }
}, },
@@ -2911,7 +2912,7 @@
"title": "", "title": "",
"description": "", "description": "",
"link": "", "link": "",
"notice": "" "notice": "Para fazer esta página desaparecer, crie um quadro e defina-o como quadro inicial"
}, },
"notFound": { "notFound": {
"title": "", "title": "",
@@ -4109,7 +4110,7 @@
"label": "" "label": ""
}, },
"newApp": { "newApp": {
"label": "" "label": "Criar aplicativo"
}, },
"newIntegration": { "newIntegration": {
"label": "", "label": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Necunoscut", "unknown": "Necunoscut",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Parțial", "partiallyAvailable": "Parțial",
"available": "Disponibil", "available": "Disponibil",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Неизвестно", "unknown": "Неизвестно",
"pending": "В ожидании", "pending": "В ожидании",
"processing": "Обработка", "processing": "Обработка",
"requested": "",
"partiallyAvailable": "Частично доступно", "partiallyAvailable": "Частично доступно",
"available": "Доступно", "available": "Доступно",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Neznámy", "unknown": "Neznámy",
"pending": "Čakajúce", "pending": "Čakajúce",
"processing": "Spracovanie", "processing": "Spracovanie",
"requested": "",
"partiallyAvailable": "Čiastočný", "partiallyAvailable": "Čiastočný",
"available": "K dispozícii", "available": "K dispozícii",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Neznano", "unknown": "Neznano",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "", "partiallyAvailable": "",
"available": "", "available": "",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Okänd", "unknown": "Okänd",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Delmängd", "partiallyAvailable": "Delmängd",
"available": "Tillgänglig", "available": "Tillgänglig",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Bilinmeyen", "unknown": "Bilinmeyen",
"pending": "Bekleyen", "pending": "Bekleyen",
"processing": "İşlemde", "processing": "İşlemde",
"requested": "",
"partiallyAvailable": "Kısmi", "partiallyAvailable": "Kısmi",
"available": "Mevcut", "available": "Mevcut",
"blacklisted": "Engellenenler", "blacklisted": "Engellenenler",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Невідомо", "unknown": "Невідомо",
"pending": "В очікуванні", "pending": "В очікуванні",
"processing": "В обробці", "processing": "В обробці",
"requested": "",
"partiallyAvailable": "Частково доступно", "partiallyAvailable": "Частково доступно",
"available": "Доступно", "available": "Доступно",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "Không rõ", "unknown": "Không rõ",
"pending": "", "pending": "",
"processing": "", "processing": "",
"requested": "",
"partiallyAvailable": "Một phần", "partiallyAvailable": "Một phần",
"available": "Khả dụng", "available": "Khả dụng",
"blacklisted": "", "blacklisted": "",

View File

@@ -2232,6 +2232,7 @@
"unknown": "未知", "unknown": "未知",
"pending": "等待處理中", "pending": "等待處理中",
"processing": "處理中", "processing": "處理中",
"requested": "",
"partiallyAvailable": "部分", "partiallyAvailable": "部分",
"available": "待定", "available": "待定",
"blacklisted": "", "blacklisted": "",

View File

@@ -1,7 +1,7 @@
"use client"; "use client";
import { Box, Flex, Group, Text, Tooltip } from "@mantine/core"; import { Box, Flex, Group, Text, Tooltip } from "@mantine/core";
import { IconUsersGroup } from "@tabler/icons-react"; import { IconCube, IconUsersGroup } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client"; import { clientApi } from "@homarr/api/client";
import { formatNumber } from "@homarr/common"; import { formatNumber } from "@homarr/common";
@@ -44,13 +44,25 @@ export default function MinecraftServerStatusWidget({ options }: WidgetComponent
</Group> </Group>
{data.online && ( {data.online && (
<> <>
{!options.isBedrockServer && ( {!options.isBedrockServer &&
<img (data.icon ? (
style={{ flex: 1, transform: "scale(0.8)", objectFit: "contain" }} <img
alt={`minecraft icon ${options.domain}`} style={{ flex: 1, transform: "scale(0.8)", objectFit: "contain" }}
src={data.icon} alt={`minecraft icon ${options.domain}`}
/> src={data.icon}
)} />
) : (
<Box
style={{
flex: 1,
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<IconCube size="3rem" color="var(--mantine-color-gray-5)" />
</Box>
))}
<Group gap={5} c="gray.6" align="center"> <Group gap={5} c="gray.6" align="center">
<IconUsersGroup size="1rem" /> <IconUsersGroup size="1rem" />
<Text size="md"> <Text size="md">

528
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,3 +2,5 @@ packages:
- apps/* - apps/*
- packages/* - packages/*
- tooling/* - tooling/*
minimumReleaseAge: 4320 # Only download deps if they are at least 3 days old (in minutes)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

23
test/renovate.spec.ts Normal file
View File

@@ -0,0 +1,23 @@
import fs from "fs/promises";
import { join } from "path";
import json5 from "json5";
import { describe, test } from "vitest";
describe("Renovate configuration tests", () => {
test("automerge should be disabled for onlyBuiltDependencies", async () => {
const packageJson = await import("../package.json");
const renovateConfig = await fs.readFile(join(__dirname, "../.github/renovate.json5"), "utf-8").then(json5.parse);
const onlyBuiltDependencies = packageJson.pnpm.onlyBuiltDependencies;
const automergeDisabledDeps = renovateConfig.packageRules
.filter((rule: any) => rule.automerge === false)
.flatMap((rule: any) => rule.matchPackageNames || []);
const missingDeps = onlyBuiltDependencies.filter((dep: string) => !automergeDisabledDeps.includes(dep));
if (missingDeps.length > 0) {
throw new Error(
`The following onlyBuiltDependencies are missing automerge disable rules in renovate.json5: ${missingDeps.join(", ")}`,
);
}
});
});