chore(release): automatic release v1.24.0

This commit is contained in:
homarr-releases[bot]
2025-06-13 19:14:43 +00:00
committed by GitHub
66 changed files with 1792 additions and 1290 deletions

View File

@@ -31,6 +31,7 @@ body:
label: Version label: Version
description: What version of Homarr are you running? description: What version of Homarr are you running?
options: options:
- 1.23.0
- 1.22.0 - 1.22.0
- 1.21.0 - 1.21.0
- 1.20.0 - 1.20.0

View File

@@ -17,31 +17,16 @@ const withNextIntl = createNextIntlPlugin({
requestConfig: "../../packages/translation/src/request.ts", requestConfig: "../../packages/translation/src/request.ts",
}); });
interface WebpackConfig {
module: {
rules: {
test: RegExp;
loader: string;
}[];
};
}
const nextConfig: NextConfig = { const nextConfig: NextConfig = {
output: "standalone", output: "standalone",
reactStrictMode: true, reactStrictMode: true,
/** We already do linting and typechecking as separate tasks in CI */ /** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true }, eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true }, typescript: { ignoreBuildErrors: true },
webpack: (config: WebpackConfig, { isServer }) => { /**
if (isServer) { * dockerode is required in the external server packages because of https://github.com/homarr-labs/homarr/issues/612
config.module.rules.push({ */
test: /\.node$/, serverExternalPackages: ["dockerode"],
loader: "node-loader",
});
}
return config;
},
experimental: { experimental: {
optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"], optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"],
}, },
@@ -68,6 +53,7 @@ const nextConfig: NextConfig = {
form-action 'self'; form-action 'self';
img-src * data:; img-src * data:;
font-src * data:; font-src * data:;
media-src * data:;
` `
.replace(/\s{2,}/g, " ") .replace(/\s{2,}/g, " ")
.trim(), .trim(),

View File

@@ -48,21 +48,21 @@
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@homarr/widgets": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0",
"@mantine/colors-generator": "^8.0.2", "@mantine/colors-generator": "^8.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/dropzone": "^8.0.2", "@mantine/dropzone": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"@mantine/modals": "^8.0.2", "@mantine/modals": "^8.1.0",
"@mantine/tiptap": "^8.0.2", "@mantine/tiptap": "^8.1.0",
"@million/lint": "1.0.14", "@million/lint": "1.0.14",
"@tabler/icons-react": "^3.34.0", "@tabler/icons-react": "^3.34.0",
"@tanstack/react-query": "^5.80.6", "@tanstack/react-query": "^5.80.7",
"@tanstack/react-query-devtools": "^5.80.6", "@tanstack/react-query-devtools": "^5.80.7",
"@tanstack/react-query-next-experimental": "^5.80.6", "@tanstack/react-query-next-experimental": "^5.80.7",
"@trpc/client": "^11.3.1", "@trpc/client": "^11.4.1",
"@trpc/next": "^11.3.1", "@trpc/next": "^11.4.1",
"@trpc/react-query": "^11.3.1", "@trpc/react-query": "^11.4.1",
"@trpc/server": "^11.3.1", "@trpc/server": "^11.4.1",
"@xterm/addon-canvas": "^0.7.0", "@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "0.10.0", "@xterm/addon-fit": "0.10.0",
"@xterm/xterm": "^5.5.0", "@xterm/xterm": "^5.5.0",
@@ -71,7 +71,7 @@
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"flag-icons": "^7.5.0", "flag-icons": "^7.5.0",
"glob": "^11.0.2", "glob": "^11.0.3",
"jotai": "^2.12.5", "jotai": "^2.12.5",
"mantine-react-table": "2.0.0-beta.9", "mantine-react-table": "2.0.0-beta.9",
"next": "15.3.3", "next": "15.3.3",
@@ -81,20 +81,20 @@
"react-dom": "19.1.0", "react-dom": "19.1.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.89.1", "sass": "^1.89.2",
"superjson": "2.2.2", "superjson": "2.2.2",
"swagger-ui-react": "^5.24.0", "swagger-ui-react": "^5.24.1",
"use-deep-compare-effect": "^1.8.1", "use-deep-compare-effect": "^1.8.1",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@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/chroma-js": "3.1.1", "@types/chroma-js": "3.1.1",
"@types/node": "^22.15.30", "@types/node": "^22.15.31",
"@types/prismjs": "^1.26.5", "@types/prismjs": "^1.26.5",
"@types/react": "19.1.6", "@types/react": "19.1.8",
"@types/react-dom": "19.1.6", "@types/react-dom": "19.1.6",
"@types/swagger-ui-react": "^5.18.0", "@types/swagger-ui-react": "^5.18.0",
"concurrently": "^9.1.2", "concurrently": "^9.1.2",

View File

@@ -44,12 +44,12 @@
"@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/node": "^22.15.30", "@types/node": "^22.15.31",
"dotenv-cli": "^8.0.0", "dotenv-cli": "^8.0.0",
"esbuild": "^0.25.5", "esbuild": "^0.25.5",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"tsx": "4.19.4", "tsx": "4.20.3",
"typescript": "^5.8.3" "typescript": "^5.8.3"
} }
} }

View File

@@ -26,7 +26,7 @@
"@homarr/redis": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"tsx": "4.19.4", "tsx": "4.20.3",
"ws": "^8.18.2" "ws": "^8.18.2"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -39,21 +39,21 @@
"@semantic-release/npm": "^12.0.1", "@semantic-release/npm": "^12.0.1",
"@semantic-release/release-notes-generator": "^14.0.3", "@semantic-release/release-notes-generator": "^14.0.3",
"@turbo/gen": "^2.5.4", "@turbo/gen": "^2.5.4",
"@vitejs/plugin-react": "^4.5.1", "@vitejs/plugin-react": "^4.5.2",
"@vitest/coverage-v8": "^3.2.2", "@vitest/coverage-v8": "^3.2.3",
"@vitest/ui": "^3.2.2", "@vitest/ui": "^3.2.3",
"conventional-changelog-conventionalcommits": "^9.0.0", "conventional-changelog-conventionalcommits": "^9.0.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"jsdom": "^26.1.0", "jsdom": "^26.1.0",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"semantic-release": "^24.2.5", "semantic-release": "^24.2.5",
"testcontainers": "^11.0.0", "testcontainers": "^11.0.3",
"turbo": "^2.5.4", "turbo": "^2.5.4",
"typescript": "^5.8.3", "typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4", "vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.2.2" "vitest": "^3.2.3"
}, },
"packageManager": "pnpm@10.11.1", "packageManager": "pnpm@10.12.1",
"engines": { "engines": {
"node": ">=22.16.0" "node": ">=22.16.0"
}, },

View File

@@ -41,18 +41,18 @@
"@homarr/server-settings": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.3.0", "@kubernetes/client-node": "^1.3.0",
"@tanstack/react-query": "^5.80.6", "@tanstack/react-query": "^5.80.7",
"@trpc/client": "^11.3.1", "@trpc/client": "^11.4.1",
"@trpc/react-query": "^11.3.1", "@trpc/react-query": "^11.4.1",
"@trpc/server": "^11.3.1", "@trpc/server": "^11.4.1",
"@trpc/tanstack-react-query": "^11.3.1", "@trpc/tanstack-react-query": "^11.4.1",
"lodash.clonedeep": "^4.5.0", "lodash.clonedeep": "^4.5.0",
"next": "15.3.3", "next": "15.3.3",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"superjson": "2.2.2", "superjson": "2.2.2",
"trpc-to-openapi": "^2.3.1", "trpc-to-openapi": "^2.3.1",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -39,14 +39,14 @@
"next-auth": "5.0.0-beta.28", "next-auth": "5.0.0-beta.28",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@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/bcrypt": "5.0.2", "@types/bcrypt": "5.0.2",
"@types/cookies": "0.9.0", "@types/cookies": "0.9.1",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"typescript": "^5.8.3" "typescript": "^5.8.3"

View File

@@ -34,8 +34,8 @@
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"undici": "7.10.0", "undici": "7.10.0",
"zod": "^3.25.55", "zod": "^3.25.64",
"zod-validation-error": "^3.4.1" "zod-validation-error": "^3.5.0"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -1,10 +1,10 @@
import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions";
import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole"; import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole";
import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler";
import { createCronJob } from "../../lib"; import { createCronJob } from "../../lib";
export const dnsHoleJob = createCronJob("dnsHole", EVERY_5_SECONDS).withCallback( export const dnsHoleJob = createCronJob("dnsHole", EVERY_MINUTE).withCallback(
createRequestIntegrationJobHandler(dnsHoleRequestHandler.handler, { createRequestIntegrationJobHandler(dnsHoleRequestHandler.handler, {
widgetKinds: ["dnsHoleSummary", "dnsHoleControls"], widgetKinds: ["dnsHoleSummary", "dnsHoleControls"],
getInput: { getInput: {

View File

@@ -1,6 +1,6 @@
import SuperJSON from "superjson"; import SuperJSON from "superjson";
import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions"; import { EVERY_10_MINUTES } from "@homarr/cron-jobs-core/expressions";
import { db, eq } from "@homarr/db"; import { db, eq } from "@homarr/db";
import { items } from "@homarr/db/schema"; import { items } from "@homarr/db/schema";
import { logger } from "@homarr/log"; import { logger } from "@homarr/log";
@@ -10,7 +10,7 @@ import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds";
import type { WidgetComponentProps } from "../../../widgets"; import type { WidgetComponentProps } from "../../../widgets";
import { createCronJob } from "../lib"; import { createCronJob } from "../lib";
export const rssFeedsJob = createCronJob("rssFeeds", EVERY_5_MINUTES).withCallback(async () => { export const rssFeedsJob = createCronJob("rssFeeds", EVERY_10_MINUTES).withCallback(async () => {
const rssItems = await db.query.items.findMany({ const rssItems = await db.query.items.findMany({
where: eq(items.kind, "rssFeed"), where: eq(items.kind, "rssFeed"),
}); });

View File

@@ -44,9 +44,9 @@
"@homarr/env": "workspace:^0.1.0", "@homarr/env": "workspace:^0.1.0",
"@homarr/log": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0",
"@homarr/server-settings": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@paralleldrive/cuid2": "^2.2.2", "@paralleldrive/cuid2": "^2.2.2",
"@testcontainers/mysql": "^11.0.0", "@testcontainers/mysql": "^11.0.3",
"better-sqlite3": "^11.10.0", "better-sqlite3": "^11.10.0",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"drizzle-kit": "^0.31.1", "drizzle-kit": "^0.31.1",
@@ -63,7 +63,7 @@
"esbuild": "^0.25.5", "esbuild": "^0.25.5",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"prettier": "^3.5.3", "prettier": "^3.5.3",
"tsx": "4.19.4", "tsx": "4.20.3",
"typescript": "^5.8.3" "typescript": "^5.8.3"
} }
} }

View File

@@ -24,15 +24,15 @@
"prettier": "@homarr/prettier-config", "prettier": "@homarr/prettier-config",
"dependencies": { "dependencies": {
"@homarr/common": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0",
"fast-xml-parser": "^5.2.4", "fast-xml-parser": "^5.2.5",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@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",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"tsx": "4.19.4", "tsx": "4.20.3",
"typescript": "^5.8.3" "typescript": "^5.8.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.39", "@types/dockerode": "^3.3.40",
"eslint": "^9.28.0", "eslint": "^9.28.0",
"typescript": "^5.8.3" "typescript": "^5.8.3"
} }

View File

@@ -23,8 +23,8 @@
}, },
"prettier": "@homarr/prettier-config", "prettier": "@homarr/prettier-config",
"dependencies": { "dependencies": {
"@t3-oss/env-nextjs": "^0.13.6", "@t3-oss/env-nextjs": "^0.13.8",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -26,8 +26,8 @@
"@homarr/common": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/form": "^8.0.2", "@mantine/form": "^8.1.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -29,9 +29,9 @@
"@homarr/notifications": "workspace:^0.1.0", "@homarr/notifications": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"react": "19.1.0", "react": "19.1.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -44,7 +44,7 @@
"tsdav": "^2.1.4", "tsdav": "^2.1.4",
"undici": "7.10.0", "undici": "7.10.0",
"xml2js": "^0.6.2", "xml2js": "^0.6.2",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -77,6 +77,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn
protected async testingAsync({ fetchAsync }: IntegrationTestingInput): Promise<TestingResult> { protected async testingAsync({ fetchAsync }: IntegrationTestingInput): Promise<TestingResult> {
const sessionId = await this.getSessionAsync(fetchAsync); const sessionId = await this.getSessionAsync(fetchAsync);
await this.clearSessionAsync(sessionId, fetchAsync); await this.clearSessionAsync(sessionId, fetchAsync);
await this.sessionStore.clearAsync();
return { success: true }; return { success: true };
} }

View File

@@ -27,7 +27,7 @@
"ioredis": "5.6.1", "ioredis": "5.6.1",
"superjson": "2.2.2", "superjson": "2.2.2",
"winston": "3.17.0", "winston": "3.17.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -33,13 +33,13 @@
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@tabler/icons-react": "^3.34.0", "@tabler/icons-react": "^3.34.0",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"next": "15.3.3", "next": "15.3.3",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -24,8 +24,8 @@
"dependencies": { "dependencies": {
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"react": "19.1.0" "react": "19.1.0"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -24,7 +24,7 @@
"prettier": "@homarr/prettier-config", "prettier": "@homarr/prettier-config",
"dependencies": { "dependencies": {
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@mantine/notifications": "^8.0.2", "@mantine/notifications": "^8.1.0",
"@tabler/icons-react": "^3.34.0" "@tabler/icons-react": "^3.34.0"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -37,14 +37,14 @@
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"adm-zip": "0.5.16", "adm-zip": "0.5.16",
"next": "15.3.3", "next": "15.3.3",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0", "react-dom": "19.1.0",
"superjson": "2.2.2", "superjson": "2.2.2",
"zod": "^3.25.55", "zod": "^3.25.64",
"zod-form-data": "^2.0.7" "zod-form-data": "^2.0.7"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -23,7 +23,7 @@
"prettier": "@homarr/prettier-config", "prettier": "@homarr/prettier-config",
"dependencies": { "dependencies": {
"@homarr/common": "workspace:^0.1.0", "@homarr/common": "workspace:^0.1.0",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

View File

@@ -26,7 +26,7 @@
"@homarr/api": "workspace:^0.1.0", "@homarr/api": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0",
"@homarr/server-settings": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0",
"@mantine/dates": "^8.0.2", "@mantine/dates": "^8.1.0",
"next": "15.3.3", "next": "15.3.3",
"react": "19.1.0", "react": "19.1.0",
"react-dom": "19.1.0" "react-dom": "19.1.0"

View File

@@ -33,9 +33,9 @@
"@homarr/settings": "workspace:^0.1.0", "@homarr/settings": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"@mantine/spotlight": "^8.0.2", "@mantine/spotlight": "^8.1.0",
"@tabler/icons-react": "^3.34.0", "@tabler/icons-react": "^3.34.0",
"jotai": "^2.12.5", "jotai": "^2.12.5",
"next": "15.3.3", "next": "15.3.3",

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -263,14 +263,14 @@
} }
}, },
"removeImage": { "removeImage": {
"label": "删除像", "label": "删除像",
"confirm": "确定要移除这张图片吗?", "confirm": "确定要移除这张图片吗?",
"notification": { "notification": {
"success": { "success": {
"message": "图像删除成功" "message": "图像删除成功"
}, },
"error": { "error": {
"message": "无法删除像" "message": "无法删除像"
} }
} }
} }
@@ -722,8 +722,8 @@
}, },
"statusCode": { "statusCode": {
"title": "响应错误", "title": "响应错误",
"description": "", "description": "收到来自<url></url>的意外{statusCode} {reason}响应。请验证URL是否指向集成的基本URL。",
"otherDescription": "", "otherDescription": "从<url></url>收到意外的{statusCode}响应。请验证URL是否指向集成的基本URL。",
"reason": { "reason": {
"badRequest": "错误请求", "badRequest": "错误请求",
"notFound": "未找到", "notFound": "未找到",
@@ -752,7 +752,7 @@
}, },
"extract": { "extract": {
"title": "CA证书提取失败", "title": "CA证书提取失败",
"message": "" "message": "只有自签署证书链可以自动获取。如果使用的是自签名证书请确保手动上传CA证书。您可以找到有关如何执行此操作的说明<docsLink></docsLink>。"
} }
}, },
"action": { "action": {
@@ -760,70 +760,70 @@
"label": "重试创建" "label": "重试创建"
}, },
"trust": { "trust": {
"label": "" "label": "信任证书"
}, },
"upload": { "upload": {
"label": "" "label": "上传证书"
} }
}, },
"hostnameMismatch": { "hostnameMismatch": {
"confirm": { "confirm": {
"title": "", "title": "信任主机名不匹配",
"message": "" "message": "您确定要信任主机名不匹配的证书吗?"
}, },
"notification": { "notification": {
"success": { "success": {
"title": "", "title": "可信证书",
"message": "" "message": "将主机名添加到受信任证书列表中"
}, },
"error": { "error": {
"title": "", "title": "信任证书失败",
"message": "" "message": "主机名不匹配的证书不可信"
} }
} }
}, },
"selfSigned": { "selfSigned": {
"confirm": { "confirm": {
"title": "", "title": "信任自签名证书",
"message": "" "message": "您确定要信任此自签名证书吗?"
}, },
"notification": { "notification": {
"success": { "success": {
"title": "", "title": "可信证书",
"message": "" "message": "已添加证书到可信证书列表"
}, },
"error": { "error": {
"title": "", "title": "信任证书失败",
"message": "" "message": "向受信任证书列表添加证书失败"
} }
} }
}, },
"details": { "details": {
"title": "", "title": "详情",
"description": "", "description": "在决定信任证书信息之前,请检查该证书信息。",
"content": { "content": {
"action": "", "action": "显示内容",
"title": "" "title": "PEM 证书"
} }
} }
}, },
"request": { "request": {
"title": "", "title": "错误请求",
"description": { "description": {
"connection": { "connection": {
"hostUnreachable": "", "hostUnreachable": "无法连接到服务器。这通常意味着主机离线或无法从您的网络访问。",
"networkUnreachable": "", "networkUnreachable": "网络不可达。请检查网络连接或网络配置。",
"refused": "", "refused": "服务器拒绝连接。它可能没有运行或正在拒绝指定端口上的请求。",
"reset": "" "reset": "服务器意外关闭了连接。如果服务器不稳定或重新启动,就会发生这种情况。"
}, },
"dns": { "dns": {
"notFound": "", "notFound": "找不到服务器地址。请检查URL是否有拼写错误或无效的域名。",
"timeout": "", "timeout": "DNS查找超时。这可能是暂时的问题请稍后再试。",
"noAnswer": "" "noAnswer": "DNS服务器没有返回有效的响应。域可能存在但没有有效记录。"
}, },
"timeout": { "timeout": {
"aborted": "", "aborted": "请求在完成之前被中止。这可能是由于用户操作或系统超时造成的。",
"timeout": "" "timeout": "请求耗时太长。请检查您的网络或稍后再试。"
} }
} }
} }
@@ -895,8 +895,8 @@
"message": "该路径可能不正确" "message": "该路径可能不正确"
}, },
"tooManyRequests": { "tooManyRequests": {
"title": "", "title": "指定时间内请求过多",
"message": "" "message": "请求太多了。您可能会受到速率限制或被目标系统拒绝"
} }
} }
}, },
@@ -1004,7 +1004,7 @@
"cancel": "取消", "cancel": "取消",
"delete": "删除", "delete": "删除",
"discard": "Discard", "discard": "Discard",
"close": "", "close": "关闭",
"confirm": "确认", "confirm": "确认",
"continue": "继续", "continue": "继续",
"previous": "上一步", "previous": "上一步",
@@ -1220,7 +1220,7 @@
"label": "集成" "label": "集成"
}, },
"title": { "title": {
"label": "" "label": "标题"
}, },
"customCssClasses": { "customCssClasses": {
"label": "自定义 CSS 类" "label": "自定义 CSS 类"
@@ -1758,7 +1758,7 @@
"label": "显示内存信息" "label": "显示内存信息"
}, },
"showUptime": { "showUptime": {
"label": "" "label": "显示运行时间"
}, },
"fileSystem": { "fileSystem": {
"label": "显示文件系统信息" "label": "显示文件系统信息"
@@ -1767,7 +1767,7 @@
"label": "默认标签" "label": "默认标签"
}, },
"visibleClusterSections": { "visibleClusterSections": {
"label": "" "label": "可见集群部分"
}, },
"sectionIndicatorRequirement": { "sectionIndicatorRequirement": {
"label": "部分指标要求" "label": "部分指标要求"
@@ -1839,11 +1839,11 @@
} }
}, },
"dockerContainers": { "dockerContainers": {
"name": "", "name": "Docker 状态",
"description": "", "description": "您的容器状态 (这个小部件只能用管理员权限添加)",
"option": {}, "option": {},
"error": { "error": {
"internalServerError": "" "internalServerError": "获取容器统计信息失败"
} }
}, },
"common": { "common": {
@@ -1912,8 +1912,8 @@
"description": "显示媒体服务器上的当前流", "description": "显示媒体服务器上的当前流",
"option": { "option": {
"showOnlyPlaying": { "showOnlyPlaying": {
"label": "", "label": "只显示当前正在播放",
"description": "" "description": "禁用此功能对plex不起作用"
} }
}, },
"items": { "items": {
@@ -1946,7 +1946,7 @@
"label": "显示标记为已完成的 Torrent 条目" "label": "显示标记为已完成的 Torrent 条目"
}, },
"showCompletedHttp": { "showCompletedHttp": {
"label": "" "label": "显示标记为已完成的杂项"
}, },
"activeTorrentThreshold": { "activeTorrentThreshold": {
"label": "隐藏在此阈值下已完成的 Torrent (kiB/s)" "label": "隐藏在此阈值下已完成的 Torrent (kiB/s)"
@@ -1961,8 +1961,8 @@
"label": "使用过滤器来计算比率" "label": "使用过滤器来计算比率"
}, },
"limitPerIntegration": { "limitPerIntegration": {
"label": "", "label": "限制每个集成的项目",
"description": "" "description": "这将限制每个集成显示的项目数量,而不是全局项目"
} }
}, },
"errors": { "errors": {
@@ -2095,7 +2095,7 @@
"approved": "已批准", "approved": "已批准",
"declined": "已拒绝", "declined": "已拒绝",
"failed": "失败", "failed": "失败",
"completed": "" "completed": "已完成"
}, },
"toBeDetermined": "待定" "toBeDetermined": "待定"
}, },
@@ -2199,94 +2199,106 @@
} }
}, },
"releases": { "releases": {
"name": "", "name": "发布",
"description": "", "description": "显示特定版本正则表达式中当前版本的列表。",
"option": { "option": {
"newReleaseWithin": { "newReleaseWithin": {
"label": "", "label": "内部新版本",
"description": "" "description": "使用示例1w1周10M10个月。支持单位类型h小时dwMy。留空不突出显示新版本。"
}, },
"staleReleaseWithin": { "staleReleaseWithin": {
"label": "", "label": "内部过期发布",
"description": "" "description": "使用示例1w1周10M10个月。支持单位类型h小时dwMy。留空不突出显示过时的版本。"
}, },
"showOnlyHighlighted": { "showOnlyHighlighted": {
"label": "", "label": "只显示高亮显示",
"description": "" "description": "只显示新的或过时的版本。如上所述。"
}, },
"showDetails": { "showDetails": {
"label": "" "label": "展开详情"
}, },
"topReleases": { "topReleases": {
"label": "", "label": "热门发布",
"description": "" "description": "要显示的最新版本的最大数量。零表示没有限制。"
}, },
"repositories": { "repositories": {
"label": "", "label": "仓库",
"addRepository": { "addRepository": {
"label": "" "label": "添加仓库"
},
"importRepositories": {
"label": "从 Docker 导入",
"loading": "正在加载 docker 映像",
"noImagesFound": "没有找到 docker 映像",
"listFoundImages": "找到的映像列表",
"listAlreadyImportedImages": "已导入的映像列表",
"allImagesAlreadyImported": "所有映像已导入",
"onlyAdminCanImport": "只有管理员才能从 docker 导入"
}, },
"provider": { "provider": {
"label": "" "label": "提供者"
}, },
"identifier": { "identifier": {
"label": "", "label": "标识符",
"placeholder": "" "placeholder": "姓名或所有者名称"
}, },
"name": { "name": {
"label": "" "label": "名称"
}, },
"versionFilter": { "versionFilter": {
"label": "", "label": "版本过滤器",
"prefix": { "prefix": {
"label": "" "label": "前缀"
}, },
"precision": { "precision": {
"label": "", "label": "精度",
"options": { "options": {
"none": "" "none": ""
} }
}, },
"suffix": { "suffix": {
"label": "" "label": "后缀"
}, },
"regex": { "regex": {
"label": "" "label": "正则表达式"
} }
}, },
"edit": { "edit": {
"label": "" "label": "编辑"
}, },
"editForm": { "editForm": {
"title": "", "title": "编辑仓库",
"cancel": { "cancel": {
"label": "" "label": "取消"
}, },
"confirm": { "confirm": {
"label": "" "label": "确认"
} }
}, },
"example": { "importForm": {
"label": "" "title": "从 Docker 导入"
}, },
"invalid": "" "example": {
"label": "示例"
},
"invalid": "仓库定义无效,请检查值"
} }
}, },
"not-found": "", "not-found": "未找到",
"pre-release": "", "pre-release": "预发行",
"archived": "", "archived": "已归档",
"forked": "", "forked": "复刻成功",
"starsCount": "", "starsCount": "",
"forksCount": "", "forksCount": "复刻",
"issuesCount": "", "issuesCount": "打开问题",
"openProjectPage": "", "openProjectPage": "打开项目页面",
"openReleasePage": "", "openReleasePage": "打开发布页面",
"releaseDescription": "", "releaseDescription": "发布说明",
"created": "", "created": "已创建",
"error": { "error": {
"label": "", "label": "错误",
"options": { "options": {
"noMatchingVersion": "" "noMatchingVersion": "没有找到匹配的版本"
} }
} }
}, },
@@ -2294,56 +2306,56 @@
"option": {}, "option": {},
"card": { "card": {
"vpn": { "vpn": {
"countConnected": "" "countConnected": "{count} 已连接"
} }
}, },
"error": { "error": {
"integrationsDisconnected": "", "integrationsDisconnected": "没有可用的数据,所有集成已断开",
"unknownContentOption": "" "unknownContentOption": "网络控制器摘要小部件的未知内容选项: "
}, },
"name": "", "name": "网络控制器概述",
"description": "" "description": "显示网络控制器摘要(如Unifi Controller)"
}, },
"networkControllerStatus": { "networkControllerStatus": {
"card": { "card": {
"variants": { "variants": {
"wired": { "wired": {
"name": "" "name": "有线"
}, },
"wifi": { "wifi": {
"name": "" "name": "Wi-Fi"
} }
}, },
"users": { "users": {
"label": "" "label": "用户数"
}, },
"guests": { "guests": {
"label": "" "label": "游客"
} }
}, },
"option": { "option": {
"content": { "content": {
"option": { "option": {
"wifi": { "wifi": {
"label": "" "label": "Wi-Fi"
}, },
"wired": { "wired": {
"label": "" "label": "有线"
} }
}, },
"label": "" "label": "小部件内容"
} }
}, },
"error": { "error": {
"integrationsDisconnected": "", "integrationsDisconnected": "没有可用的数据,所有集成已断开",
"unknownContentOption": "" "unknownContentOption": "网络状态小部件的未知内容选项: "
}, },
"name": "", "name": "网络状态",
"description": "" "description": "在网络上显示已连接的设备"
}, },
"networkController": { "networkController": {
"error": { "error": {
"internalServerError": "" "internalServerError": "获取网络控制器概述失败"
} }
} }
}, },
@@ -2466,10 +2478,10 @@
}, },
"backgroundImageUrl": { "backgroundImageUrl": {
"label": "背景图片 URL", "label": "背景图片 URL",
"placeholder": "", "placeholder": "开始输入以搜索本地映像",
"group": { "group": {
"your": "你的像", "your": "你的像",
"other": "" "other": "其他映像"
} }
}, },
"backgroundImageAttachment": { "backgroundImageAttachment": {
@@ -3111,7 +3123,7 @@
"label": "网络控制器" "label": "网络控制器"
}, },
"dockerContainers": { "dockerContainers": {
"label": "" "label": "Docker 容器"
} }
} }
}, },
@@ -3177,7 +3189,7 @@
"updated": "已更新 {when}", "updated": "已更新 {when}",
"search": "搜索 {count} 容器", "search": "搜索 {count} 容器",
"selected": "{totalCount} 容器的 {selectCount}", "selected": "{totalCount} 容器的 {selectCount}",
"footer": "" "footer": "总计 {count} 容器"
}, },
"field": { "field": {
"name": { "name": {
@@ -3197,10 +3209,10 @@
}, },
"stats": { "stats": {
"cpu": { "cpu": {
"label": "" "label": "CPU"
}, },
"memory": { "memory": {
"label": "" "label": "内存"
} }
}, },
"containerImage": { "containerImage": {
@@ -3211,7 +3223,7 @@
} }
}, },
"action": { "action": {
"title": "", "title": "操作",
"start": { "start": {
"label": "开始", "label": "开始",
"notification": { "notification": {
@@ -3656,7 +3668,7 @@
"certificates": { "certificates": {
"label": "证书", "label": "证书",
"hostnames": { "hostnames": {
"label": "" "label": "主机名"
} }
} }
}, },
@@ -4057,25 +4069,25 @@
"certificate": { "certificate": {
"field": { "field": {
"hostname": { "hostname": {
"label": "" "label": "主机名"
}, },
"subject": { "subject": {
"label": "" "label": "主题"
}, },
"issuer": { "issuer": {
"label": "" "label": "发行者"
}, },
"validFrom": { "validFrom": {
"label": "" "label": "有效期自"
}, },
"validTo": { "validTo": {
"label": "" "label": "有效期至"
}, },
"serialNumber": { "serialNumber": {
"label": "" "label": "序号"
}, },
"fingerprint": { "fingerprint": {
"label": "" "label": "指纹"
} }
}, },
"page": { "page": {
@@ -4086,19 +4098,19 @@
"title": "还没有证书" "title": "还没有证书"
}, },
"invalid": { "invalid": {
"title": "", "title": "无效证书",
"description": "" "description": "解析证书失败"
}, },
"expires": "到期时间 {when}", "expires": "到期时间 {when}",
"toHostnames": "" "toHostnames": "信任的主机名"
}, },
"hostnames": { "hostnames": {
"title": "", "title": "信任的证书主机名",
"description": "", "description": "某些证书不允许指定域名使用 Homarr 请求他们, 由于这个原因,所有信任的主机名及其证书缩略图都被用来绕过这些限制。",
"noResults": { "noResults": {
"title": "" "title": "还没有主机名"
}, },
"toCertificates": "" "toCertificates": "证书"
} }
}, },
"action": { "action": {
@@ -4130,16 +4142,16 @@
} }
}, },
"removeHostname": { "removeHostname": {
"label": "", "label": "删除受信任的主机名",
"confirm": "", "confirm": "您确定要删除此受信任的主机名吗?这可能会导致一些集成停止工作。",
"notification": { "notification": {
"success": { "success": {
"title": "", "title": "主机名已删除",
"message": "" "message": "主机名已成功删除"
}, },
"error": { "error": {
"title": "", "title": "主机名未删除",
"message": "" "message": "无法删除主机名"
} }
} }
} }

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "Tilføj repository" "label": "Tilføj repository"
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "Udbyder" "label": "Udbyder"
}, },
@@ -2266,6 +2275,9 @@
"label": "Bekræft" "label": "Bekræft"
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "Eksempel" "label": "Eksempel"
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "Repository hinzufügen" "label": "Repository hinzufügen"
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "Anbieter" "label": "Anbieter"
}, },
@@ -2266,6 +2275,9 @@
"label": "Bestätigen" "label": "Bestätigen"
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "Beispiel" "label": "Beispiel"
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "הוסף מאגר" "label": "הוסף מאגר"
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "ספק" "label": "ספק"
}, },
@@ -2266,6 +2275,9 @@
"label": "אשר" "label": "אשר"
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "דוגמא" "label": "דוגמא"
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

File diff suppressed because it is too large Load Diff

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "Depo Ekle" "label": "Depo Ekle"
}, },
"importRepositories": {
"label": "Docker'dan içe aktar",
"loading": "Docker imajları yükleniyor",
"noImagesFound": "Hiç docker imajı bulunamadı",
"listFoundImages": "Bulunan imajların listesi",
"listAlreadyImportedImages": "Daha önce içe aktarılan imajların listesi",
"allImagesAlreadyImported": "Tüm imajlar daha önce içe aktarıldı",
"onlyAdminCanImport": "Sadece yöneticiler docker'dan içe aktarabilir"
},
"provider": { "provider": {
"label": "Sağlayıcı" "label": "Sağlayıcı"
}, },
@@ -2266,6 +2275,9 @@
"label": "Onayla" "label": "Onayla"
} }
}, },
"importForm": {
"title": "Docker'dan içe aktar"
},
"example": { "example": {
"label": "Örnek" "label": "Örnek"
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "" "label": ""
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "" "label": ""
}, },
@@ -2266,6 +2275,9 @@
"label": "" "label": ""
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "" "label": ""
}, },

View File

@@ -2226,6 +2226,15 @@
"addRepository": { "addRepository": {
"label": "新增儲存庫" "label": "新增儲存庫"
}, },
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": { "provider": {
"label": "提供者" "label": "提供者"
}, },
@@ -2266,6 +2275,9 @@
"label": "確認" "label": "確認"
} }
}, },
"importForm": {
"title": ""
},
"example": { "example": {
"label": "範例" "label": "範例"
}, },

View File

@@ -29,9 +29,9 @@
"@homarr/log": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/dates": "^8.0.2", "@mantine/dates": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"@tabler/icons-react": "^3.34.0", "@tabler/icons-react": "^3.34.0",
"mantine-react-table": "2.0.0-beta.9", "mantine-react-table": "2.0.0-beta.9",
"next": "15.3.3", "next": "15.3.3",

View File

@@ -24,7 +24,7 @@
"dependencies": { "dependencies": {
"@homarr/definitions": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"zod": "^3.25.55", "zod": "^3.25.64",
"zod-form-data": "^2.0.7" "zod-form-data": "^2.0.7"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -48,9 +48,9 @@
"@homarr/translation": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0",
"@mantine/charts": "^8.0.2", "@mantine/charts": "^8.1.0",
"@mantine/core": "^8.0.2", "@mantine/core": "^8.1.0",
"@mantine/hooks": "^8.0.2", "@mantine/hooks": "^8.1.0",
"@tabler/icons-react": "^3.34.0", "@tabler/icons-react": "^3.34.0",
"@tiptap/extension-color": "2.14.0", "@tiptap/extension-color": "2.14.0",
"@tiptap/extension-highlight": "2.14.0", "@tiptap/extension-highlight": "2.14.0",
@@ -76,7 +76,7 @@
"react-markdown": "^10.1.0", "react-markdown": "^10.1.0",
"recharts": "^2.15.3", "recharts": "^2.15.3",
"video.js": "^8.23.3", "video.js": "^8.23.3",
"zod": "^3.25.55" "zod": "^3.25.64"
}, },
"devDependencies": { "devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0", "@homarr/eslint-config": "workspace:^0.2.0",

1438
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -24,7 +24,7 @@
"eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.5", "eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-hooks": "^5.2.0",
"typescript-eslint": "^8.33.1" "typescript-eslint": "^8.34.0"
}, },
"devDependencies": { "devDependencies": {
"@homarr/prettier-config": "workspace:^0.1.0", "@homarr/prettier-config": "workspace:^0.1.0",