From e0152f4ac7b4b652d47a7eeb8bf0acc54815dac5 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 21:42:35 +0000 Subject: [PATCH 001/262] chore(deps): update dependency eslint to ^9.17.0 (#1654) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/cli/package.json | 2 +- packages/common/package.json | 2 +- packages/cron-job-runner/package.json | 2 +- packages/cron-job-status/package.json | 2 +- packages/cron-jobs-core/package.json | 2 +- packages/cron-jobs/package.json | 2 +- packages/db/package.json | 2 +- packages/definitions/package.json | 2 +- packages/form/package.json | 2 +- packages/icons/package.json | 2 +- packages/integrations/package.json | 2 +- packages/log/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 2 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 2 +- packages/old-schema/package.json | 2 +- packages/ping/package.json | 2 +- packages/redis/package.json | 2 +- packages/request-handler/package.json | 2 +- packages/server-settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 242 ++++++++++++------------ tooling/eslint/package.json | 2 +- 34 files changed, 154 insertions(+), 154 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 4651866da..8b05651a2 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -86,7 +86,7 @@ "@types/react-dom": "^19.0.2", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "node-loader": "^2.1.0", "prettier": "^3.4.2", "typescript": "^5.7.2" diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 1097b0d62..c33b28f5a 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -46,7 +46,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node": "^22.10.2", "dotenv-cli": "^7.4.4", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.2" diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 4ec49dc76..8b76172fe 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.5.13", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "prettier": "^3.4.2", "typescript": "^5.7.2" } diff --git a/packages/analytics/package.json b/packages/analytics/package.json index e11c94611..bdc330845 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/api/package.json b/packages/api/package.json index e0632a560..30b0c4910 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -50,7 +50,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.32", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "prettier": "^3.4.2", "typescript": "^5.7.2" } diff --git a/packages/auth/package.json b/packages/auth/package.json index 6b590a730..3eb20648a 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -45,7 +45,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "prettier": "^3.4.2", "typescript": "^5.7.2" } diff --git a/packages/cli/package.json b/packages/cli/package.json index dda211f4a..1dfb7b67f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/common/package.json b/packages/common/package.json index 6474a71b7..8ab408ecc 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -35,7 +35,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index e3b418702..0c797ea51 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index f495ce6ef..148c40604 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index 497521fe7..08ec4866a 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 1abaf0c1b..344b47b0a 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/db/package.json b/packages/db/package.json index 41aa4c069..72436fd1e 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -56,7 +56,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.12", "dotenv-cli": "^7.4.4", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.2" diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 55d970fea..105aa402b 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/form/package.json b/packages/form/package.json index b6894adfe..24addae12 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index c82b0bcda..573904b3e 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index b5e125176..e609f1b4b 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -42,7 +42,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/log/package.json b/packages/log/package.json index 5c46e4381..a8ab6e06d 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 7defa7be2..41053dd54 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -41,7 +41,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index 2b63c8fec..da2001b97 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index d869f2dd7..8c6ce51d2 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 39f69c524..5e3a8204c 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index dc36216f6..6e334a780 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -28,7 +28,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index 42d81f663..a4efede52 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index 59b7797c6..0d310343c 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 0d9a95680..29ec7ad6e 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -36,7 +36,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index ecb5f334e..6e391a324 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 856a50880..48c8c5ea7 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -45,7 +45,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index f2540fbd9..7defeef26 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -40,7 +40,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 80889e4ce..fa7fe065f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -42,7 +42,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index 4f2bba2d0..b4580c1a9 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d13a3a178..3770e3e1c 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -71,7 +71,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 43163e35e..5e2f55a68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -264,8 +264,8 @@ importers: specifier: ^9.1.0 version: 9.1.0 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 node-loader: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) @@ -352,8 +352,8 @@ importers: specifier: ^7.4.4 version: 7.4.4 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -413,8 +413,8 @@ importers: specifier: ^8.5.13 version: 8.5.13 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -450,8 +450,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -544,8 +544,8 @@ importers: specifier: ^3.3.32 version: 3.3.32 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -617,8 +617,8 @@ importers: specifier: 0.9.0 version: 0.9.0 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -654,8 +654,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -688,8 +688,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -716,8 +716,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -738,8 +738,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -808,8 +808,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -836,8 +836,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -900,8 +900,8 @@ importers: specifier: ^7.4.4 version: 7.4.4 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -928,8 +928,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -956,8 +956,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -984,8 +984,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1042,8 +1042,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1070,8 +1070,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1104,8 +1104,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1165,8 +1165,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1193,8 +1193,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1233,8 +1233,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1255,8 +1255,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1280,8 +1280,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1317,8 +1317,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1363,8 +1363,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1388,8 +1388,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1458,8 +1458,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1501,8 +1501,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1559,8 +1559,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1593,8 +1593,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1738,8 +1738,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -1751,25 +1751,25 @@ importers: version: 14.2.20 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.16.0) + version: 9.1.0(eslint@9.17.0) eslint-config-turbo: specifier: ^2.3.3 - version: 2.3.3(eslint@9.16.0) + version: 2.3.3(eslint@9.17.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0) + version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.16.0) + version: 6.10.2(eslint@9.17.0) eslint-plugin-react: specifier: ^7.37.2 - version: 7.37.2(eslint@9.16.0) + version: 7.37.2(eslint@9.17.0) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.1.0(eslint@9.16.0) + version: 5.1.0(eslint@9.17.0) typescript-eslint: specifier: ^8.18.0 - version: 8.18.0(eslint@9.16.0)(typescript@5.7.2) + version: 8.18.0(eslint@9.17.0)(typescript@5.7.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -1778,8 +1778,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.16.0 - version: 9.16.0 + specifier: ^9.17.0 + version: 9.17.0 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -2744,8 +2744,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.16.0': - resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} + '@eslint/js@9.17.0': + resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -5187,8 +5187,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.16.0: - resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} + eslint@9.17.0: + resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -8992,9 +8992,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.16.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.17.0)': dependencies: - eslint: 9.16.0 + eslint: 9.17.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -9023,7 +9023,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.16.0': {} + '@eslint/js@9.17.0': {} '@eslint/object-schema@2.1.4': {} @@ -10451,15 +10451,15 @@ snapshots: dependencies: '@types/node': 22.10.2 - '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/type-utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.18.0 - eslint: 9.16.0 + eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -10468,14 +10468,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.18.0 '@typescript-eslint/types': 8.18.0 '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.18.0 debug: 4.3.7 - eslint: 9.16.0 + eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10485,12 +10485,12 @@ snapshots: '@typescript-eslint/types': 8.18.0 '@typescript-eslint/visitor-keys': 8.18.0 - '@typescript-eslint/type-utils@8.18.0(eslint@9.16.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) debug: 4.3.7 - eslint: 9.16.0 + eslint: 9.17.0 ts-api-utils: 1.3.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: @@ -10512,13 +10512,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.18.0(eslint@9.16.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) '@typescript-eslint/scope-manager': 8.18.0 '@typescript-eslint/types': 8.18.0 '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - eslint: 9.16.0 + eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -11918,14 +11918,14 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.16.0): + eslint-config-prettier@9.1.0(eslint@9.17.0): dependencies: - eslint: 9.16.0 + eslint: 9.17.0 - eslint-config-turbo@2.3.3(eslint@9.16.0): + eslint-config-turbo@2.3.3(eslint@9.17.0): dependencies: - eslint: 9.16.0 - eslint-plugin-turbo: 2.3.3(eslint@9.16.0) + eslint: 9.17.0 + eslint-plugin-turbo: 2.3.3(eslint@9.17.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -11935,17 +11935,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.16.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2) - eslint: 9.16.0 + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -11954,9 +11954,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.16.0 + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.16.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -11968,13 +11968,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.17.0): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -11984,7 +11984,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.16.0 + eslint: 9.17.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -11993,11 +11993,11 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.1.0(eslint@9.16.0): + eslint-plugin-react-hooks@5.1.0(eslint@9.17.0): dependencies: - eslint: 9.16.0 + eslint: 9.17.0 - eslint-plugin-react@7.37.2(eslint@9.16.0): + eslint-plugin-react@7.37.2(eslint@9.17.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -12005,7 +12005,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.1.0 - eslint: 9.16.0 + eslint: 9.17.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12019,10 +12019,10 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.3.3(eslint@9.16.0): + eslint-plugin-turbo@2.3.3(eslint@9.17.0): dependencies: dotenv: 16.0.3 - eslint: 9.16.0 + eslint: 9.17.0 eslint-scope@5.1.1: dependencies: @@ -12038,14 +12038,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.16.0: + eslint@9.17.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.16.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 '@eslint/core': 0.9.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.16.0 + '@eslint/js': 9.17.0 '@eslint/plugin-kit': 0.2.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -15062,12 +15062,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.18.0(eslint@9.16.0)(typescript@5.7.2): + typescript-eslint@8.18.0(eslint@9.17.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.18.0(eslint@9.16.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.16.0)(typescript@5.7.2) - eslint: 9.16.0 + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index c8a0dec2a..5ede328f9 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "typescript": "^5.7.2" } } From da63d8ebf4b56caa34896d3b41d4784cd333123c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 21:54:17 +0000 Subject: [PATCH 002/262] fix(deps): update dependency drizzle-orm to ^0.38.2 (#1652) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 72436fd1e..d9185a487 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -46,7 +46,7 @@ "better-sqlite3": "^11.7.0", "dotenv": "^16.4.7", "drizzle-kit": "^0.30.1", - "drizzle-orm": "^0.38.1", + "drizzle-orm": "^0.38.2", "drizzle-zod": "^0.6.0", "mysql2": "3.11.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e2f55a68..6df7468cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -875,11 +875,11 @@ importers: specifier: ^0.30.1 version: 0.30.1 drizzle-orm: - specifier: ^0.38.1 - version: 0.38.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) + specifier: ^0.38.2 + version: 0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) drizzle-zod: specifier: ^0.6.0 - version: 0.6.0(drizzle-orm@0.38.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0))(zod@3.24.1) + version: 0.6.0(drizzle-orm@0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.11.5 version: 3.11.5 @@ -4876,8 +4876,8 @@ packages: resolution: {integrity: sha512-HmA/NeewvHywhJ2ENXD3KvOuM/+K2dGLJfxVfIHsGwaqKICJnS+Ke2L6UcSrSrtMJLJaT0Im1Qv4TFXfaZShyw==} hasBin: true - drizzle-orm@0.38.1: - resolution: {integrity: sha512-TpOzNrPGy7dl0/uP9vKD6ATzp9noJaRYhOYqtOCKxxwSmZqrPxN4SW5kWawVUIcbSd2lkbDCdZue+gtVNLmQsg==} + drizzle-orm@0.38.2: + resolution: {integrity: sha512-eCE3yPRAskLo1WpM9OHpFaM70tBEDsWhwR/0M3CKyztAXKR9Qs3asZlcJOEliIcUSg8GuwrlY0dmYDgmm6y5GQ==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -11601,7 +11601,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0): + drizzle-orm@0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 @@ -11610,9 +11610,9 @@ snapshots: mysql2: 3.11.5 react: 19.0.0 - drizzle-zod@0.6.0(drizzle-orm@0.38.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.0(drizzle-orm@0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) + drizzle-orm: 0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) zod: 3.24.1 eastasianwidth@0.2.0: {} From cf9656d91eedc73224e9cfc8871c977988994425 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 14 Dec 2024 15:19:18 +0100 Subject: [PATCH 003/262] fix: styles for light mode (#1645) --- .../manage/_components/hero-banner.module.css | 22 ++++++++++++++----- .../manage/_components/hero-banner.tsx | 2 +- .../src/app/[locale]/manage/apps/page.tsx | 2 +- .../src/app/[locale]/manage/boards/page.tsx | 2 +- .../secrets/integration-secret-card.tsx | 2 +- .../[locale]/manage/search-engines/page.tsx | 2 +- .../tools/tasks/_components/jobs-list.tsx | 2 +- .../_components/create-user-stepper.tsx | 10 ++++----- .../components/icons/picker/icon-picker.tsx | 1 + 9 files changed, 28 insertions(+), 17 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.module.css b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.module.css index 0805459ef..f3b4141aa 100644 --- a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.module.css +++ b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.module.css @@ -1,12 +1,22 @@ .bannerContainer { border-radius: 8px; overflow: hidden; - background: linear-gradient( - 130deg, - #fa52521f 0%, - var(--mantine-color-dark-6) 35%, - var(--mantine-color-dark-6) 100% - ) !important; + @mixin dark { + background: linear-gradient( + 130deg, + #fa52521f 0%, + var(--mantine-color-dark-6) 35%, + var(--mantine-color-dark-6) 100% + ) !important; + } + @mixin light { + background: linear-gradient( + 130deg, + #fa52521f 0%, + var(--mantine-color-gray-3) 35%, + var(--mantine-color-gray-3) 100% + ) !important; + } } .scrollContainer { diff --git a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx index cb1a3094a..575c5afe2 100644 --- a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx +++ b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx @@ -32,9 +32,9 @@ const icons = [ const countIconGroups = 3; const animationDurationInSeconds = 12; +const arrayInChunks = splitToNChunks(icons, countIconGroups); export const HeroBanner = () => { - const arrayInChunks = splitToNChunks(icons, countIconGroups); const gridSpan = 12 / countIconGroups; return ( diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index 8dd13774b..78a3474a4 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -59,7 +59,7 @@ const AppCard = async ({ app }: AppCardProps) => { const session = await auth(); return ( - + { const VisibilityIcon = board.isPublic ? IconWorld : IconLock; return ( - + diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx index 6962390f4..38ac5ec52 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx @@ -30,7 +30,7 @@ export const SecretCard = ({ secret, children, onCancel }: SecretCardProps) => { const KindIcon = integrationSecretIcons[secret.kind]; return ( - + diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index 5d56fe17c..8fe7254ec 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -81,7 +81,7 @@ const SearchEngineCard = async ({ searchEngine }: SearchEngineCardProps) => { const session = await auth(); return ( - + { return ( {jobs.map((job) => ( - + diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx index ecf9397ef..1f2960dbb 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx @@ -149,7 +149,7 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC color={!generalForm.isValid() ? "red" : undefined} >
- + - + - + @@ -198,7 +198,7 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC - + @@ -208,7 +208,7 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC - + {t("step.completed.title")} diff --git a/apps/nextjs/src/components/icons/picker/icon-picker.tsx b/apps/nextjs/src/components/icons/picker/icon-picker.tsx index 8a514f8a5..16797c5aa 100644 --- a/apps/nextjs/src/components/icons/picker/icon-picker.tsx +++ b/apps/nextjs/src/components/icons/picker/icon-picker.tsx @@ -70,6 +70,7 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I overflow: "visible", cursor: "pointer", }} + withBorder > From dd9d8b52610aefe4dbf19f20117ea51264525bcb Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sat, 14 Dec 2024 18:58:46 +0100 Subject: [PATCH 004/262] feat: add update indicator (#1626) --- .../src/components/layout/header/user.tsx | 16 +- .../src/components/user-avatar-menu.tsx | 21 +- package.json | 1 + packages/api/src/root.ts | 2 + packages/api/src/router/update-checker.ts | 11 + packages/cron-jobs/package.json | 3 +- packages/cron-jobs/src/index.ts | 2 + packages/cron-jobs/src/jobs/update-checker.ts | 13 + packages/redis/src/index.ts | 1 + packages/request-handler/package.json | 1 + .../request-handler/src/update-checker.ts | 59 ++++ packages/translation/src/lang/en.json | 6 +- pnpm-lock.yaml | 312 ++++++++++++++++++ 13 files changed, 441 insertions(+), 7 deletions(-) create mode 100644 packages/api/src/router/update-checker.ts create mode 100644 packages/cron-jobs/src/jobs/update-checker.ts create mode 100644 packages/request-handler/src/update-checker.ts diff --git a/apps/nextjs/src/components/layout/header/user.tsx b/apps/nextjs/src/components/layout/header/user.tsx index 6ec355630..0821420b7 100644 --- a/apps/nextjs/src/components/layout/header/user.tsx +++ b/apps/nextjs/src/components/layout/header/user.tsx @@ -1,13 +1,21 @@ -import { UnstyledButton } from "@mantine/core"; +import { Indicator, UnstyledButton } from "@mantine/core"; + +import { api } from "@homarr/api/server"; +import { auth } from "@homarr/auth/next"; import { CurrentUserAvatar } from "~/components/user-avatar"; import { UserAvatarMenu } from "~/components/user-avatar-menu"; -export const UserButton = () => { +export const UserButton = async () => { + const data = await api.updateChecker.getAvailableUpdates(); + const session = await auth(); + const isAdmin = session?.user.permissions.includes("admin"); return ( - + - + + + ); diff --git a/apps/nextjs/src/components/user-avatar-menu.tsx b/apps/nextjs/src/components/user-avatar-menu.tsx index 503642482..173d95ff3 100644 --- a/apps/nextjs/src/components/user-avatar-menu.tsx +++ b/apps/nextjs/src/components/user-avatar-menu.tsx @@ -7,6 +7,7 @@ import { useRouter } from "next/navigation"; import { Center, Menu, Stack, Text, useMantineColorScheme } from "@mantine/core"; import { useHotkeys, useTimeout } from "@mantine/hooks"; import { + IconBellRinging, IconCheck, IconHome, IconLogin, @@ -23,14 +24,17 @@ import { useScopedI18n } from "@homarr/translation/client"; import "flag-icons/css/flag-icons.min.css"; +import type { RouterOutputs } from "@homarr/api"; + import { useAuthContext } from "~/app/[locale]/_client-providers/session"; import { CurrentLanguageCombobox } from "./language/current-language-combobox"; interface UserAvatarMenuProps { children: ReactNode; + availableUpdates?: RouterOutputs["updateChecker"]["getAvailableUpdates"]; } -export const UserAvatarMenu = ({ children }: UserAvatarMenuProps) => { +export const UserAvatarMenu = ({ children, availableUpdates }: UserAvatarMenuProps) => { const t = useScopedI18n("common.userAvatar.menu"); const { colorScheme, toggleColorScheme } = useMantineColorScheme(); useHotkeys([["mod+J", toggleColorScheme]]); @@ -64,6 +68,21 @@ export const UserAvatarMenu = ({ children }: UserAvatarMenuProps) => { // We use keepMounted so we can add event listeners to prevent navigating away without saving the board + {availableUpdates && availableUpdates.length > 0 && availableUpdates[0] && ( + <> + } + > + + {t("updateAvailable", { countUpdates: availableUpdates.length, tag: availableUpdates[0].tagName })} + + + + + )} }> {colorSchemeText} diff --git a/package.json b/package.json index 172c86c67..987c74d7a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "homarr", "private": true, + "version": "1.0.0", "scripts": { "build": "cross-env CI=true turbo build", "clean": "git clean -xdf node_modules", diff --git a/packages/api/src/root.ts b/packages/api/src/root.ts index 1f414de47..107adf6d2 100644 --- a/packages/api/src/root.ts +++ b/packages/api/src/root.ts @@ -13,6 +13,7 @@ import { logRouter } from "./router/log"; import { mediaRouter } from "./router/medias/media-router"; import { searchEngineRouter } from "./router/search-engine/search-engine-router"; import { serverSettingsRouter } from "./router/serverSettings"; +import { updateCheckerRouter } from "./router/update-checker"; import { userRouter } from "./router/user"; import { widgetRouter } from "./router/widgets"; import { createTRPCRouter } from "./trpc"; @@ -35,6 +36,7 @@ export const appRouter = createTRPCRouter({ cronJobs: cronJobsRouter, apiKeys: apiKeysRouter, media: mediaRouter, + updateChecker: updateCheckerRouter, }); // export type definition of API diff --git a/packages/api/src/router/update-checker.ts b/packages/api/src/router/update-checker.ts new file mode 100644 index 000000000..730080873 --- /dev/null +++ b/packages/api/src/router/update-checker.ts @@ -0,0 +1,11 @@ +import { updateCheckerRequestHandler } from "@homarr/request-handler/update-checker"; + +import { createTRPCRouter, protectedProcedure } from "../trpc"; + +export const updateCheckerRouter = createTRPCRouter({ + getAvailableUpdates: protectedProcedure.query(async () => { + const handler = updateCheckerRequestHandler.handler({}); + const data = await handler.getCachedOrUpdatedDataAsync({}); + return data.data.availableUpdates; + }), +}); diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 344b47b0a..6635fa036 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -38,7 +38,8 @@ "@homarr/request-handler": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", - "@homarr/validation": "workspace:^0.1.0" + "@homarr/validation": "workspace:^0.1.0", + "semver-parser": "^4.1.7" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/cron-jobs/src/index.ts b/packages/cron-jobs/src/index.ts index cf4132911..45ddd4505 100644 --- a/packages/cron-jobs/src/index.ts +++ b/packages/cron-jobs/src/index.ts @@ -12,6 +12,7 @@ import { pingJob } from "./jobs/ping"; import type { RssFeed } from "./jobs/rss-feeds"; import { rssFeedsJob } from "./jobs/rss-feeds"; import { sessionCleanupJob } from "./jobs/session-cleanup"; +import { updateCheckerJob } from "./jobs/update-checker"; import { createCronJobGroup } from "./lib"; export const jobGroup = createCronJobGroup({ @@ -29,6 +30,7 @@ export const jobGroup = createCronJobGroup({ indexerManager: indexerManagerJob, healthMonitoring: healthMonitoringJob, sessionCleanup: sessionCleanupJob, + updateChecker: updateCheckerJob, }); export type JobGroupKeys = ReturnType<(typeof jobGroup)["getKeys"]>[number]; diff --git a/packages/cron-jobs/src/jobs/update-checker.ts b/packages/cron-jobs/src/jobs/update-checker.ts new file mode 100644 index 000000000..b985485ab --- /dev/null +++ b/packages/cron-jobs/src/jobs/update-checker.ts @@ -0,0 +1,13 @@ +import { EVERY_HOUR } from "@homarr/cron-jobs-core/expressions"; +import { updateCheckerRequestHandler } from "@homarr/request-handler/update-checker"; + +import { createCronJob } from "../lib"; + +export const updateCheckerJob = createCronJob("updateChecker", EVERY_HOUR, { + runOnStart: true, +}).withCallback(async () => { + const handler = updateCheckerRequestHandler.handler({}); + await handler.getCachedOrUpdatedDataAsync({ + forceUpdate: true, + }); +}); diff --git a/packages/redis/src/index.ts b/packages/redis/src/index.ts index d30adfccd..0f4a99f38 100644 --- a/packages/redis/src/index.ts +++ b/packages/redis/src/index.ts @@ -7,6 +7,7 @@ export { createIntegrationOptionsChannel, createChannelWithLatestAndEvents, handshakeAsync, + createSubPubChannel, } from "./lib/channel"; export const exampleChannel = createSubPubChannel<{ message: string }>("example"); diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 29ec7ad6e..d94d07aa8 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -29,6 +29,7 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "dayjs": "^1.11.13", + "octokit": "^4.0.2", "pretty-print-error": "^1.1.2", "superjson": "2.2.2" }, diff --git a/packages/request-handler/src/update-checker.ts b/packages/request-handler/src/update-checker.ts new file mode 100644 index 000000000..a67eac911 --- /dev/null +++ b/packages/request-handler/src/update-checker.ts @@ -0,0 +1,59 @@ +import dayjs from "dayjs"; +import { Octokit } from "octokit"; +import { compareSemVer, isValidSemVer } from "semver-parser"; + +import { logger } from "@homarr/log"; +import { createChannelWithLatestAndEvents } from "@homarr/redis"; +import { createCachedRequestHandler } from "@homarr/request-handler/lib/cached-request-handler"; + +import packageJson from "../../../package.json"; + +export const updateCheckerRequestHandler = createCachedRequestHandler({ + queryKey: "homarr-update-checker", + cacheDuration: dayjs.duration(1, "hour"), + async requestAsync(_) { + const octokit = new Octokit(); + const releases = await octokit.rest.repos.listReleases({ + owner: "homarr-labs", + repo: "homarr", + }); + + const currentVersion = (packageJson as { version: string }).version; + const availableReleases = []; + + for (const release of releases.data) { + if (!isValidSemVer(release.tag_name)) { + logger.warn(`Unable to parse semantic tag '${release.tag_name}'. Update check might not work.`); + continue; + } + + availableReleases.push(release); + } + + const availableNewerReleases = availableReleases + .filter((release) => compareSemVer(release.tag_name, currentVersion) > 0) + .sort((releaseA, releaseB) => compareSemVer(releaseB.tag_name, releaseA.tag_name)); + if (availableReleases.length > 0) { + logger.info( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + `Update checker found a new available version: ${availableReleases[0]!.tag_name}. Current version is ${currentVersion}`, + ); + } else { + logger.debug(`Update checker did not find any available updates. Current version is ${currentVersion}`); + } + + return { + availableUpdates: availableNewerReleases.map((release) => ({ + name: release.name, + contentHtml: release.body_html, + url: release.html_url, + tagName: release.tag_name, + })), + }; + }, + createRedisChannel() { + return createChannelWithLatestAndEvents<{ + availableUpdates: { name: string | null; contentHtml?: string; url: string; tagName: string }[]; + }>("homarr:update"); + }, +}); diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 3ad0c7e85..95c6d6c21 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -733,7 +733,8 @@ "logout": "Logout", "login": "Login", "homeBoard": "Your home board", - "loggedOut": "Logged out" + "loggedOut": "Logged out", + "updateAvailable": "{countUpdates} updates available: {tag}" } }, "dangerZone": "Danger zone", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "Session Cleanup" + }, + "updateChecker": { + "label": "Update checker" } } }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6df7468cd..f89f38f8b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -797,6 +797,9 @@ importers: '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation + semver-parser: + specifier: ^4.1.7 + version: 4.1.7 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1346,6 +1349,9 @@ importers: dayjs: specifier: ^1.11.13 version: 1.11.13 + octokit: + specifier: ^4.0.2 + version: 4.0.2 pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=4arrfgbz7em6s4gqywse7esg4u) @@ -3047,6 +3053,113 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@octokit/app@15.1.1': + resolution: {integrity: sha512-fk8xrCSPTJGpyBdBNI+DcZ224dm0aApv4vi6X7/zTmANXlegKV2Td+dJ+fd7APPaPN7R+xttUsj2Fm+AFDSfMQ==} + engines: {node: '>= 18'} + + '@octokit/auth-app@7.1.3': + resolution: {integrity: sha512-GZdkOp2kZTIy5dG9oXqvzUAZiPvDx4C/lMlN6yQjtG9d/+hYa7W8WXTJoOrXE8UdfL9A/sZMl206dmtkl9lwVQ==} + engines: {node: '>= 18'} + + '@octokit/auth-oauth-app@8.1.1': + resolution: {integrity: sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==} + engines: {node: '>= 18'} + + '@octokit/auth-oauth-device@7.1.1': + resolution: {integrity: sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==} + engines: {node: '>= 18'} + + '@octokit/auth-oauth-user@5.1.1': + resolution: {integrity: sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==} + engines: {node: '>= 18'} + + '@octokit/auth-token@5.1.1': + resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} + engines: {node: '>= 18'} + + '@octokit/auth-unauthenticated@6.1.0': + resolution: {integrity: sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==} + engines: {node: '>= 18'} + + '@octokit/core@6.1.2': + resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@10.1.1': + resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} + engines: {node: '>= 18'} + + '@octokit/graphql@8.1.1': + resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==} + engines: {node: '>= 18'} + + '@octokit/oauth-app@7.1.3': + resolution: {integrity: sha512-EHXbOpBkSGVVGF1W+NLMmsnSsJRkcrnVmDKt0TQYRBb6xWfWzoi9sBD4DIqZ8jGhOWO/V8t4fqFyJ4vDQDn9bg==} + engines: {node: '>= 18'} + + '@octokit/oauth-authorization-url@7.1.1': + resolution: {integrity: sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==} + engines: {node: '>= 18'} + + '@octokit/oauth-methods@5.1.2': + resolution: {integrity: sha512-C5lglRD+sBlbrhCUTxgJAFjWgJlmTx5bQ7Ch0+2uqRjYv7Cfb5xpX4WuSC9UgQna3sqRGBL9EImX9PvTpMaQ7g==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@22.2.0': + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + + '@octokit/openapi-webhooks-types@8.5.1': + resolution: {integrity: sha512-i3h1b5zpGSB39ffBbYdSGuAd0NhBAwPyA3QV3LYi/lx4lsbZiu7u2UHgXVUR6EpvOI8REOuVh1DZTRfHoJDvuQ==} + + '@octokit/plugin-paginate-graphql@5.2.4': + resolution: {integrity: sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-paginate-rest@11.3.6': + resolution: {integrity: sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@13.2.6': + resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-retry@7.1.2': + resolution: {integrity: sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-throttling@9.3.2': + resolution: {integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': ^6.0.0 + + '@octokit/request-error@6.1.5': + resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==} + engines: {node: '>= 18'} + + '@octokit/request@9.1.3': + resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==} + engines: {node: '>= 18'} + + '@octokit/types@13.6.2': + resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + + '@octokit/webhooks-methods@5.1.0': + resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==} + engines: {node: '>= 18'} + + '@octokit/webhooks@13.4.1': + resolution: {integrity: sha512-I5YPUtfWidh+OzyrlDahJsUpkpGK0kCTmDRbuqGmlCUzOtxdEkX3R4d6Cd08ijQYwkVXQJanPdbKuZBeV2NMaA==} + engines: {node: '>= 18'} + '@panva/hkdf@1.2.1': resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} @@ -3693,6 +3806,9 @@ packages: '@types/asn1@0.2.4': resolution: {integrity: sha512-V91DSJ2l0h0gRhVP4oBfBzRBN9lAbPUkGDMCnwedqPKX2d84aAMc9CulOvxdw1f7DfEYx99afab+Rsm3e52jhA==} + '@types/aws-lambda@8.10.146': + resolution: {integrity: sha512-3BaDXYTh0e6UCJYL/jwV/3+GRslSc08toAiZSmleYtkAUyV5rtvdPYxrG/88uqvTuT6sb27WE9OS90ZNTIuQ0g==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4306,6 +4422,9 @@ packages: resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} engines: {node: '>= 10.0.0'} + before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + bellajs@11.2.0: resolution: {integrity: sha512-Wjss+Bc674ZABPr+SCKWTqA4V1pyYFhzDTjNBJy4jdmgOv0oGIGXeKBRJyINwP5tIy+iIZD9SfgZpztduzQ5QA==} engines: {node: '>= 18.4'} @@ -4322,6 +4441,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} engines: {node: '>=10'} @@ -6511,6 +6633,10 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} + octokit@4.0.2: + resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==} + engines: {node: '>= 18'} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -7250,6 +7376,9 @@ packages: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} + semver-parser@4.1.7: + resolution: {integrity: sha512-RNNvmr1JKZ4Eia7Cyfxtr6aR7eiQs1bPGBv4EC3OJ5pTKEoHjLsT+dY1SSny2tq/uqx9bzNR4lL8tzaB70TN9A==} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -7685,6 +7814,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} + engines: {node: '>=12'} + toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -7921,6 +8054,12 @@ packages: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} + universal-github-app-jwt@2.2.0: + resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} + + universal-user-agent@7.0.2: + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -9391,6 +9530,152 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@octokit/app@15.1.1': + dependencies: + '@octokit/auth-app': 7.1.3 + '@octokit/auth-unauthenticated': 6.1.0 + '@octokit/core': 6.1.2 + '@octokit/oauth-app': 7.1.3 + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) + '@octokit/types': 13.6.2 + '@octokit/webhooks': 13.4.1 + + '@octokit/auth-app@7.1.3': + dependencies: + '@octokit/auth-oauth-app': 8.1.1 + '@octokit/auth-oauth-user': 5.1.1 + '@octokit/request': 9.1.3 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + toad-cache: 3.7.0 + universal-github-app-jwt: 2.2.0 + universal-user-agent: 7.0.2 + + '@octokit/auth-oauth-app@8.1.1': + dependencies: + '@octokit/auth-oauth-device': 7.1.1 + '@octokit/auth-oauth-user': 5.1.1 + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/auth-oauth-device@7.1.1': + dependencies: + '@octokit/oauth-methods': 5.1.2 + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/auth-oauth-user@5.1.1': + dependencies: + '@octokit/auth-oauth-device': 7.1.1 + '@octokit/oauth-methods': 5.1.2 + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/auth-token@5.1.1': {} + + '@octokit/auth-unauthenticated@6.1.0': + dependencies: + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + + '@octokit/core@6.1.2': + dependencies: + '@octokit/auth-token': 5.1.1 + '@octokit/graphql': 8.1.1 + '@octokit/request': 9.1.3 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + + '@octokit/endpoint@10.1.1': + dependencies: + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/graphql@8.1.1': + dependencies: + '@octokit/request': 9.1.3 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/oauth-app@7.1.3': + dependencies: + '@octokit/auth-oauth-app': 8.1.1 + '@octokit/auth-oauth-user': 5.1.1 + '@octokit/auth-unauthenticated': 6.1.0 + '@octokit/core': 6.1.2 + '@octokit/oauth-authorization-url': 7.1.1 + '@octokit/oauth-methods': 5.1.2 + '@types/aws-lambda': 8.10.146 + universal-user-agent: 7.0.2 + + '@octokit/oauth-authorization-url@7.1.1': {} + + '@octokit/oauth-methods@5.1.2': + dependencies: + '@octokit/oauth-authorization-url': 7.1.1 + '@octokit/request': 9.1.3 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + + '@octokit/openapi-types@22.2.0': {} + + '@octokit/openapi-webhooks-types@8.5.1': {} + + '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + + '@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.2 + + '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.2 + + '@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + bottleneck: 2.19.5 + + '@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/types': 13.6.2 + bottleneck: 2.19.5 + + '@octokit/request-error@6.1.5': + dependencies: + '@octokit/types': 13.6.2 + + '@octokit/request@9.1.3': + dependencies: + '@octokit/endpoint': 10.1.1 + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + universal-user-agent: 7.0.2 + + '@octokit/types@13.6.2': + dependencies: + '@octokit/openapi-types': 22.2.0 + + '@octokit/webhooks-methods@5.1.0': {} + + '@octokit/webhooks@13.4.1': + dependencies: + '@octokit/openapi-webhooks-types': 8.5.1 + '@octokit/request-error': 6.1.5 + '@octokit/webhooks-methods': 5.1.0 + '@panva/hkdf@1.2.1': {} '@paralleldrive/cuid2@2.2.2': @@ -10239,6 +10524,8 @@ snapshots: dependencies: '@types/node': 22.10.2 + '@types/aws-lambda@8.10.146': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.26.2 @@ -11020,6 +11307,8 @@ snapshots: - encoding - supports-color + before-after-hook@3.0.2: {} + bellajs@11.2.0: {} better-sqlite3@11.7.0: @@ -11039,6 +11328,8 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + bottleneck@2.19.5: {} + boxen@5.1.2: dependencies: ansi-align: 3.0.1 @@ -13424,6 +13715,19 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + octokit@4.0.2: + dependencies: + '@octokit/app': 15.1.1 + '@octokit/core': 6.1.2 + '@octokit/oauth-app': 7.1.3 + '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.2) + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) + '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) + '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2) + '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2) + '@octokit/request-error': 6.1.5 + '@octokit/types': 13.6.2 + ofetch@1.4.1: dependencies: destr: 2.0.3 @@ -14319,6 +14623,8 @@ snapshots: dependencies: semver: 6.3.1 + semver-parser@4.1.7: {} + semver@6.3.1: {} semver@7.6.2: {} @@ -14876,6 +15182,8 @@ snapshots: dependencies: is-number: 7.0.0 + toad-cache@3.7.0: {} + toggle-selection@1.0.6: {} toidentifier@1.0.1: {} @@ -15114,6 +15422,10 @@ snapshots: dependencies: crypto-random-string: 2.0.0 + universal-github-app-jwt@2.2.0: {} + + universal-user-agent@7.0.2: {} + universalify@2.0.1: {} unpipe@1.0.0: {} From 3347886f1e6754f9dd0f8a9975c51bf61b0d3f59 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 14 Dec 2024 18:19:18 +0000 Subject: [PATCH 005/262] fix(deps): update dependency tldts to ^6.1.68 (#1656) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/common/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/common/package.json b/packages/common/package.json index 8ab408ecc..2aebbd6a9 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -29,7 +29,7 @@ "dayjs": "^1.11.13", "next": "^14.2.20", "react": "^19.0.0", - "tldts": "^6.1.67" + "tldts": "^6.1.68" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f89f38f8b..bca93d04f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -675,8 +675,8 @@ importers: specifier: ^19.0.0 version: 19.0.0 tldts: - specifier: ^6.1.67 - version: 6.1.67 + specifier: ^6.1.68 + version: 6.1.68 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -7795,11 +7795,11 @@ packages: title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - tldts-core@6.1.67: - resolution: {integrity: sha512-12K5O4m3uUW6YM5v45Z7wc6NTSmAYj4Tq3de7eXghZkp879IlfPJrUWeWFwu1FS94U5t2vwETgJ1asu8UGNKVQ==} + tldts-core@6.1.68: + resolution: {integrity: sha512-85TdlS/DLW/gVdf2oyyzqp3ocS30WxjaL4la85EArl9cHUR/nizifKAJPziWewSZjDZS71U517/i6ciUeqtB5Q==} - tldts@6.1.67: - resolution: {integrity: sha512-714VbegxoZ9WF5/IsVCy9rWXKUpPkJq87ebWLXQzNawce96l5oRrRf2eHzB4pT2g/4HQU1dYbu+sdXClYxlDKQ==} + tldts@6.1.68: + resolution: {integrity: sha512-JKF17jROiYkjJPT73hUTEiTp2OBCf+kAlB+1novk8i6Q6dWjHsgEjw9VLiipV4KTJavazXhY1QUXyQFSem2T7w==} hasBin: true tmp@0.0.33: @@ -15166,11 +15166,11 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - tldts-core@6.1.67: {} + tldts-core@6.1.68: {} - tldts@6.1.67: + tldts@6.1.68: dependencies: - tldts-core: 6.1.67 + tldts-core: 6.1.68 tmp@0.0.33: dependencies: @@ -15192,7 +15192,7 @@ snapshots: tough-cookie@5.0.0: dependencies: - tldts: 6.1.67 + tldts: 6.1.68 tr46@0.0.3: {} From 2ef36366ec5932bae1c4af4199a422712c985a45 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:13:21 +0100 Subject: [PATCH 006/262] chore(lang): updated translations from crowdin (#1658) Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cs.json | 6 +++- packages/translation/src/lang/da.json | 6 +++- packages/translation/src/lang/de.json | 6 +++- packages/translation/src/lang/el.json | 6 +++- packages/translation/src/lang/es.json | 6 +++- packages/translation/src/lang/et.json | 6 +++- packages/translation/src/lang/fr.json | 6 +++- packages/translation/src/lang/he.json | 6 +++- packages/translation/src/lang/hr.json | 6 +++- packages/translation/src/lang/hu.json | 6 +++- packages/translation/src/lang/it.json | 6 +++- packages/translation/src/lang/ja.json | 6 +++- packages/translation/src/lang/ko.json | 6 +++- packages/translation/src/lang/lt.json | 6 +++- packages/translation/src/lang/lv.json | 6 +++- packages/translation/src/lang/nl.json | 46 +++++++++++++++------------ packages/translation/src/lang/no.json | 6 +++- packages/translation/src/lang/pl.json | 6 +++- packages/translation/src/lang/pt.json | 6 +++- packages/translation/src/lang/ro.json | 6 +++- packages/translation/src/lang/ru.json | 6 +++- packages/translation/src/lang/sk.json | 6 +++- packages/translation/src/lang/sl.json | 6 +++- packages/translation/src/lang/sv.json | 6 +++- packages/translation/src/lang/tr.json | 6 +++- packages/translation/src/lang/uk.json | 6 +++- packages/translation/src/lang/vi.json | 6 +++- packages/translation/src/lang/zh.json | 6 +++- 28 files changed, 160 insertions(+), 48 deletions(-) diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 7f85bfb93..dc9fc260b 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -733,7 +733,8 @@ "logout": "", "login": "Přihlásit se", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Nebezpečná zóna", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index ae4c57afb..5bdf2b96a 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -733,7 +733,8 @@ "logout": "", "login": "Log ind", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Farezone", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index e8bcf21d7..8c776350b 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -733,7 +733,8 @@ "logout": "", "login": "Anmelden", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Gefahrenzone", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index cdefe17f3..43eaf4119 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -733,7 +733,8 @@ "logout": "", "login": "Σύνδεση", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Επικίνδυνη Περιοχή", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index afd5fa731..d007af9a8 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -733,7 +733,8 @@ "logout": "", "login": "Iniciar sesión", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Zona de riesgo", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index aa129b710..d607abd37 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -733,7 +733,8 @@ "logout": "", "login": "", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 821a68655..afc872277 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -733,7 +733,8 @@ "logout": "", "login": "Connexion", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Zone de danger", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index c9bf4c283..8e4c93e67 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -733,7 +733,8 @@ "logout": "", "login": "התחבר/י", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "אזור מסוכן", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 0fcc1d3ca..680cc748f 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -733,7 +733,8 @@ "logout": "", "login": "Prijaviti se", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Opasna zona", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 5d0362003..aaefc047e 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -733,7 +733,8 @@ "logout": "", "login": "Bejelentkezés", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Veszélyzóna", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 4977d9f87..7dac92af4 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -733,7 +733,8 @@ "logout": "", "login": "Accedi", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 970a14ad5..556040a4b 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -733,7 +733,8 @@ "logout": "", "login": "ログイン", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "危険な操作", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 6403d0ac3..c7ba28a85 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -733,7 +733,8 @@ "logout": "", "login": "로그인", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "위험한 설정", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 9888e0ef3..545357a49 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -733,7 +733,8 @@ "logout": "", "login": "Prisijungti", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index c4901706e..d0cdde7c3 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -733,7 +733,8 @@ "logout": "", "login": "Pieslēgties", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Bīstamā zona", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index c509c3ef4..741bd89c2 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -4,23 +4,23 @@ "name": "Gebruiker", "page": { "login": { - "title": "", - "subtitle": "" + "title": "Log in op je account", + "subtitle": "Welkom terug! Voer je inloggegevens in" }, "invite": { - "title": "", - "subtitle": "", - "description": "" + "title": "Deelnemen aan Homarr", + "subtitle": "Welkom bij Homarr! Maak een account aan", + "description": "Je bent uitgenodigd door {username}" }, "init": { - "title": "", - "subtitle": "" + "title": "Nieuwe Homarr installatie", + "subtitle": "Maak de eerste beheerdersgebruiker aan" } }, "field": { "email": { "label": "E-mail", - "verified": "" + "verified": "Geverifiëerd" }, "username": { "label": "Gebruikersnaam" @@ -28,7 +28,7 @@ "password": { "label": "Wachtwoord", "requirement": { - "length": "", + "length": "Bevat ten minste 8 tekens", "lowercase": "Inclusief kleine letter", "uppercase": "Inclusief hoofdletter", "number": "Inclusief aantal", @@ -39,35 +39,35 @@ "label": "Wachtwoord bevestigen" }, "previousPassword": { - "label": "" + "label": "Vorig wachtwoord" }, "homeBoard": { - "label": "" + "label": "Home bord" }, "pingIconsEnabled": { - "label": "" + "label": "Gebruik iconen voor pings" } }, "error": { - "usernameTaken": "" + "usernameTaken": "Gebruikersnaam is al in gebruik" }, "action": { "login": { "label": "Inloggen", - "labelWith": "", + "labelWith": "Login met {provider}", "notification": { "success": { - "title": "", - "message": "" + "title": "Login succesvol", + "message": "Je bent nu ingelogd" }, "error": { - "title": "", - "message": "" + "title": "Login mislukt", + "message": "Je login is mislukt" } }, "forgotPassword": { - "label": "", - "description": "" + "label": "Wachtwoord vergeten?", + "description": "Een beheerder kan het volgende commando gebruiken om je wachtwoord opnieuw in te stellen:" } }, "register": { @@ -733,7 +733,8 @@ "logout": "", "login": "Inloggen", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Gevarenzone", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 7ca020a0b..954c487fc 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -733,7 +733,8 @@ "logout": "", "login": "Logg Inn", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Faresonen", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index c0dd2195c..65222f3d2 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -733,7 +733,8 @@ "logout": "", "login": "Zaloguj się", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Strefa zagrożenia", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 3a5ed4932..13069a45e 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -733,7 +733,8 @@ "logout": "", "login": "“Login”", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Zona de risco", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index deadfdb40..45b343c76 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -733,7 +733,8 @@ "logout": "", "login": "Utilizator", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Zonă periculoasă", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 0c42d7040..efbba6e0f 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -733,7 +733,8 @@ "logout": "", "login": "Вход в систему", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Зона опасности", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 0b0db98ac..e87981988 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -733,7 +733,8 @@ "logout": "", "login": "Prihlásiť sa", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Nebezpečná zóna", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index b16c4c6b3..383d1ebc9 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -733,7 +733,8 @@ "logout": "", "login": "Prijava", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Nevarno območje", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 33e56d1fd..1ca7a14a9 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -733,7 +733,8 @@ "logout": "", "login": "Logga in", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Farozon", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 00f73dab9..31f7a7fcc 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -733,7 +733,8 @@ "logout": "", "login": "Giriş", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Tehlikeli bölge", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 880b1893f..95eb9e797 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -733,7 +733,8 @@ "logout": "", "login": "Логін", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Небезпечна зона", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 9edf37d76..84454ace3 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -733,7 +733,8 @@ "logout": "", "login": "Đăng nhập", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "Khu vực nguy hiểm", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 5ec0e4e15..788320aad 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -733,7 +733,8 @@ "logout": "", "login": "", "homeBoard": "", - "loggedOut": "" + "loggedOut": "", + "updateAvailable": "" } }, "dangerZone": "", @@ -2153,6 +2154,9 @@ }, "sessionCleanup": { "label": "" + }, + "updateChecker": { + "label": "" } } }, From 60311918ce31ec9ae84cadbc450fc5732f173536 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 12:34:42 +0100 Subject: [PATCH 007/262] feat: add error page for docker tools page (#1655) --- .../[locale]/manage/tools/docker/error.tsx | 27 ++++++ .../api/src/router/docker/docker-router.ts | 85 ++++++++++++------- packages/translation/src/lang/en.json | 7 +- .../widgets/src/errors/base-component.tsx | 2 +- 4 files changed, 84 insertions(+), 37 deletions(-) create mode 100644 apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx diff --git a/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx b/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx new file mode 100644 index 000000000..4fe1ae7b0 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/manage/tools/docker/error.tsx @@ -0,0 +1,27 @@ +"use client"; + +import Link from "next/link"; +import { Anchor, Center, Stack, Text } from "@mantine/core"; +import { IconShipOff } from "@tabler/icons-react"; + +import { useI18n } from "@homarr/translation/client"; + +export default function DockerErrorPage() { + const t = useI18n(); + + return ( +
+ + + + + {t("docker.error.internalServerError")} + + + {t("common.action.checkLogs")} + + + +
+ ); +} diff --git a/packages/api/src/router/docker/docker-router.ts b/packages/api/src/router/docker/docker-router.ts index 127573173..0559e6211 100644 --- a/packages/api/src/router/docker/docker-router.ts +++ b/packages/api/src/router/docker/docker-router.ts @@ -5,6 +5,7 @@ import type { Container } from "dockerode"; import { db, like, or } from "@homarr/db"; import { icons } from "@homarr/db/schema/sqlite"; import type { DockerContainerState } from "@homarr/definitions"; +import { logger } from "@homarr/log"; import { createCacheChannel } from "@homarr/redis"; import { z } from "@homarr/validation"; @@ -17,42 +18,60 @@ const dockerCache = createCacheChannel<{ export const dockerRouter = createTRPCRouter({ getContainers: permissionRequiredProcedure.requiresPermission("admin").query(async () => { - const { timestamp, data } = await dockerCache.consumeAsync(async () => { - const dockerInstances = DockerSingleton.getInstance(); - const containers = await Promise.all( - // Return all the containers of all the instances into only one item - dockerInstances.map(({ instance, host: key }) => - instance.listContainers({ all: true }).then((containers) => - containers.map((container) => ({ - ...container, - instance: key, - })), + const result = await dockerCache + .consumeAsync(async () => { + const dockerInstances = DockerSingleton.getInstance(); + const containers = await Promise.all( + // Return all the containers of all the instances into only one item + dockerInstances.map(({ instance, host: key }) => + instance.listContainers({ all: true }).then((containers) => + containers.map((container) => ({ + ...container, + instance: key, + })), + ), ), - ), - ).then((containers) => containers.flat()); + ).then((containers) => containers.flat()); - const extractImage = (container: Docker.ContainerInfo) => - container.Image.split("/").at(-1)?.split(":").at(0) ?? ""; - const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`)); - const dbIcons = - likeQueries.length >= 1 - ? await db.query.icons.findMany({ - where: or(...likeQueries), - }) - : []; + const extractImage = (container: Docker.ContainerInfo) => + container.Image.split("/").at(-1)?.split(":").at(0) ?? ""; + const likeQueries = containers.map((container) => like(icons.name, `%${extractImage(container)}%`)); + const dbIcons = + likeQueries.length >= 1 + ? await db.query.icons.findMany({ + where: or(...likeQueries), + }) + : []; - return { - containers: containers.map((container) => ({ - ...container, - iconUrl: - dbIcons.find((icon) => { - const extractedImage = extractImage(container); - if (!extractedImage) return false; - return icon.name.toLowerCase().includes(extractedImage.toLowerCase()); - })?.url ?? null, - })), - }; - }); + return { + containers: containers.map((container) => ({ + ...container, + iconUrl: + dbIcons.find((icon) => { + const extractedImage = extractImage(container); + if (!extractedImage) return false; + return icon.name.toLowerCase().includes(extractedImage.toLowerCase()); + })?.url ?? null, + })), + }; + }) + .catch((error) => { + logger.error(error); + return { + isError: true, + error: error as unknown, + }; + }); + + if ("isError" in result) { + throw new TRPCError({ + code: "INTERNAL_SERVER_ERROR", + message: "An error occurred while fetching the containers", + cause: result.error, + }); + } + + const { data, timestamp } = result; return { containers: sanitizeContainers(data.containers), diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 95c6d6c21..2d8dd3e76 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -678,6 +678,7 @@ "previous": "Previous", "next": "Next", "checkoutDocs": "Check out the documentation", + "checkLogs": "Check logs for more details", "tryAgain": "Try again", "loading": "Loading" }, @@ -1309,9 +1310,6 @@ "description": "Click to create a new app" }, "error": { - "action": { - "logs": "Check logs for more details" - }, "noIntegration": "No integration selected", "noData": "No integration data available" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "Failed to fetch Docker containers" } }, "permission": { diff --git a/packages/widgets/src/errors/base-component.tsx b/packages/widgets/src/errors/base-component.tsx index 61f50389a..8c4e12b40 100644 --- a/packages/widgets/src/errors/base-component.tsx +++ b/packages/widgets/src/errors/base-component.tsx @@ -23,7 +23,7 @@ export const BaseWidgetError = (props: BaseWidgetErrorProps) => { {translateIfNecessary(t, props.message)} {props.showLogsLink && ( - {t("widget.common.error.action.logs")} + {t("common.action.checkLogs")} )} From f8571059941a4c13b9b8bca24b399ca06a8aa13f Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 13:00:53 +0100 Subject: [PATCH 008/262] fix: trpc error at least one integration (#1660) --- .../components/board/items/item-content.tsx | 15 ++++++++++++++- .../src/dns-hole/controls/component.tsx | 5 ----- .../src/dns-hole/summary/component.tsx | 5 ----- packages/widgets/src/downloads/component.tsx | 5 ----- .../src/health-monitoring/component.tsx | 4 ---- .../widgets/src/indexer-manager/component.tsx | 5 ----- .../src/media-requests/list/component.tsx | 3 --- .../src/media-requests/stats/component.tsx | 3 --- .../src/smart-home/entity-state/component.tsx | 19 ++++--------------- 9 files changed, 18 insertions(+), 46 deletions(-) diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index 930cde473..bd9d7c8e3 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -2,9 +2,10 @@ import { Card } from "@mantine/core"; import { useElementSize } from "@mantine/hooks"; import { QueryErrorResetBoundary } from "@tanstack/react-query"; import combineClasses from "clsx"; +import { NoIntegrationSelectedError } from "node_modules/@homarr/widgets/src/errors"; import { ErrorBoundary } from "react-error-boundary"; -import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues } from "@homarr/widgets"; +import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets"; import { WidgetError } from "@homarr/widgets/errors"; import type { Item } from "~/app/[locale]/boards/_types"; @@ -54,11 +55,14 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { const board = useRequiredBoard(); const [isEditMode] = useEditMode(); const Comp = loadWidgetDynamic(item.kind); + const { definition } = widgetImports[item.kind]; const options = reduceWidgetOptionsWithDefaultValues(item.kind, item.options); const newItem = { ...item, options }; const { updateItemOptions } = useItemActions(); const updateOptions = ({ newOptions }: { newOptions: Record }) => updateItemOptions({ itemId: item.id, newOptions }); + const widgetSupportsIntegrations = + "supportedIntegrations" in definition && definition.supportedIntegrations.length >= 1; return ( @@ -72,6 +76,10 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { )} > + { ); }; + +const Throw = ({ when, error }: { when: boolean; error: Error }) => { + if (when) throw error; + return null; +}; diff --git a/packages/widgets/src/dns-hole/controls/component.tsx b/packages/widgets/src/dns-hole/controls/component.tsx index 36324d329..5c98e5e6a 100644 --- a/packages/widgets/src/dns-hole/controls/component.tsx +++ b/packages/widgets/src/dns-hole/controls/component.tsx @@ -29,7 +29,6 @@ import { useI18n } from "@homarr/translation/client"; import type { widgetKind } from "."; import type { WidgetComponentProps } from "../../definition"; -import { NoIntegrationSelectedError } from "../../errors"; import TimerModal from "./TimerModal"; const dnsLightStatus = (enabled: boolean | undefined) => @@ -184,10 +183,6 @@ export default function DnsHoleControlsWidget({ const controlAllButtonsVisible = options.showToggleAllButtons && integrationsWithInteractions.length > 0; - if (integrationIds.length === 0) { - throw new NoIntegrationSelectedError(); - } - return ( ) { const [summaries] = clientApi.widget.dnsHole.summary.useSuspenseQuery( @@ -62,10 +61,6 @@ export default function DnsHoleSummaryWidget({ options, integrationIds }: Widget const data = useMemo(() => summaries.flatMap(({ summary }) => summary), [summaries]); - if (integrationIds.length === 0) { - throw new NoIntegrationSelectedError(); - } - return ( {data.length > 0 ? ( diff --git a/packages/widgets/src/downloads/component.tsx b/packages/widgets/src/downloads/component.tsx index 37aac837c..ec80cf141 100644 --- a/packages/widgets/src/downloads/component.tsx +++ b/packages/widgets/src/downloads/component.tsx @@ -45,7 +45,6 @@ import type { ExtendedClientStatus, ExtendedDownloadClientItem } from "@homarr/i import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; -import { NoIntegrationSelectedError } from "../errors"; //Ratio table for relative width between columns const columnsRatios: Record = { @@ -636,10 +635,6 @@ export default function DownloadClientsWidget({ { up: 0, down: 0 }, ); - if (integrationIds.length === 0) { - throw new NoIntegrationSelectedError(); - } - if (options.columns.length === 0) return (
diff --git a/packages/widgets/src/health-monitoring/component.tsx b/packages/widgets/src/health-monitoring/component.tsx index fdde45dfa..b150ca91f 100644 --- a/packages/widgets/src/health-monitoring/component.tsx +++ b/packages/widgets/src/health-monitoring/component.tsx @@ -37,7 +37,6 @@ import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; -import { NoIntegrationSelectedError } from "../errors"; dayjs.extend(duration); @@ -76,9 +75,6 @@ export default function HealthMonitoringWidget({ options, integrationIds }: Widg }, ); - if (integrationIds.length === 0) { - throw new NoIntegrationSelectedError(); - } return ( {healthData.map(({ integrationId, integrationName, healthInfo, updatedAt }) => { diff --git a/packages/widgets/src/indexer-manager/component.tsx b/packages/widgets/src/indexer-manager/component.tsx index 59b29bc7b..1ba4fc273 100644 --- a/packages/widgets/src/indexer-manager/component.tsx +++ b/packages/widgets/src/indexer-manager/component.tsx @@ -7,7 +7,6 @@ import { clientApi } from "@homarr/api/client"; import { useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; -import { NoIntegrationSelectedError } from "../errors"; export default function IndexerManagerWidget({ options, integrationIds }: WidgetComponentProps<"indexerManager">) { const t = useI18n(); @@ -39,10 +38,6 @@ export default function IndexerManagerWidget({ options, integrationIds }: Widget const iconStyle = { height: "7.5cqmin", width: "7.5cqmin" }; - if (integrationIds.length === 0) { - throw new NoIntegrationSelectedError(); - } - return ( diff --git a/packages/widgets/src/media-requests/list/component.tsx b/packages/widgets/src/media-requests/list/component.tsx index 301c98813..106ca07c4 100644 --- a/packages/widgets/src/media-requests/list/component.tsx +++ b/packages/widgets/src/media-requests/list/component.tsx @@ -9,7 +9,6 @@ import type { ScopedTranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../../definition"; -import { NoIntegrationSelectedError } from "../../errors"; import { NoIntegrationDataError } from "../../errors/no-data-integration"; export default function MediaServerWidget({ @@ -58,8 +57,6 @@ export default function MediaServerWidget({ const { mutate: mutateRequestAnswer } = clientApi.widget.mediaRequests.answerRequest.useMutation(); - if (integrationIds.length === 0) throw new NoIntegrationSelectedError(); - if (mediaRequests.length === 0) throw new NoIntegrationDataError(); return ( diff --git a/packages/widgets/src/media-requests/stats/component.tsx b/packages/widgets/src/media-requests/stats/component.tsx index 021b24509..45fdea032 100644 --- a/packages/widgets/src/media-requests/stats/component.tsx +++ b/packages/widgets/src/media-requests/stats/component.tsx @@ -21,7 +21,6 @@ import type { RequestStats } from "@homarr/integrations/types"; import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../../definition"; -import { NoIntegrationSelectedError } from "../../errors"; import { NoIntegrationDataError } from "../../errors/no-data-integration"; import classes from "./component.module.css"; @@ -43,8 +42,6 @@ export default function MediaServerWidget({ const { width, height, ref } = useElementSize(); - if (integrationIds.length === 0) throw new NoIntegrationSelectedError(); - if (requestStats.users.length === 0 && requestStats.stats.length === 0) throw new NoIntegrationDataError(); //Add processing and available diff --git a/packages/widgets/src/smart-home/entity-state/component.tsx b/packages/widgets/src/smart-home/entity-state/component.tsx index 60dcdb9db..766c9aaf8 100644 --- a/packages/widgets/src/smart-home/entity-state/component.tsx +++ b/packages/widgets/src/smart-home/entity-state/component.tsx @@ -8,27 +8,16 @@ import { clientApi } from "@homarr/api/client"; import { useRegisterSpotlightContextActions } from "@homarr/spotlight"; import type { WidgetComponentProps } from "../../definition"; -import { NoIntegrationSelectedError } from "../../errors"; export default function SmartHomeEntityStateWidget({ options, integrationIds, isEditMode, }: WidgetComponentProps<"smartHome-entityState">) { - const integrationId = integrationIds[0]; + // It will always have at least one integration as otherwise the NoIntegrationSelectedError would be thrown in item-content.tsx + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const integrationId = integrationIds[0]!; - if (!integrationId) { - throw new NoIntegrationSelectedError(); - } - - return ; -} - -type InnerComponentProps = Pick, "options" | "isEditMode"> & { - integrationId: string; -}; - -const InnerComponent = ({ options, integrationId, isEditMode }: InnerComponentProps) => { const input = { entityId: options.entityId, integrationId, @@ -103,4 +92,4 @@ const InnerComponent = ({ options, integrationId, isEditMode }: InnerComponentPr
); -}; +} From 5bdc669e07c788f3b47009a4f5c3c2c785dda111 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 13:02:44 +0100 Subject: [PATCH 009/262] fix: auto-merge for crowdin download pull request not working (#1661) --- .github/workflows/crowdin-schedule-download.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/crowdin-schedule-download.yml b/.github/workflows/crowdin-schedule-download.yml index 15c9aad2e..329cc8aa5 100644 --- a/.github/workflows/crowdin-schedule-download.yml +++ b/.github/workflows/crowdin-schedule-download.yml @@ -42,7 +42,8 @@ jobs: CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} - name: Enable auto-merge + if: steps.crowdin-download.outputs.pull_request_number != '' && steps.crowdin-download.outputs.pull_request_number != null env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} run: | - gh pr merge ${{steps.crowdin-download.pull_request_number}} --auto --merge --squash --delete-branch --title "chore(lang): updated translations from crowdin" + gh pr merge ${{steps.crowdin-download.outputs.pull_request_number}} --auto --merge --squash --delete-branch --subject "chore(lang): updated translations from crowdin" From f330c7e4f1a8e097e2f594c47061f98c7c9e0034 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 13:11:49 +0100 Subject: [PATCH 010/262] fix: auto-merge crowdin pr not working (#1664) --- .github/workflows/crowdin-schedule-download.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/crowdin-schedule-download.yml b/.github/workflows/crowdin-schedule-download.yml index 329cc8aa5..2891536a4 100644 --- a/.github/workflows/crowdin-schedule-download.yml +++ b/.github/workflows/crowdin-schedule-download.yml @@ -46,4 +46,4 @@ jobs: env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} run: | - gh pr merge ${{steps.crowdin-download.outputs.pull_request_number}} --auto --merge --squash --delete-branch --subject "chore(lang): updated translations from crowdin" + gh pr merge ${{steps.crowdin-download.outputs.pull_request_number}} --auto --squash --delete-branch --subject "chore(lang): updated translations from crowdin" From d5399d20e369e72bf76a5eb21d86de1710267b22 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:16:48 +0000 Subject: [PATCH 011/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cs.json | 7 ++++--- packages/translation/src/lang/da.json | 7 ++++--- packages/translation/src/lang/de.json | 9 +++++---- packages/translation/src/lang/el.json | 7 ++++--- packages/translation/src/lang/es.json | 7 ++++--- packages/translation/src/lang/et.json | 7 ++++--- packages/translation/src/lang/fr.json | 7 ++++--- packages/translation/src/lang/he.json | 7 ++++--- packages/translation/src/lang/hr.json | 7 ++++--- packages/translation/src/lang/hu.json | 7 ++++--- packages/translation/src/lang/it.json | 7 ++++--- packages/translation/src/lang/ja.json | 7 ++++--- packages/translation/src/lang/ko.json | 7 ++++--- packages/translation/src/lang/lt.json | 7 ++++--- packages/translation/src/lang/lv.json | 7 ++++--- packages/translation/src/lang/nl.json | 7 ++++--- packages/translation/src/lang/no.json | 7 ++++--- packages/translation/src/lang/pl.json | 7 ++++--- packages/translation/src/lang/pt.json | 7 ++++--- packages/translation/src/lang/ro.json | 7 ++++--- packages/translation/src/lang/ru.json | 7 ++++--- packages/translation/src/lang/sk.json | 7 ++++--- packages/translation/src/lang/sl.json | 7 ++++--- packages/translation/src/lang/sv.json | 7 ++++--- packages/translation/src/lang/tr.json | 7 ++++--- packages/translation/src/lang/uk.json | 7 ++++--- packages/translation/src/lang/vi.json | 7 ++++--- packages/translation/src/lang/zh.json | 7 ++++--- 28 files changed, 113 insertions(+), 85 deletions(-) diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index dc9fc260b..358f5ef14 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -678,6 +678,7 @@ "previous": "Zpět", "next": "Další", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Zkusit znovu", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 5bdf2b96a..86aad66f6 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -678,6 +678,7 @@ "previous": "Forrige", "next": "Næste", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Prøv igen", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 8c776350b..1408c5142 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -170,7 +170,7 @@ "confirm": "" }, "select": { - "label": "", + "label": "Benutzer auswählen", "notFound": "" }, "transfer": { @@ -678,6 +678,7 @@ "previous": "Zurück", "next": "Weiter", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Erneut versuchen", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 43eaf4119..d0b52eff5 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -678,6 +678,7 @@ "previous": "Προηγούμενο", "next": "Επόμενο", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Προσπαθήστε ξανά", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index d007af9a8..92cce8e14 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -678,6 +678,7 @@ "previous": "Anterior", "next": "Siguiente", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Inténtalo de nuevo", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index d607abd37..c49508a23 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -678,6 +678,7 @@ "previous": "", "next": "", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index afc872277..0bba97efd 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -678,6 +678,7 @@ "previous": "Précédent", "next": "Suivant", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Réessayer", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 8e4c93e67..5022ce402 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -678,6 +678,7 @@ "previous": "הקודם", "next": "הבא", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "נא לנסות שוב", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 680cc748f..cab45b40d 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -678,6 +678,7 @@ "previous": "Prethodno", "next": "Sljedeći", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Pokušaj ponovno", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index aaefc047e..210e0299c 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -678,6 +678,7 @@ "previous": "Előző", "next": "Következő", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Próbálja újra", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 7dac92af4..ba306c1aa 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -678,6 +678,7 @@ "previous": "Precedente", "next": "Successivo", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Riprova", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 556040a4b..4efccaf3f 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -678,6 +678,7 @@ "previous": "前へ", "next": "次のページ", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "リトライ", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index c7ba28a85..6a7552145 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -678,6 +678,7 @@ "previous": "이전", "next": "다음", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "다시 시도", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 545357a49..377841a75 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -678,6 +678,7 @@ "previous": "", "next": "", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index d0cdde7c3..610fbf16a 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -678,6 +678,7 @@ "previous": "Iepriekšējais", "next": "Nākamais", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Mēģiniet vēlreiz", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 741bd89c2..2c3dfffd4 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -678,6 +678,7 @@ "previous": "Vorige", "next": "Volgende", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Probeer het opnieuw", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 954c487fc..caee7f4d5 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -678,6 +678,7 @@ "previous": "Tidligere", "next": "Neste", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Prøv igjen", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 65222f3d2..22524a710 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -678,6 +678,7 @@ "previous": "Poprzedni", "next": "Dalej", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Spróbuj ponownie", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 13069a45e..5d05ae0ac 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -678,6 +678,7 @@ "previous": "Anterior", "next": "Próximo", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Tente novamente", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 45b343c76..83a1ac082 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -678,6 +678,7 @@ "previous": "Anteriorul", "next": "Următorul", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Încearcă din nou", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index efbba6e0f..e925ee515 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -678,6 +678,7 @@ "previous": "Предыдущий", "next": "Далее", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Попробовать снова", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index e87981988..f0db252f3 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -678,6 +678,7 @@ "previous": "Predchádzajúci", "next": "Ďalej", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Skúste znova", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 383d1ebc9..10c25442f 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -678,6 +678,7 @@ "previous": "Prejšnji", "next": "Naslednji", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Poskusite znova", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 1ca7a14a9..2a261578b 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -678,6 +678,7 @@ "previous": "Föregående", "next": "Nästa", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Försök igen", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 31f7a7fcc..c82183892 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -678,6 +678,7 @@ "previous": "Önceki", "next": "İleri", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Tekrar Deneyin", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 95eb9e797..3a8848472 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -678,6 +678,7 @@ "previous": "Попередній", "next": "Далі", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Повторіть спробу", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 84454ace3..02e34fc31 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -678,6 +678,7 @@ "previous": "Trước", "next": "Kế tiếp", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "Thử lại", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 788320aad..5ac348f10 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -678,6 +678,7 @@ "previous": "", "next": "", "checkoutDocs": "", + "checkLogs": "", "tryAgain": "", "loading": "" }, @@ -1309,9 +1310,6 @@ "description": "" }, "error": { - "action": { - "logs": "" - }, "noIntegration": "", "noData": "" }, @@ -2305,6 +2303,9 @@ } } } + }, + "error": { + "internalServerError": "" } }, "permission": { From 8ca00161fae34ee5fb5bdb456d990c4dc1bc33f9 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sun, 15 Dec 2024 15:16:31 +0100 Subject: [PATCH 012/262] docs: create SECURITY.md (#1662) --- SECURITY.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..493565dc0 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,29 @@ +# Security Policy +This policy is relevant if you found potential vulnerabilities in an audit. +We consider something as a vulnerability if it... +1. puts users or user data at risk +2. enables third parties to gain control or access (e.g. [RATs](https://en.wikipedia.org/wiki/Remote_desktop_software#RAT), [privilege escalation](https://en.wikipedia.org/wiki/Privilege_escalation), ...) +3. abuses the system in an unintended way (e.g. crypto mining, proxy, ...) + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| >1.0.0 | :white_check_mark: | +| <1.0.0 | :x: | + +## Reporting a Vulnerability +We use [GitHub's system for reporting vulnerabilities](https://docs.github.com/en/enterprise-cloud@latest/code-security/security-advisories/working-with-repository-security-advisories/creating-a-repository-security-advisory). +Click [**here to report an advisory**](https://github.com/homarr-labs/homarr/security/advisories/new). Our team will get notified and will get back to you within 1-6 business days. + +As a general guideline; please provide as much detail as possible and provide reproduction steps / documentation regarding the re-creation. +You may also provide a fork with a fix for the vulnerability. +See https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html for guidelines regarding disclosure. + +If you're unable / unwilling (or it's not safe) to disclose vulnerabilites via GitHub, please report them with the subject "Security advisory - CVEXXX" to our email homarr-labs@proton.me. +Please never disclose security vulnerabilits on your own publicly - we'd like to search for a dimplomatic solution that is also safe for our users. + +In your initial contact with us, please provide details according to the [OWASP guidelines for initial reports](https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html#initial-report). + +Thank you! +We're looking forward to your report From 82ec77d2dac9764d44417a4e486a099f89b5e39c Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 15:31:45 +0100 Subject: [PATCH 013/262] fix: icon picker keyboard interactions (#1666) --- .../icons/picker/icon-picker.module.css | 3 + .../components/icons/picker/icon-picker.tsx | 64 +++++++++++-------- 2 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 apps/nextjs/src/components/icons/picker/icon-picker.module.css diff --git a/apps/nextjs/src/components/icons/picker/icon-picker.module.css b/apps/nextjs/src/components/icons/picker/icon-picker.module.css new file mode 100644 index 000000000..aa52af4b0 --- /dev/null +++ b/apps/nextjs/src/components/icons/picker/icon-picker.module.css @@ -0,0 +1,3 @@ +[data-combobox-selected="true"] .iconCard { + border-color: var(--mantine-primary-color-6); +} diff --git a/apps/nextjs/src/components/icons/picker/icon-picker.tsx b/apps/nextjs/src/components/icons/picker/icon-picker.tsx index 16797c5aa..432142dbf 100644 --- a/apps/nextjs/src/components/icons/picker/icon-picker.tsx +++ b/apps/nextjs/src/components/icons/picker/icon-picker.tsx @@ -20,6 +20,8 @@ import { useDebouncedValue } from "@mantine/hooks"; import { clientApi } from "@homarr/api/client"; import { useScopedI18n } from "@homarr/translation/client"; +import classes from "./icon-picker.module.css"; + interface IconPickerProps { initialValue?: string; onChange: (iconUrl: string) => void; @@ -49,35 +51,43 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I const totalOptions = data?.icons.reduce((acc, group) => acc + group.icons.length, 0) ?? 0; const groups = data?.icons.map((group) => { const options = group.icons.map((item) => ( - { - const value = item.url; - startTransition(() => { - setValue(value); - setPreviewUrl(value); - setSearch(value); - onChange(value); - combobox.closeDropdown(); - }); - }} + - - - - - - - - + { + const value = item.url; + startTransition(() => { + setValue(value); + setPreviewUrl(value); + setSearch(value); + onChange(value); + combobox.closeDropdown(); + }); + }} + > + + + + + + + + + )); return ( From 6de74d952560275faf546c2720f71dddbe1fe399 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 15:40:26 +0100 Subject: [PATCH 014/262] feat: add onboarding with oldmarr import (#1606) --- apps/nextjs/package.json | 2 + .../app/[locale]/_client-providers/trpc.tsx | 5 +- .../src/app/[locale]/init/_steps/back.tsx | 23 + .../init/_steps/finish/init-finish.tsx | 87 + .../[locale]/init/_steps/group/init-group.tsx | 52 + .../init/_steps/import/file-info-card.tsx | 41 + .../init/_steps/import/import-dropzone.tsx | 54 + .../init/_steps/import/init-import.tsx | 53 + .../init/_steps/settings/init-settings.tsx | 156 ++ .../[locale]/init/_steps/start/init-start.tsx | 32 + .../init/_steps/start/next-button.tsx | 28 + .../user/init-user-form.tsx} | 20 +- .../[locale]/init/_steps/user/init-user.tsx | 11 + apps/nextjs/src/app/[locale]/init/page.tsx | 56 + .../src/app/[locale]/init/user/page.tsx | 41 - .../secrets/integration-secret-card.tsx | 25 +- .../edit/[id]/_integration-edit-form.tsx | 3 +- .../current-color-scheme-combobox.tsx | 49 + .../language/current-language-combobox.tsx | 8 +- .../components/language/language-combobox.tsx | 6 +- .../src/components/user-avatar-menu.tsx | 5 +- apps/nextjs/src/middleware.ts | 10 + packages/api/src/root.ts | 4 + packages/api/src/router/board.ts | 18 +- packages/api/src/router/group.ts | 16 +- .../api/src/router/import/import-router.ts | 42 + .../api/src/router/onboard/onboard-queries.ts | 81 + .../api/src/router/onboard/onboard-router.ts | 34 + packages/api/src/router/serverSettings.ts | 13 +- packages/api/src/router/test/user.spec.ts | 38 +- packages/api/src/router/user.ts | 61 +- packages/api/src/trpc.ts | 20 +- packages/common/src/encryption.ts | 4 + packages/common/src/index.ts | 1 + packages/common/src/theme.ts | 5 + .../migrations/mysql/0017_tired_penance.sql | 6 + .../migrations/mysql/meta/0017_snapshot.json | 1663 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + packages/db/migrations/seed.ts | 18 +- .../sqlite/0017_small_rumiko_fujikawa.sql | 5 + .../migrations/sqlite/meta/0017_snapshot.json | 1587 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 7 + packages/db/schema/sqlite.ts | 7 + packages/definitions/src/group.ts | 1 + packages/definitions/src/index.ts | 1 + packages/definitions/src/onboarding.ts | 2 + packages/form/package.json | 4 +- packages/form/src/types.ts | 21 + packages/modals-collection/package.json | 1 + .../src/boards/import-board-modal.tsx | 58 +- packages/old-import/package.json | 21 +- .../src/analyse/analyse-oldmarr-import.ts | 64 + packages/old-import/src/analyse/index.ts | 2 + packages/old-import/src/analyse/input.ts | 5 + packages/old-import/src/analyse/types.ts | 7 + packages/old-import/src/components/index.ts | 3 + .../src/components/initial-oldmarr-import.tsx | 112 ++ .../initial/board-selection-card.tsx | 156 ++ .../initial/import-settings-card.tsx | 44 + .../initial/import-summary-card.tsx | 44 + .../src/components/initial/token-modal.tsx | 67 + .../src/components/shared/apps-section.tsx | 23 + .../shared/sidebar-behaviour-select.tsx | 31 + packages/old-import/src/import-board.ts | 2 +- packages/old-import/src/import-error.ts | 3 +- packages/old-import/src/import-items.ts | 2 +- .../import/collections/board-collection.ts | 78 + .../src/import/collections/common.ts | 33 + .../collections/integration-collection.ts | 47 + .../src/import/collections/user-collection.ts | 53 + .../src/import/import-initial-oldmarr.ts | 45 + .../src/import/import-single-oldmarr.ts | 36 + packages/old-import/src/import/index.ts | 3 + packages/old-import/src/import/input.ts | 24 + .../old-import/src/import/validate-token.ts | 18 + packages/old-import/src/index.ts | 63 +- packages/old-import/src/mappers/map-app.ts | 27 + packages/old-import/src/mappers/map-board.ts | 27 + .../src/mappers/map-column-count.ts | 3 +- .../old-import/src/mappers/map-integration.ts | 60 + packages/old-import/src/mappers/map-item.ts | 89 + .../old-import/src/mappers/map-section.ts | 24 + packages/old-import/src/mappers/map-user.ts | 35 + .../src/move-widgets-and-apps-merge.ts | 2 +- .../old-import/src/prepare/prepare-apps.ts | 59 + .../old-import/src/prepare/prepare-boards.ts | 34 + .../src/prepare/prepare-integrations.ts | 19 + .../old-import/src/prepare/prepare-items.ts | 14 + .../src/prepare/prepare-multiple.ts | 25 + .../src/prepare/prepare-sections.ts | 13 + .../old-import/src/prepare/prepare-single.ts | 21 + packages/old-import/src/settings.ts | 63 + packages/old-import/src/shared.ts | 2 + packages/old-import/src/user-schema.ts | 27 + packages/old-schema/package.json | 1 + packages/old-schema/src/app.ts | 2 + packages/old-schema/src/config.ts | 2 + packages/old-schema/src/index.ts | 6 +- packages/old-schema/src/setting.ts | 16 +- packages/old-schema/src/tile.ts | 5 + packages/translation/src/lang/en.json | 119 +- .../components/select-with-custom-items.tsx | 3 + packages/validation/package.json | 1 - packages/validation/src/board.ts | 51 +- packages/validation/src/index.ts | 5 +- packages/validation/src/settings.ts | 20 + pnpm-lock.yaml | 97 +- 108 files changed, 6045 insertions(+), 312 deletions(-) create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/back.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/import/import-dropzone.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/import/init-import.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/start/init-start.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/start/next-button.tsx rename apps/nextjs/src/app/[locale]/init/{user/_init-user-form.tsx => _steps/user/init-user-form.tsx} (77%) create mode 100644 apps/nextjs/src/app/[locale]/init/_steps/user/init-user.tsx create mode 100644 apps/nextjs/src/app/[locale]/init/page.tsx delete mode 100644 apps/nextjs/src/app/[locale]/init/user/page.tsx create mode 100644 apps/nextjs/src/components/color-scheme/current-color-scheme-combobox.tsx create mode 100644 packages/api/src/router/import/import-router.ts create mode 100644 packages/api/src/router/onboard/onboard-queries.ts create mode 100644 packages/api/src/router/onboard/onboard-router.ts create mode 100644 packages/common/src/theme.ts create mode 100644 packages/db/migrations/mysql/0017_tired_penance.sql create mode 100644 packages/db/migrations/mysql/meta/0017_snapshot.json create mode 100644 packages/db/migrations/sqlite/0017_small_rumiko_fujikawa.sql create mode 100644 packages/db/migrations/sqlite/meta/0017_snapshot.json create mode 100644 packages/definitions/src/onboarding.ts create mode 100644 packages/form/src/types.ts create mode 100644 packages/old-import/src/analyse/analyse-oldmarr-import.ts create mode 100644 packages/old-import/src/analyse/index.ts create mode 100644 packages/old-import/src/analyse/input.ts create mode 100644 packages/old-import/src/analyse/types.ts create mode 100644 packages/old-import/src/components/index.ts create mode 100644 packages/old-import/src/components/initial-oldmarr-import.tsx create mode 100644 packages/old-import/src/components/initial/board-selection-card.tsx create mode 100644 packages/old-import/src/components/initial/import-settings-card.tsx create mode 100644 packages/old-import/src/components/initial/import-summary-card.tsx create mode 100644 packages/old-import/src/components/initial/token-modal.tsx create mode 100644 packages/old-import/src/components/shared/apps-section.tsx create mode 100644 packages/old-import/src/components/shared/sidebar-behaviour-select.tsx create mode 100644 packages/old-import/src/import/collections/board-collection.ts create mode 100644 packages/old-import/src/import/collections/common.ts create mode 100644 packages/old-import/src/import/collections/integration-collection.ts create mode 100644 packages/old-import/src/import/collections/user-collection.ts create mode 100644 packages/old-import/src/import/import-initial-oldmarr.ts create mode 100644 packages/old-import/src/import/import-single-oldmarr.ts create mode 100644 packages/old-import/src/import/index.ts create mode 100644 packages/old-import/src/import/input.ts create mode 100644 packages/old-import/src/import/validate-token.ts create mode 100644 packages/old-import/src/mappers/map-app.ts create mode 100644 packages/old-import/src/mappers/map-board.ts create mode 100644 packages/old-import/src/mappers/map-integration.ts create mode 100644 packages/old-import/src/mappers/map-item.ts create mode 100644 packages/old-import/src/mappers/map-section.ts create mode 100644 packages/old-import/src/mappers/map-user.ts create mode 100644 packages/old-import/src/prepare/prepare-apps.ts create mode 100644 packages/old-import/src/prepare/prepare-boards.ts create mode 100644 packages/old-import/src/prepare/prepare-integrations.ts create mode 100644 packages/old-import/src/prepare/prepare-items.ts create mode 100644 packages/old-import/src/prepare/prepare-multiple.ts create mode 100644 packages/old-import/src/prepare/prepare-sections.ts create mode 100644 packages/old-import/src/prepare/prepare-single.ts create mode 100644 packages/old-import/src/settings.ts create mode 100644 packages/old-import/src/shared.ts create mode 100644 packages/old-import/src/user-schema.ts create mode 100644 packages/validation/src/settings.ts diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 8b05651a2..5130741e5 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -29,6 +29,7 @@ "@homarr/modals": "workspace:^0.1.0", "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/notifications": "workspace:^0.1.0", + "@homarr/old-import": "workspace:^0.1.0", "@homarr/old-schema": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", @@ -39,6 +40,7 @@ "@homarr/widgets": "workspace:^0.1.0", "@mantine/colors-generator": "^7.15.1", "@mantine/core": "^7.15.1", + "@mantine/dropzone": "^7.15.1", "@mantine/hooks": "^7.15.1", "@mantine/modals": "^7.15.1", "@mantine/tiptap": "^7.15.1", diff --git a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx index 8a2e6c581..45249c800 100644 --- a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx +++ b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx @@ -15,6 +15,7 @@ import { wsLink, } from "@trpc/client"; import superjson from "superjson"; +import type { SuperJSONResult } from "superjson"; import type { AppRouter } from "@homarr/api"; import { clientApi, createHeadersCallbackForSource, getTrpcUrl } from "@homarr/api/client"; @@ -82,8 +83,8 @@ export function TRPCReactProvider(props: PropsWithChildren) { serialize(object: unknown) { return object; }, - deserialize(data: unknown) { - return data; + deserialize(data: SuperJSONResult) { + return superjson.deserialize(data); }, }, url: getTrpcUrl(), diff --git a/apps/nextjs/src/app/[locale]/init/_steps/back.tsx b/apps/nextjs/src/app/[locale]/init/_steps/back.tsx new file mode 100644 index 000000000..7fa98d283 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/back.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { Button } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; +import { useI18n } from "@homarr/translation/client"; + +export const BackToStart = () => { + const t = useI18n(); + const { mutateAsync, isPending } = clientApi.onboard.previousStep.useMutation(); + + const handleBackToStartAsync = async () => { + await mutateAsync(); + await revalidatePathActionAsync("/init"); + }; + + return ( + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx b/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx new file mode 100644 index 000000000..d60da53ab --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/finish/init-finish.tsx @@ -0,0 +1,87 @@ +import Link from "next/link"; +import type { MantineColor } from "@mantine/core"; +import { Button, Card, Stack, Text } from "@mantine/core"; +import { IconBook2, IconCategoryPlus, IconLayoutDashboard, IconMailForward } from "@tabler/icons-react"; + +import { isProviderEnabled } from "@homarr/auth/server"; +import { getMantineColor } from "@homarr/common"; +import { db } from "@homarr/db"; +import { createDocumentationLink } from "@homarr/definitions"; +import { getScopedI18n } from "@homarr/translation/server"; +import type { TablerIcon } from "@homarr/ui"; + +export const InitFinish = async () => { + const firstBoard = await db.query.boards.findFirst({ columns: { name: true } }); + const tFinish = await getScopedI18n("init.step.finish"); + + return ( + + + {tFinish("description")} + + {firstBoard ? ( + + {tFinish("action.goToBoard", { name: firstBoard.name })} + + ) : ( + + {tFinish("action.createBoard")} + + )} + + {isProviderEnabled("credentials") && ( + + {tFinish("action.inviteUser")} + + )} + + + {tFinish("action.docs")} + + + + ); +}; + +interface LinkButtonProps { + href: string; + children: string; + iconProps: IconProps; +} + +interface IconProps { + icon: TablerIcon; + color: MantineColor; +} + +const Icon = ({ icon: IcomComponent, color }: IconProps) => { + return ; +}; + +const InternalLinkButton = ({ href, children, iconProps }: LinkButtonProps) => { + return ( + + ); +}; + +const ExternalLinkButton = ({ href, children, iconProps }: LinkButtonProps) => { + return ( + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx new file mode 100644 index 000000000..93839a457 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx @@ -0,0 +1,52 @@ +"use client"; + +import { Button, Card, Stack, TextInput } from "@mantine/core"; +import { IconArrowRight } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; +import { useZodForm } from "@homarr/form"; +import { useI18n } from "@homarr/translation/client"; +import type { z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; + +export const InitGroup = () => { + const t = useI18n(); + const { mutateAsync } = clientApi.group.createInitialExternalGroup.useMutation(); + const form = useZodForm(validation.group.create, { + initialValues: { + name: "", + }, + }); + + const handleSubmitAsync = async (values: z.infer) => { + await mutateAsync(values, { + async onSuccess() { + await revalidatePathActionAsync("/init"); + }, + onError(error) { + if (error.data?.code === "CONFLICT") { + form.setErrors({ name: t("common.zod.errors.custom.groupNameTaken") }); + } + }, + }); + }; + + return ( + + + + + + + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx b/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx new file mode 100644 index 000000000..7c031ae15 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx @@ -0,0 +1,41 @@ +import { ActionIcon, Button, Card, Group, Text } from "@mantine/core"; +import type { FileWithPath } from "@mantine/dropzone"; +import { IconPencil } from "@tabler/icons-react"; + +import { humanFileSize } from "@homarr/common"; +import { useScopedI18n } from "@homarr/translation/client"; + +interface FileInfoCardProps { + file: FileWithPath; + onRemove: () => void; +} + +export const FileInfoCard = ({ file, onRemove }: FileInfoCardProps) => { + const tFileInfo = useScopedI18n("init.step.import.fileInfo"); + return ( + + + + + {file.name} + + + {humanFileSize(file.size)} + + + + + + + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/import/import-dropzone.tsx b/apps/nextjs/src/app/[locale]/init/_steps/import/import-dropzone.tsx new file mode 100644 index 000000000..b425267cf --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/import/import-dropzone.tsx @@ -0,0 +1,54 @@ +import { Group, rem, Text } from "@mantine/core"; +import type { FileWithPath } from "@mantine/dropzone"; +import { Dropzone, MIME_TYPES } from "@mantine/dropzone"; +import { IconFileZip, IconUpload, IconX } from "@tabler/icons-react"; + +import "@mantine/dropzone/styles.css"; + +import { useScopedI18n } from "@homarr/translation/client"; + +interface ImportDropZoneProps { + loading: boolean; + updateFile: (file: FileWithPath) => void; +} + +export const ImportDropZone = ({ loading, updateFile }: ImportDropZoneProps) => { + const tDropzone = useScopedI18n("init.step.import.dropzone"); + return ( + { + const firstFile = files[0]; + if (!firstFile) return; + + updateFile(firstFile); + }} + acceptColor="blue.6" + rejectColor="red.6" + accept={[MIME_TYPES.zip]} + loading={loading} + multiple={false} + maxSize={1024 * 1024 * 1024 * 64} // 64 MB + > + + + + + + + + + + + +
+ + {tDropzone("title")} + + + {tDropzone("description")} + +
+
+
+ ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/import/init-import.tsx b/apps/nextjs/src/app/[locale]/init/_steps/import/init-import.tsx new file mode 100644 index 000000000..8b7124a03 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/import/init-import.tsx @@ -0,0 +1,53 @@ +"use client"; + +import { startTransition, useState } from "react"; +import { Card, Stack } from "@mantine/core"; +import type { FileWithPath } from "@mantine/dropzone"; + +import type { RouterOutputs } from "@homarr/api"; +import { clientApi } from "@homarr/api/client"; +import { InitialOldmarrImport } from "@homarr/old-import/components"; + +import { FileInfoCard } from "./file-info-card"; +import { ImportDropZone } from "./import-dropzone"; + +export const InitImport = () => { + const [file, setFile] = useState(null); + const { isPending, mutate } = clientApi.import.analyseInitialOldmarrImport.useMutation(); + const [analyseResult, setAnalyseResult] = useState( + null, + ); + + if (!file) { + return ( + + { + const formData = new FormData(); + formData.append("file", file); + + mutate(formData, { + onSuccess: (result) => { + startTransition(() => { + setAnalyseResult(result); + setFile(file); + }); + }, + onError: (error) => { + console.error(error); + }, + }); + }} + /> + + ); + } + + return ( + + setFile(null)} /> + {analyseResult !== null && } + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx new file mode 100644 index 000000000..90e8c7a8d --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx @@ -0,0 +1,156 @@ +"use client"; + +import { startTransition } from "react"; +import { Button, Card, Group, Stack, Switch, Text } from "@mantine/core"; +import { IconArrowRight } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; +import { useZodForm } from "@homarr/form"; +import type { CheckboxProps } from "@homarr/form/types"; +import { defaultServerSettings } from "@homarr/server-settings"; +import type { TranslationObject } from "@homarr/translation"; +import { useI18n, useScopedI18n } from "@homarr/translation/client"; +import type { z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; + +export const InitSettings = () => { + const tSection = useScopedI18n("management.page.settings.section"); + const t = useI18n(); + const { mutateAsync } = clientApi.serverSettings.initSettings.useMutation(); + const form = useZodForm(validation.settings.init, { initialValues: defaultServerSettings }); + + form.watch("analytics.enableGeneral", ({ value }) => { + if (!value) { + startTransition(() => { + form.setFieldValue("analytics.enableWidgetData", false); + form.setFieldValue("analytics.enableIntegrationData", false); + form.setFieldValue("analytics.enableUserData", false); + }); + } + }); + + const handleSubmitAsync = async (values: z.infer) => { + await mutateAsync(values, { + async onSuccess() { + await revalidatePathActionAsync("/init"); + }, + }); + }; + + return ( +
+ + + + {tSection("analytics.title")} + + + + + + + + + + + + + + + {tSection("crawlingAndIndexing.title")} + + + + + + + + + + + + +
+ ); +}; + +interface AnalyticsRowProps { + kind: Exclude; + disabled?: boolean; +} + +const AnalyticsRow = ({ kind, ...props }: AnalyticsRowProps & CheckboxProps) => { + const tSection = useI18n("management.page.settings.section"); + + return ( + + ); +}; + +interface CrawlingRowProps { + kind: Exclude< + keyof TranslationObject["management"]["page"]["settings"]["section"]["crawlingAndIndexing"], + "title" | "warning" + >; +} + +const CrawlingRow = ({ kind, ...inputProps }: CrawlingRowProps & CheckboxProps) => { + const tSection = useI18n("management.page.settings.section"); + + return ( + + ); +}; + +const SettingRow = ({ + title, + text, + disabled, + ...inputProps +}: { title: string; text: string; disabled?: boolean } & CheckboxProps) => { + return ( + + + + {title} + + + {text} + + + + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/start/init-start.tsx b/apps/nextjs/src/app/[locale]/init/_steps/start/init-start.tsx new file mode 100644 index 000000000..b5005f8b4 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/start/init-start.tsx @@ -0,0 +1,32 @@ +import { Card, Stack, Text } from "@mantine/core"; +import { IconFileImport, IconPlayerPlay } from "@tabler/icons-react"; + +import { getMantineColor } from "@homarr/common"; +import { getScopedI18n } from "@homarr/translation/server"; + +import { InitStartButton } from "./next-button"; + +export const InitStart = async () => { + const tStart = await getScopedI18n("init.step.start"); + + return ( + + + {tStart("description")} + + } + > + {tStart("action.scratch")} + + } + > + {tStart("action.importOldmarr")} + + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/start/next-button.tsx b/apps/nextjs/src/app/[locale]/init/_steps/start/next-button.tsx new file mode 100644 index 000000000..00ecf6f7d --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/start/next-button.tsx @@ -0,0 +1,28 @@ +"use client"; + +import type { PropsWithChildren, ReactNode } from "react"; +import { Button } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; +import type { OnboardingStep } from "@homarr/definitions"; + +interface InitStartButtonProps { + icon: ReactNode; + preferredStep: OnboardingStep | undefined; +} + +export const InitStartButton = ({ preferredStep, icon, children }: PropsWithChildren) => { + const { mutateAsync } = clientApi.onboard.nextStep.useMutation(); + + const handleClickAsync = async () => { + await mutateAsync({ preferredStep }); + await revalidatePathActionAsync("/init"); + }; + + return ( + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/user/_init-user-form.tsx b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx similarity index 77% rename from apps/nextjs/src/app/[locale]/init/user/_init-user-form.tsx rename to apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx index e22e81e47..2dcfac8f1 100644 --- a/apps/nextjs/src/app/[locale]/init/user/_init-user-form.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx @@ -1,9 +1,9 @@ "use client"; -import { useRouter } from "next/navigation"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core"; import { clientApi } from "@homarr/api/client"; +import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; @@ -12,9 +12,9 @@ import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitUserForm = () => { - const router = useRouter(); const t = useScopedI18n("user"); - const { mutateAsync, error, isPending } = clientApi.user.initUser.useMutation(); + const tUser = useScopedI18n("init.step.user"); + const { mutateAsync, isPending } = clientApi.user.initUser.useMutation(); const form = useZodForm(validation.user.init, { initialValues: { username: "", @@ -25,17 +25,17 @@ export const InitUserForm = () => { const handleSubmitAsync = async (values: FormType) => { await mutateAsync(values, { - onSuccess: () => { + async onSuccess() { showSuccessNotification({ - title: "User created", - message: "You can now log in", + title: tUser("notification.success.title"), + message: tUser("notification.success.message"), }); - router.push("/auth/login"); + await revalidatePathActionAsync("/init"); }, - onError: () => { + onError: (error) => { showErrorNotification({ - title: "User creation failed", - message: error?.message ?? "Unknown error", + title: tUser("notification.error.title"), + message: error.message, }); }, }); diff --git a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user.tsx b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user.tsx new file mode 100644 index 000000000..0f52de3dc --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user.tsx @@ -0,0 +1,11 @@ +import { Card } from "@mantine/core"; + +import { InitUserForm } from "./init-user-form"; + +export const InitUser = () => { + return ( + + + + ); +}; diff --git a/apps/nextjs/src/app/[locale]/init/page.tsx b/apps/nextjs/src/app/[locale]/init/page.tsx new file mode 100644 index 000000000..5684e5709 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/init/page.tsx @@ -0,0 +1,56 @@ +import type { JSX } from "react"; +import { Box, Center, Stack, Text, Title } from "@mantine/core"; + +import { api } from "@homarr/api/server"; +import type { MaybePromise } from "@homarr/common/types"; +import type { OnboardingStep } from "@homarr/definitions"; +import { getScopedI18n } from "@homarr/translation/server"; + +import { CurrentColorSchemeCombobox } from "~/components/color-scheme/current-color-scheme-combobox"; +import { CurrentLanguageCombobox } from "~/components/language/current-language-combobox"; +import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo"; +import { BackToStart } from "./_steps/back"; +import { InitFinish } from "./_steps/finish/init-finish"; +import { InitGroup } from "./_steps/group/init-group"; +import { InitImport } from "./_steps/import/init-import"; +import { InitSettings } from "./_steps/settings/init-settings"; +import { InitStart } from "./_steps/start/init-start"; +import { InitUser } from "./_steps/user/init-user"; + +const stepComponents: Record MaybePromise)> = { + start: InitStart, + import: InitImport, + user: InitUser, + group: InitGroup, + settings: InitSettings, + finish: InitFinish, +}; + +export default async function InitPage() { + const t = await getScopedI18n("init.step"); + const currentStep = await api.onboard.currentStep(); + + const CurrentComponent = stepComponents[currentStep.current]; + + return ( + +
+ + + + + {t(`${currentStep.current}.title`)} + + + {t(`${currentStep.current}.subtitle`)} + + + + + {CurrentComponent && } + {currentStep.previous === "start" && } + +
+
+ ); +} diff --git a/apps/nextjs/src/app/[locale]/init/user/page.tsx b/apps/nextjs/src/app/[locale]/init/user/page.tsx deleted file mode 100644 index 95fdaa145..000000000 --- a/apps/nextjs/src/app/[locale]/init/user/page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { notFound } from "next/navigation"; -import { Card, Center, Stack, Text, Title } from "@mantine/core"; - -import { db } from "@homarr/db"; -import { getScopedI18n } from "@homarr/translation/server"; - -import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo"; -import { InitUserForm } from "./_init-user-form"; - -export default async function InitUser() { - const firstUser = await db.query.users.findFirst({ - columns: { - id: true, - }, - }); - - if (firstUser) { - notFound(); - } - - const t = await getScopedI18n("user.page.init"); - - return ( -
- - - - - {t("title")} - - - {t("subtitle")} - - - - - - -
- ); -} diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx index 38ac5ec52..06c4baff3 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-card.tsx @@ -1,13 +1,14 @@ "use client"; import { useState } from "react"; -import { ActionIcon, Avatar, Button, Card, Collapse, Group, Kbd, Stack, Text } from "@mantine/core"; +import { ActionIcon, Avatar, Badge, Button, Card, Collapse, Group, Kbd, Stack, Text, Tooltip } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; import { IconEye, IconEyeOff } from "@tabler/icons-react"; import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; import type { RouterOutputs } from "@homarr/api"; +import type { IntegrationSecretKind } from "@homarr/definitions"; import { integrationSecretKindObject } from "@homarr/definitions"; import { useI18n } from "@homarr/translation/client"; @@ -16,7 +17,9 @@ import { integrationSecretIcons } from "./integration-secret-icons"; dayjs.extend(relativeTime); interface SecretCardProps { - secret: RouterOutputs["integration"]["byId"]["secrets"][number]; + secret: + | RouterOutputs["integration"]["byId"]["secrets"][number] + | { kind: IntegrationSecretKind; value: null; updatedAt: null }; children: React.ReactNode; onCancel: () => Promise; } @@ -41,11 +44,19 @@ export const SecretCard = ({ secret, children, onCancel }: SecretCardProps) => { {publicSecretDisplayOpened ? {secret.value} : null} - - {t("integration.secrets.lastUpdated", { - date: dayjs().to(dayjs(secret.updatedAt)), - })} - + {secret.updatedAt ? ( + + {t("integration.secrets.lastUpdated", { + date: dayjs().to(dayjs(secret.updatedAt)), + })} + + ) : ( + + + {t("integration.secrets.notSet.label")} + + + )} {isPublic ? ( diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 60707e35a..867689b7e 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -98,8 +98,7 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => { {secretsKinds.map((kind, index) => ( new Promise((resolve) => { // When nothing changed, just close the secret card diff --git a/apps/nextjs/src/components/color-scheme/current-color-scheme-combobox.tsx b/apps/nextjs/src/components/color-scheme/current-color-scheme-combobox.tsx new file mode 100644 index 000000000..b3534c3aa --- /dev/null +++ b/apps/nextjs/src/components/color-scheme/current-color-scheme-combobox.tsx @@ -0,0 +1,49 @@ +"use client"; + +import { Group, Text, useMantineColorScheme } from "@mantine/core"; +import { IconMoon, IconSun } from "@tabler/icons-react"; + +import type { ColorScheme } from "@homarr/definitions"; +import { colorSchemes } from "@homarr/definitions"; +import { useScopedI18n } from "@homarr/translation/client"; +import { SelectWithCustomItems } from "@homarr/ui"; + +interface CurrentColorSchemeComboboxProps { + w?: string; +} + +export const CurrentColorSchemeCombobox = ({ w }: CurrentColorSchemeComboboxProps) => { + const tOptions = useScopedI18n("common.colorScheme.options"); + const { colorScheme, setColorScheme } = useMantineColorScheme(); + + return ( + setColorScheme((value as ColorScheme | null) ?? "light")} + data={colorSchemes.map((scheme) => ({ + value: scheme, + label: tOptions(scheme), + }))} + SelectOption={ColorSchemeCustomOption} + w={w} + /> + ); +}; + +const appearanceIcons = { + light: IconSun, + dark: IconMoon, +}; + +const ColorSchemeCustomOption = ({ value, label }: { value: ColorScheme; label: string }) => { + const Icon = appearanceIcons[value]; + + return ( + + + + {label} + + + ); +}; diff --git a/apps/nextjs/src/components/language/current-language-combobox.tsx b/apps/nextjs/src/components/language/current-language-combobox.tsx index cdb4709d6..e27f34c39 100644 --- a/apps/nextjs/src/components/language/current-language-combobox.tsx +++ b/apps/nextjs/src/components/language/current-language-combobox.tsx @@ -4,9 +4,13 @@ import { useChangeLocale, useCurrentLocale } from "@homarr/translation/client"; import { LanguageCombobox } from "./language-combobox"; -export const CurrentLanguageCombobox = () => { +interface CurrentLanguageComboboxProps { + width?: string; +} + +export const CurrentLanguageCombobox = ({ width }: CurrentLanguageComboboxProps) => { const currentLocale = useCurrentLocale(); const { changeLocale, isPending } = useChangeLocale(); - return ; + return ; }; diff --git a/apps/nextjs/src/components/language/language-combobox.tsx b/apps/nextjs/src/components/language/language-combobox.tsx index 91e968686..80ea2549b 100644 --- a/apps/nextjs/src/components/language/language-combobox.tsx +++ b/apps/nextjs/src/components/language/language-combobox.tsx @@ -9,14 +9,17 @@ import { localeConfigurations, supportedLanguages } from "@homarr/translation"; import classes from "./language-combobox.module.css"; +import "flag-icons/css/flag-icons.min.css"; + interface LanguageComboboxProps { label?: string; value: SupportedLanguage; onChange: (value: SupportedLanguage) => void; isPending?: boolean; + width?: string; } -export const LanguageCombobox = ({ label, value, onChange, isPending }: LanguageComboboxProps) => { +export const LanguageCombobox = ({ label, value, onChange, isPending, width }: LanguageComboboxProps) => { const combobox = useCombobox({ onDropdownClose: () => combobox.resetSelectedOption(), }); @@ -49,6 +52,7 @@ export const LanguageCombobox = ({ label, value, onChange, isPending }: Language rightSectionPointerEvents="none" onClick={handleOnClick} variant="filled" + w={width} > diff --git a/apps/nextjs/src/components/user-avatar-menu.tsx b/apps/nextjs/src/components/user-avatar-menu.tsx index 173d95ff3..df5f63549 100644 --- a/apps/nextjs/src/components/user-avatar-menu.tsx +++ b/apps/nextjs/src/components/user-avatar-menu.tsx @@ -18,14 +18,11 @@ import { IconTool, } from "@tabler/icons-react"; +import type { RouterOutputs } from "@homarr/api"; import { signOut, useSession } from "@homarr/auth/client"; import { createModal, useModalAction } from "@homarr/modals"; import { useScopedI18n } from "@homarr/translation/client"; -import "flag-icons/css/flag-icons.min.css"; - -import type { RouterOutputs } from "@homarr/api"; - import { useAuthContext } from "~/app/[locale]/_client-providers/session"; import { CurrentLanguageCombobox } from "./language/current-language-combobox"; diff --git a/apps/nextjs/src/middleware.ts b/apps/nextjs/src/middleware.ts index f20def82b..7d38cfa48 100644 --- a/apps/nextjs/src/middleware.ts +++ b/apps/nextjs/src/middleware.ts @@ -1,3 +1,4 @@ +import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import { createTRPCClient, httpLink } from "@trpc/client"; import SuperJSON from "superjson"; @@ -11,6 +12,15 @@ export async function middleware(request: NextRequest) { // In next 15 we will be able to use node apis and such the db directly const culture = await serverFetchApi.serverSettings.getCulture.query(); + // Redirect to onboarding if it's not finished yet + const pathname = request.nextUrl.pathname; + if (!pathname.endsWith("/init")) { + const currentOnboardingStep = await serverFetchApi.onboard.currentStep.query(); + if (currentOnboardingStep.current !== "finish") { + return NextResponse.redirect(new URL("/init", request.url)); + } + } + // We don't want to fallback to accept-language header so we clear it request.headers.set("accept-language", ""); const next = createI18nMiddleware(culture.defaultLocale); diff --git a/packages/api/src/root.ts b/packages/api/src/root.ts index 107adf6d2..fa2b22209 100644 --- a/packages/api/src/root.ts +++ b/packages/api/src/root.ts @@ -6,11 +6,13 @@ import { dockerRouter } from "./router/docker/docker-router"; import { groupRouter } from "./router/group"; import { homeRouter } from "./router/home"; import { iconsRouter } from "./router/icons"; +import { importRouter } from "./router/import/import-router"; import { integrationRouter } from "./router/integration/integration-router"; import { inviteRouter } from "./router/invite"; import { locationRouter } from "./router/location"; import { logRouter } from "./router/log"; import { mediaRouter } from "./router/medias/media-router"; +import { onboardRouter } from "./router/onboard/onboard-router"; import { searchEngineRouter } from "./router/search-engine/search-engine-router"; import { serverSettingsRouter } from "./router/serverSettings"; import { updateCheckerRouter } from "./router/update-checker"; @@ -30,6 +32,8 @@ export const appRouter = createTRPCRouter({ location: locationRouter, log: logRouter, icon: iconsRouter, + import: importRouter, + onboard: onboardRouter, home: homeRouter, docker: dockerRouter, serverSettings: serverSettingsRouter, diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index accbf7aa3..64863e2f2 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -18,12 +18,12 @@ import { } from "@homarr/db/schema/sqlite"; import type { WidgetKind } from "@homarr/definitions"; import { getPermissionsWithParents, widgetKinds } from "@homarr/definitions"; -import { importAsync } from "@homarr/old-import"; +import { importOldmarrAsync } from "@homarr/old-import"; +import { importJsonFileSchema } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; import type { BoardItemAdvancedOptions } from "@homarr/validation"; -import { createSectionSchema, sharedItemSchema, validation, z } from "@homarr/validation"; +import { createSectionSchema, sharedItemSchema, validation, z, zodUnionFromArray } from "@homarr/validation"; -import { zodUnionFromArray } from "../../../validation/src/enums"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { throwIfActionForbiddenAsync } from "./board/board-access"; @@ -575,13 +575,11 @@ export const boardRouter = createTRPCRouter({ ); }); }), - importOldmarrConfig: protectedProcedure - .input(validation.board.importOldmarrConfig) - .mutation(async ({ input, ctx }) => { - const content = await input.file.text(); - const oldmarr = oldmarrConfigSchema.parse(JSON.parse(content)); - await importAsync(ctx.db, oldmarr, input.configuration); - }), + importOldmarrConfig: protectedProcedure.input(importJsonFileSchema).mutation(async ({ input, ctx }) => { + const content = await input.file.text(); + const oldmarr = oldmarrConfigSchema.parse(JSON.parse(content)); + await importOldmarrAsync(ctx.db, oldmarr, input.configuration); + }), }); const noBoardWithSimilarNameAsync = async (db: Database, name: string, ignoredIds: string[] = []) => { diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index 83a0f8868..7d3ed049b 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -6,8 +6,9 @@ import { groupMembers, groupPermissions, groups } from "@homarr/db/schema/sqlite import { everyoneGroup } from "@homarr/definitions"; import { validation, z } from "@homarr/validation"; -import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../trpc"; +import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, protectedProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; +import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; export const groupRouter = createTRPCRouter({ getPaginated: permissionRequiredProcedure @@ -145,6 +146,19 @@ export const groupRouter = createTRPCRouter({ limit: input.limit, }); }), + createInitialExternalGroup: onboardingProcedure + .requiresStep("group") + .input(validation.group.create) + .mutation(async ({ input, ctx }) => { + await checkSimilarNameAndThrowAsync(ctx.db, input.name); + + await ctx.db.insert(groups).values({ + id: createId(), + name: input.name, + }); + + await nextOnboardingStepAsync(ctx.db, undefined); + }), createGroup: permissionRequiredProcedure .requiresPermission("admin") .input(validation.group.create) diff --git a/packages/api/src/router/import/import-router.ts b/packages/api/src/router/import/import-router.ts new file mode 100644 index 000000000..7bcc453ec --- /dev/null +++ b/packages/api/src/router/import/import-router.ts @@ -0,0 +1,42 @@ +import { analyseOldmarrImportForRouterAsync, analyseOldmarrImportInputSchema } from "@homarr/old-import/analyse"; +import { + ensureValidTokenOrThrow, + importInitialOldmarrAsync, + importInitialOldmarrInputSchema, +} from "@homarr/old-import/import"; +import { z } from "@homarr/validation"; + +import { createTRPCRouter, onboardingProcedure } from "../../trpc"; +import { nextOnboardingStepAsync } from "../onboard/onboard-queries"; + +export const importRouter = createTRPCRouter({ + analyseInitialOldmarrImport: onboardingProcedure + .requiresStep("import") + .input(analyseOldmarrImportInputSchema) + .mutation(async ({ input }) => { + return await analyseOldmarrImportForRouterAsync(input); + }), + validateToken: onboardingProcedure + .requiresStep("import") + .input( + z.object({ + checksum: z.string(), + token: z.string(), + }), + ) + .mutation(({ input }) => { + try { + ensureValidTokenOrThrow(input.checksum, input.token); + return true; + } catch { + return false; + } + }), + importInitialOldmarrImport: onboardingProcedure + .requiresStep("import") + .input(importInitialOldmarrInputSchema) + .mutation(async ({ ctx, input }) => { + await importInitialOldmarrAsync(ctx.db, input); + await nextOnboardingStepAsync(ctx.db, undefined); + }), +}); diff --git a/packages/api/src/router/onboard/onboard-queries.ts b/packages/api/src/router/onboard/onboard-queries.ts new file mode 100644 index 000000000..6aeb0386c --- /dev/null +++ b/packages/api/src/router/onboard/onboard-queries.ts @@ -0,0 +1,81 @@ +import { isProviderEnabled } from "@homarr/auth/server"; +import { objectEntries } from "@homarr/common"; +import type { MaybePromise } from "@homarr/common/types"; +import type { Database } from "@homarr/db"; +import { eq } from "@homarr/db"; +import { groups, onboarding } from "@homarr/db/schema/sqlite"; +import type { OnboardingStep } from "@homarr/definitions"; +import { credentialsAdminGroup } from "@homarr/definitions"; + +export const nextOnboardingStepAsync = async (db: Database, preferredStep: OnboardingStep | undefined) => { + const { current } = await getOnboardingOrFallbackAsync(db); + const nextStepConfiguration = nextSteps[current]; + if (!nextStepConfiguration) return; + + for (const conditionalStep of objectEntries(nextStepConfiguration)) { + if (!conditionalStep) continue; + const [nextStep, condition] = conditionalStep; + if (condition === "preferred" && nextStep !== preferredStep) continue; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (typeof condition === "boolean" && !condition) continue; + if (typeof condition === "function" && !(await condition(db))) continue; + + await db.update(onboarding).set({ + previousStep: current, + step: nextStep, + }); + return; + } +}; + +export const getOnboardingOrFallbackAsync = async (db: Database) => { + const value = await db.query.onboarding.findFirst(); + if (!value) return { current: "start" as const, previous: null }; + + return { current: value.step, previous: value.previousStep }; +}; + +type NextStepCondition = true | "preferred" | ((db: Database) => MaybePromise); + +/** + * The below object is a definition of which can be the next step of the current one. + * If the value is `true`, it means the step can always be the next one. + * If the value is `preferred`, it means that the step can only be reached if the input `preferredStep` is set to the step. + * If the value is a function, it will be called with the database instance and should return a boolean. + * If the value or result is `false`, the step has to be skipped and the next value or callback should be checked. + */ +const nextSteps: Partial>>> = { + start: { + import: "preferred" as const, + user: () => isProviderEnabled("credentials"), + group: () => isProviderEnabled("ldap") || isProviderEnabled("oidc"), + settings: true, + }, + import: { + // eslint-disable-next-line no-restricted-syntax + user: async (db: Database) => { + if (!isProviderEnabled("credentials")) return false; + + const adminGroup = await db.query.groups.findFirst({ + where: eq(groups.name, credentialsAdminGroup), + with: { + members: true, + }, + }); + + return !adminGroup || adminGroup.members.length === 0; + }, + group: () => isProviderEnabled("ldap") || isProviderEnabled("oidc"), + settings: true, + }, + user: { + group: () => isProviderEnabled("ldap") || isProviderEnabled("oidc"), + settings: true, + }, + group: { + settings: true, + }, + settings: { + finish: true, + }, +}; diff --git a/packages/api/src/router/onboard/onboard-router.ts b/packages/api/src/router/onboard/onboard-router.ts new file mode 100644 index 000000000..8b6120655 --- /dev/null +++ b/packages/api/src/router/onboard/onboard-router.ts @@ -0,0 +1,34 @@ +import { onboarding } from "@homarr/db/schema/sqlite"; +import { onboardingSteps } from "@homarr/definitions"; +import { z, zodEnumFromArray } from "@homarr/validation"; + +import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { getOnboardingOrFallbackAsync, nextOnboardingStepAsync } from "./onboard-queries"; + +export const onboardRouter = createTRPCRouter({ + currentStep: publicProcedure.query(async ({ ctx }) => { + return await getOnboardingOrFallbackAsync(ctx.db); + }), + nextStep: publicProcedure + .input( + z.object({ + // Preferred step is only needed for 'preferred' conditions + preferredStep: zodEnumFromArray(onboardingSteps).optional(), + }), + ) + .mutation(async ({ ctx, input }) => { + await nextOnboardingStepAsync(ctx.db, input.preferredStep); + }), + previousStep: publicProcedure.mutation(async ({ ctx }) => { + const { previous } = await getOnboardingOrFallbackAsync(ctx.db); + + if (previous !== "start") { + return; + } + + await ctx.db.update(onboarding).set({ + previousStep: null, + step: "start", + }); + }), +}); diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts index d1ac27b7a..f1aa6ecdd 100644 --- a/packages/api/src/router/serverSettings.ts +++ b/packages/api/src/router/serverSettings.ts @@ -1,9 +1,10 @@ import { getServerSettingByKeyAsync, getServerSettingsAsync, updateServerSettingByKeyAsync } from "@homarr/db/queries"; import type { ServerSettings } from "@homarr/server-settings"; import { defaultServerSettingsKeys } from "@homarr/server-settings"; -import { z } from "@homarr/validation"; +import { validation, z } from "@homarr/validation"; -import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc"; +import { createTRPCRouter, onboardingProcedure, protectedProcedure, publicProcedure } from "../trpc"; +import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; export const serverSettingsRouter = createTRPCRouter({ getCulture: publicProcedure.query(async ({ ctx }) => { @@ -26,4 +27,12 @@ export const serverSettingsRouter = createTRPCRouter({ input.value as ServerSettings[keyof ServerSettings], ); }), + initSettings: onboardingProcedure + .requiresStep("settings") + .input(validation.settings.init) + .mutation(async ({ ctx, input }) => { + await updateServerSettingByKeyAsync(ctx.db, "analytics", input.analytics); + await updateServerSettingByKeyAsync(ctx.db, "crawlingAndIndexing", input.crawlingAndIndexing); + await nextOnboardingStepAsync(ctx.db, undefined); + }), }); diff --git a/packages/api/src/router/test/user.spec.ts b/packages/api/src/router/test/user.spec.ts index ce02a5bc6..1ae7c2dc7 100644 --- a/packages/api/src/router/test/user.spec.ts +++ b/packages/api/src/router/test/user.spec.ts @@ -1,10 +1,11 @@ import { describe, expect, it, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; +import type { Database } from "@homarr/db"; import { createId, eq, schema } from "@homarr/db"; -import { users } from "@homarr/db/schema/sqlite"; +import { onboarding, users } from "@homarr/db/schema/sqlite"; import { createDb } from "@homarr/db/test"; -import type { GroupPermissionKey } from "@homarr/definitions"; +import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions"; import { userRouter } from "../user"; @@ -36,31 +37,9 @@ vi.mock("@homarr/auth/env.mjs", () => { }); describe("initUser should initialize the first user", () => { - it("should throw an error if a user already exists", async () => { - const db = createDb(); - const caller = userRouter.createCaller({ - db, - session: null, - }); - - await db.insert(schema.users).values({ - id: "test", - name: "test", - password: "test", - }); - - const actAsync = async () => - await caller.initUser({ - username: "test", - password: "123ABCdef+/-", - confirmPassword: "123ABCdef+/-", - }); - - await expect(actAsync()).rejects.toThrow("User already exists"); - }); - it("should create a user if none exists", async () => { const db = createDb(); + await createOnboardingStepAsync(db, "user"); const caller = userRouter.createCaller({ db, session: null, @@ -83,6 +62,7 @@ describe("initUser should initialize the first user", () => { it("should not create a user if the password and confirmPassword do not match", async () => { const db = createDb(); + await createOnboardingStepAsync(db, "user"); const caller = userRouter.createCaller({ db, session: null, @@ -106,6 +86,7 @@ describe("initUser should initialize the first user", () => { ["abc123+/-"], // does not contain uppercase ])("should throw error that password requirements do not match for '%s' as password", async (password) => { const db = createDb(); + await createOnboardingStepAsync(db, "user"); const caller = userRouter.createCaller({ db, session: null, @@ -324,3 +305,10 @@ describe("delete should delete user", () => { expect(usersInDb[1]).containSubset(initialUsers[2]); }); }); + +const createOnboardingStepAsync = async (db: Database, step: OnboardingStep) => { + await db.insert(onboarding).values({ + id: createId(), + step, + }); +}; diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index ae3b8cd88..4a412365d 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -5,47 +5,46 @@ import type { Database } from "@homarr/db"; import { and, createId, eq, like, schema } from "@homarr/db"; import { groupMembers, groupPermissions, groups, invites, users } from "@homarr/db/schema/sqlite"; import { selectUserSchema } from "@homarr/db/validationSchemas"; +import { credentialsAdminGroup } from "@homarr/definitions"; import type { SupportedAuthProvider } from "@homarr/definitions"; import { logger } from "@homarr/log"; import { validation, z } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; -import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; +import { + createTRPCRouter, + onboardingProcedure, + permissionRequiredProcedure, + protectedProcedure, + publicProcedure, +} from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; +import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; export const userRouter = createTRPCRouter({ - initUser: publicProcedure.input(validation.user.init).mutation(async ({ ctx, input }) => { - throwIfCredentialsDisabled(); + initUser: onboardingProcedure + .requiresStep("user") + .input(validation.user.init) + .mutation(async ({ ctx, input }) => { + throwIfCredentialsDisabled(); - const firstUser = await ctx.db.query.users.findFirst({ - columns: { - id: true, - }, - }); - - if (firstUser) { - throw new TRPCError({ - code: "FORBIDDEN", - message: "User already exists", + const userId = await createUserAsync(ctx.db, input); + const groupId = createId(); + await ctx.db.insert(groups).values({ + id: groupId, + name: credentialsAdminGroup, + ownerId: userId, }); - } - - const userId = await createUserAsync(ctx.db, input); - const groupId = createId(); - await ctx.db.insert(groups).values({ - id: groupId, - name: "admin", - ownerId: userId, - }); - await ctx.db.insert(groupPermissions).values({ - groupId, - permission: "admin", - }); - await ctx.db.insert(groupMembers).values({ - groupId, - userId, - }); - }), + await ctx.db.insert(groupPermissions).values({ + groupId, + permission: "admin", + }); + await ctx.db.insert(groupMembers).values({ + groupId, + userId, + }); + await nextOnboardingStepAsync(ctx.db, undefined); + }), register: publicProcedure .input(validation.user.registrationApi) .output(z.void()) diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index aec73eaf1..64a2bf1e3 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -13,10 +13,12 @@ import type { OpenApiMeta } from "trpc-to-openapi"; import type { Session } from "@homarr/auth"; import { FlattenError } from "@homarr/common"; import { db } from "@homarr/db"; -import type { GroupPermissionKey } from "@homarr/definitions"; +import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions"; import { logger } from "@homarr/log"; import { ZodError } from "@homarr/validation"; +import { getOnboardingOrFallbackAsync } from "./router/onboard/onboard-queries"; + /** * 1. CONTEXT * @@ -138,3 +140,19 @@ export const permissionRequiredProcedure = { }); }, }; + +export const onboardingProcedure = { + requiresStep: (step: OnboardingStep) => { + return publicProcedure.use(async ({ ctx, input, next }) => { + const currentStep = await getOnboardingOrFallbackAsync(ctx.db).then(({ current }) => current); + if (currentStep !== step) { + throw new TRPCError({ + code: "FORBIDDEN", + message: "Step denied", + }); + } + + return next({ input, ctx }); + }); + }, +}; diff --git a/packages/common/src/encryption.ts b/packages/common/src/encryption.ts index cd253a89a..369fac3b2 100644 --- a/packages/common/src/encryption.ts +++ b/packages/common/src/encryption.ts @@ -25,6 +25,10 @@ export function encryptSecret(text: string): `${string}.${string}` { } export function decryptSecret(value: `${string}.${string}`) { + return decryptSecretWithKey(value, key); +} + +export function decryptSecretWithKey(value: `${string}.${string}`, key: Buffer) { const [data, dataIv] = value.split(".") as [string, string]; const initializationVector = Buffer.from(dataIv, "hex"); const encryptedText = Buffer.from(data, "hex"); diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index f45300e32..cbcec5e2a 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -8,3 +8,4 @@ export * from "./url"; export * from "./number"; export * from "./error"; export * from "./fetch-with-timeout"; +export * from "./theme"; diff --git a/packages/common/src/theme.ts b/packages/common/src/theme.ts new file mode 100644 index 000000000..413b1eee3 --- /dev/null +++ b/packages/common/src/theme.ts @@ -0,0 +1,5 @@ +import type { DefaultMantineColor, MantineColorShade } from "@mantine/core"; +import { DEFAULT_THEME } from "@mantine/core"; + +export const getMantineColor = (color: DefaultMantineColor, shade: MantineColorShade) => + DEFAULT_THEME.colors[color]?.[shade] ?? "#fff"; diff --git a/packages/db/migrations/mysql/0017_tired_penance.sql b/packages/db/migrations/mysql/0017_tired_penance.sql new file mode 100644 index 000000000..e27e77f30 --- /dev/null +++ b/packages/db/migrations/mysql/0017_tired_penance.sql @@ -0,0 +1,6 @@ +CREATE TABLE `onboarding` ( + `id` varchar(64) NOT NULL, + `step` varchar(64) NOT NULL, + `previous_step` varchar(64), + CONSTRAINT `onboarding_id` PRIMARY KEY(`id`) +); diff --git a/packages/db/migrations/mysql/meta/0017_snapshot.json b/packages/db/migrations/mysql/meta/0017_snapshot.json new file mode 100644 index 000000000..fc3653698 --- /dev/null +++ b/packages/db/migrations/mysql/meta/0017_snapshot.json @@ -0,0 +1,1663 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "a47534f2-313d-4234-a5d3-0b48da85f84c", + "prevId": "50b295e1-1802-477c-9ee1-b2cad1e9f5bb", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "name": "account_provider_provider_account_id_pk", + "columns": ["provider", "provider_account_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "apiKey_id": { + "name": "apiKey_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "app_id": { + "name": "app_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "name": "boardGroupPermission_board_id_group_id_permission_pk", + "columns": ["board_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "name": "boardUserPermission_board_id_user_id_permission_pk", + "columns": ["board_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('fixed')" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('no-repeat')" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('cover')" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fa5252')" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fd7e14')" + }, + "opacity": { + "name": "opacity", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": {}, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "board_id": { + "name": "board_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "name": "groupMember_group_id_user_id_pk", + "columns": ["group_id", "user_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "group_id": { + "name": "group_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(150)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "iconRepository_id": { + "name": "iconRepository_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(250)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "icon_id": { + "name": "icon_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_group_permission__pk": { + "name": "integration_group_permission__pk", + "columns": ["integration_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "name": "integration_item_item_id_integration_id_pk", + "columns": ["item_id", "integration_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "varchar(16)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "name": "integrationSecret_integration_id_kind_pk", + "columns": ["integration_id", "kind"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "name": "integrationUserPermission_integration_id_user_id_permission_pk", + "columns": ["integration_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "integration_id": { + "name": "integration_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "invite_id": { + "name": "invite_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"] + } + }, + "checkConstraint": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "item_id": { + "name": "item_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "BLOB", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "media_id": { + "name": "media_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "onboarding": { + "name": "onboarding", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "step": { + "name": "step", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "previous_step": { + "name": "previous_step", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "onboarding_id": { + "name": "onboarding_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "search_engine_id": { + "name": "search_engine_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "section_id": { + "name": "section_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "serverSetting_setting_key": { + "name": "serverSetting_setting_key", + "columns": ["setting_key"] + } + }, + "uniqueConstraints": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"] + } + }, + "checkConstraint": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "session_session_token": { + "name": "session_session_token", + "columns": ["session_token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "user_id": { + "name": "user_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "name": "verificationToken_identifier_token_pk", + "columns": ["identifier", "token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} diff --git a/packages/db/migrations/mysql/meta/_journal.json b/packages/db/migrations/mysql/meta/_journal.json index d740783f1..75446c520 100644 --- a/packages/db/migrations/mysql/meta/_journal.json +++ b/packages/db/migrations/mysql/meta/_journal.json @@ -120,6 +120,13 @@ "when": 1732212709518, "tag": "0016_change_all_to_snake_case", "breakpoints": true + }, + { + "idx": 17, + "version": "5", + "when": 1733777544067, + "tag": "0017_tired_penance", + "breakpoints": true } ] } diff --git a/packages/db/migrations/seed.ts b/packages/db/migrations/seed.ts index 79a90c45e..15a82ea20 100644 --- a/packages/db/migrations/seed.ts +++ b/packages/db/migrations/seed.ts @@ -7,10 +7,11 @@ import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server import { createId, eq } from ".."; import type { Database } from ".."; import { groups } from "../schema/mysql"; -import { serverSettings } from "../schema/sqlite"; +import { onboarding, serverSettings } from "../schema/sqlite"; export const seedDataAsync = async (db: Database) => { await seedEveryoneGroupAsync(db); + await seedOnboardingAsync(db); await seedServerSettingsAsync(db); }; @@ -31,6 +32,21 @@ const seedEveryoneGroupAsync = async (db: Database) => { console.log("Created group 'everyone' through seed"); }; +const seedOnboardingAsync = async (db: Database) => { + const existing = await db.query.onboarding.findFirst(); + + if (existing) { + console.log("Skipping seeding of onboarding as it already exists"); + return; + } + + await db.insert(onboarding).values({ + id: createId(), + step: "start", + }); + console.log("Created onboarding step through seed"); +}; + const seedServerSettingsAsync = async (db: Database) => { const serverSettingsData = await db.query.serverSettings.findMany(); diff --git a/packages/db/migrations/sqlite/0017_small_rumiko_fujikawa.sql b/packages/db/migrations/sqlite/0017_small_rumiko_fujikawa.sql new file mode 100644 index 000000000..c7e3aa09f --- /dev/null +++ b/packages/db/migrations/sqlite/0017_small_rumiko_fujikawa.sql @@ -0,0 +1,5 @@ +CREATE TABLE `onboarding` ( + `id` text PRIMARY KEY NOT NULL, + `step` text NOT NULL, + `previous_step` text +); diff --git a/packages/db/migrations/sqlite/meta/0017_snapshot.json b/packages/db/migrations/sqlite/meta/0017_snapshot.json new file mode 100644 index 000000000..73cf3303b --- /dev/null +++ b/packages/db/migrations/sqlite/meta/0017_snapshot.json @@ -0,0 +1,1587 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "8946270f-5c29-4ecb-b3c9-af35b9b38f68", + "prevId": "e1f073f2-71de-489f-8268-4754a7ccff10", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "columns": ["provider", "provider_account_id"], + "name": "account_provider_provider_account_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "columns": ["board_id", "group_id", "permission"], + "name": "boardGroupPermission_board_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "columns": ["board_id", "user_id", "permission"], + "name": "boardUserPermission_board_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'fixed'" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'no-repeat'" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'cover'" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fa5252'" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fd7e14'" + }, + "opacity": { + "name": "opacity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "columns": ["group_id", "user_id"], + "name": "groupMember_group_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationGroupPermissions_integration_id_group_id_permission_pk": { + "columns": ["integration_id", "group_id", "permission"], + "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "columns": ["item_id", "integration_id"], + "name": "integration_item_item_id_integration_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "columns": ["integration_id", "kind"], + "name": "integrationSecret_integration_id_kind_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "columns": ["integration_id", "user_id", "permission"], + "name": "integrationUserPermission_integration_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"], + "isUnique": true + } + }, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "onboarding": { + "name": "onboarding", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "step": { + "name": "step", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "previous_step": { + "name": "previous_step", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "columns": ["identifier", "token"], + "name": "verificationToken_identifier_token_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/packages/db/migrations/sqlite/meta/_journal.json b/packages/db/migrations/sqlite/meta/_journal.json index 8367929b9..a07880551 100644 --- a/packages/db/migrations/sqlite/meta/_journal.json +++ b/packages/db/migrations/sqlite/meta/_journal.json @@ -120,6 +120,13 @@ "when": 1732210918783, "tag": "0016_change_all_to_snake_case", "breakpoints": true + }, + { + "idx": 17, + "version": "6", + "when": 1733777395703, + "tag": "0017_small_rumiko_fujikawa", + "breakpoints": true } ] } diff --git a/packages/db/schema/mysql.ts b/packages/db/schema/mysql.ts index 822e06795..b3ccabcc1 100644 --- a/packages/db/schema/mysql.ts +++ b/packages/db/schema/mysql.ts @@ -25,6 +25,7 @@ import type { IntegrationKind, IntegrationPermission, IntegrationSecretKind, + OnboardingStep, SearchEngineType, SectionKind, SupportedAuthProvider, @@ -395,6 +396,12 @@ export const searchEngines = mysqlTable("search_engine", { integrationId: varchar({ length: 64 }).references(() => integrations.id, { onDelete: "cascade" }), }); +export const onboarding = mysqlTable("onboarding", { + id: varchar({ length: 64 }).notNull().primaryKey(), + step: varchar({ length: 64 }).$type().notNull(), + previousStep: varchar({ length: 64 }).$type(), +}); + export const accountRelations = relations(accounts, ({ one }) => ({ user: one(users, { fields: [accounts.userId], diff --git a/packages/db/schema/sqlite.ts b/packages/db/schema/sqlite.ts index fd4158f38..f5feffc71 100644 --- a/packages/db/schema/sqlite.ts +++ b/packages/db/schema/sqlite.ts @@ -16,6 +16,7 @@ import type { IntegrationKind, IntegrationPermission, IntegrationSecretKind, + OnboardingStep, SearchEngineType, SectionKind, SupportedAuthProvider, @@ -382,6 +383,12 @@ export const searchEngines = sqliteTable("search_engine", { integrationId: text().references(() => integrations.id, { onDelete: "cascade" }), }); +export const onboarding = sqliteTable("onboarding", { + id: text().notNull().primaryKey(), + step: text().$type().notNull(), + previousStep: text().$type(), +}); + export const accountRelations = relations(accounts, ({ one }) => ({ user: one(users, { fields: [accounts.userId], diff --git a/packages/definitions/src/group.ts b/packages/definitions/src/group.ts index ebac0daa1..40c278b95 100644 --- a/packages/definitions/src/group.ts +++ b/packages/definitions/src/group.ts @@ -1 +1,2 @@ export const everyoneGroup = "everyone"; +export const credentialsAdminGroup = "admin"; diff --git a/packages/definitions/src/index.ts b/packages/definitions/src/index.ts index 12c878462..13cc03dd5 100644 --- a/packages/definitions/src/index.ts +++ b/packages/definitions/src/index.ts @@ -10,3 +10,4 @@ export * from "./group"; export * from "./docs"; export * from "./cookie"; export * from "./search-engine"; +export * from "./onboarding"; diff --git a/packages/definitions/src/onboarding.ts b/packages/definitions/src/onboarding.ts new file mode 100644 index 000000000..d9a6ea03e --- /dev/null +++ b/packages/definitions/src/onboarding.ts @@ -0,0 +1,2 @@ +export const onboardingSteps = ["start", "import", "user", "group", "settings", "finish"] as const; +export type OnboardingStep = (typeof onboardingSteps)[number]; diff --git a/packages/form/package.json b/packages/form/package.json index 24addae12..79a5f83ae 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -5,7 +5,8 @@ "license": "MIT", "type": "module", "exports": { - ".": "./index.ts" + ".": "./index.ts", + "./types": "./src/types.ts" }, "typesVersions": { "*": { @@ -22,6 +23,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { + "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/form": "^7.15.1" diff --git a/packages/form/src/types.ts b/packages/form/src/types.ts new file mode 100644 index 000000000..4c6c1363a --- /dev/null +++ b/packages/form/src/types.ts @@ -0,0 +1,21 @@ +import type { ChangeEvent, FocusEvent } from "react"; + +export interface InputPropsFor + extends BasePropsFor { + value?: T; + defaultValue?: T; +} + +interface BasePropsFor { + onChange: (value: TOnChangeArg) => void; + error?: string; + onBlur?: (event: FocusEvent) => void; + onFocus?: (event: FocusEvent) => void; +} + +export interface CheckboxProps< + TOnChangeArg = ChangeEvent, + TComponent extends HTMLElement = HTMLInputElement, +> extends BasePropsFor { + checked?: boolean; +} diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 41053dd54..93670731b 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -27,6 +27,7 @@ "@homarr/form": "workspace:^0.1.0", "@homarr/modals": "workspace:^0.1.0", "@homarr/notifications": "workspace:^0.1.0", + "@homarr/old-import": "workspace:^0.1.0", "@homarr/old-schema": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", diff --git a/packages/modals-collection/src/boards/import-board-modal.tsx b/packages/modals-collection/src/boards/import-board-modal.tsx index 82caa0b75..e507a29f1 100644 --- a/packages/modals-collection/src/boards/import-board-modal.tsx +++ b/packages/modals-collection/src/boards/import-board-modal.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { Button, Fieldset, FileInput, Grid, Group, Radio, Stack, Switch, TextInput } from "@mantine/core"; +import { Button, FileInput, Group, Radio, Stack, TextInput } from "@mantine/core"; import { IconFileUpload } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; @@ -7,16 +7,18 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; +import { OldmarrImportAppsSettings, SidebarBehaviourSelect } from "@homarr/old-import/components"; +import type { OldmarrImportConfiguration } from "@homarr/old-import/shared"; +import { oldmarrImportConfigurationSchema, superRefineJsonImportFile } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; -import { useScopedI18n } from "@homarr/translation/client"; -import { SelectWithDescription } from "@homarr/ui"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; -import { oldmarrImportConfigurationSchema, superRefineJsonImportFile, z } from "@homarr/validation"; +import { useI18n, useScopedI18n } from "@homarr/translation/client"; +import { z } from "@homarr/validation"; import { useBoardNameStatus } from "./add-board-modal"; export const ImportBoardModal = createModal(({ actions }) => { const tOldImport = useScopedI18n("board.action.oldImport"); + const t = useI18n(); const tCommon = useScopedI18n("common"); const [fileValid, setFileValid] = useState(true); const form = useZodForm( @@ -30,7 +32,6 @@ export const ImportBoardModal = createModal(({ actions }) => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion file: null!, configuration: { - distinctAppsByHref: true, onlyImportApps: false, screenSize: "lg", sidebarBehaviour: "last-section", @@ -119,24 +120,7 @@ export const ImportBoardModal = createModal(({ actions }) => { label={tOldImport("form.file.label")} /> -
- - - - - - - - -
+ { - - - + + + - + + + + ); +}; diff --git a/packages/old-import/src/components/initial/token-modal.tsx b/packages/old-import/src/components/initial/token-modal.tsx new file mode 100644 index 000000000..a612f029c --- /dev/null +++ b/packages/old-import/src/components/initial/token-modal.tsx @@ -0,0 +1,67 @@ +import { Button, Group, PasswordInput, Stack } from "@mantine/core"; +import { z } from "zod"; + +import { useZodForm } from "@homarr/form"; +import { createModal } from "@homarr/modals"; +import { showErrorNotification } from "@homarr/notifications"; +import { useI18n, useScopedI18n } from "@homarr/translation/client"; + +// We don't have access to the API client here, so we need to import it from the API package +// In the future we should consider having the used router also in this package +import { clientApi } from "../../../../api/src/client"; + +interface InnerProps { + checksum: string; + onSuccessAsync: (token: string) => Promise; +} + +const formSchema = z.object({ + token: z.string().min(1).max(256), +}); + +export const ImportTokenModal = createModal(({ actions, innerProps }) => { + const t = useI18n(); + const tTokenModal = useScopedI18n("init.step.import.tokenModal"); + const { mutate, isPending } = clientApi.import.validateToken.useMutation(); + const form = useZodForm(formSchema, { initialValues: { token: "" } }); + + const handleSubmit = (values: z.infer) => { + mutate( + { checksum: innerProps.checksum, token: values.token }, + { + async onSuccess(isValid) { + if (isValid) { + actions.closeModal(); + await innerProps.onSuccessAsync(values.token); + } else { + showErrorNotification({ + title: tTokenModal("notification.error.title"), + message: tTokenModal("notification.error.message"), + }); + } + }, + }, + ); + }; + + return ( +
+ + + + + + + +
+ ); +}).withOptions({ defaultTitle: (t) => t("init.step.import.tokenModal.title") }); diff --git a/packages/old-import/src/components/shared/apps-section.tsx b/packages/old-import/src/components/shared/apps-section.tsx new file mode 100644 index 000000000..23fef2cc9 --- /dev/null +++ b/packages/old-import/src/components/shared/apps-section.tsx @@ -0,0 +1,23 @@ +import { Fieldset, Switch } from "@mantine/core"; + +import type { CheckboxProps } from "@homarr/form/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +interface OldmarrImportAppsSettingsProps { + onlyImportApps: CheckboxProps; + background?: string; +} + +export const OldmarrImportAppsSettings = ({ background, onlyImportApps }: OldmarrImportAppsSettingsProps) => { + const tApps = useScopedI18n("board.action.oldImport.form.apps"); + + return ( +
+ +
+ ); +}; diff --git a/packages/old-import/src/components/shared/sidebar-behaviour-select.tsx b/packages/old-import/src/components/shared/sidebar-behaviour-select.tsx new file mode 100644 index 000000000..17a0e2c50 --- /dev/null +++ b/packages/old-import/src/components/shared/sidebar-behaviour-select.tsx @@ -0,0 +1,31 @@ +import type { InputPropsFor } from "@homarr/form/types"; +import { useScopedI18n } from "@homarr/translation/client"; +import { SelectWithDescription } from "@homarr/ui"; + +import type { SidebarBehaviour } from "../../settings"; + +export const SidebarBehaviourSelect = (props: InputPropsFor) => { + const tSidebarBehaviour = useScopedI18n("board.action.oldImport.form.sidebarBehavior"); + + return ( + (value ? props.onChange(value as SidebarBehaviour) : null)} + /> + ); +}; diff --git a/packages/old-import/src/import-board.ts b/packages/old-import/src/import-board.ts index 9ea155929..822e37ed3 100644 --- a/packages/old-import/src/import-board.ts +++ b/packages/old-import/src/import-board.ts @@ -3,10 +3,10 @@ import { createId } from "@homarr/db"; import { boards } from "@homarr/db/schema/sqlite"; import { logger } from "@homarr/log"; import type { OldmarrConfig } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; import { mapColor } from "./mappers/map-colors"; import { mapColumnCount } from "./mappers/map-column-count"; +import type { OldmarrImportConfiguration } from "./settings"; export const insertBoardAsync = async (db: Database, old: OldmarrConfig, configuration: OldmarrImportConfiguration) => { logger.info(`Importing old homarr board configuration=${old.configProperties.name}`); diff --git a/packages/old-import/src/import-error.ts b/packages/old-import/src/import-error.ts index 89479aa2f..9c0fd3687 100644 --- a/packages/old-import/src/import-error.ts +++ b/packages/old-import/src/import-error.ts @@ -1,5 +1,6 @@ import type { OldmarrConfig } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; + +import type { OldmarrImportConfiguration } from "./settings"; export class OldHomarrImportError extends Error { constructor(oldConfig: OldmarrConfig, cause: unknown) { diff --git a/packages/old-import/src/import-items.ts b/packages/old-import/src/import-items.ts index fab64c88e..652687d21 100644 --- a/packages/old-import/src/import-items.ts +++ b/packages/old-import/src/import-items.ts @@ -5,10 +5,10 @@ import { createId } from "@homarr/db"; import { items } from "@homarr/db/schema/sqlite"; import { logger } from "@homarr/log"; import type { OldmarrApp, OldmarrWidget } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; import type { WidgetComponentProps } from "../../widgets/src/definition"; import { OldHomarrScreenSizeError } from "./import-error"; +import type { OldmarrImportConfiguration } from "./settings"; import { mapKind } from "./widgets/definitions"; import { mapOptions } from "./widgets/options"; diff --git a/packages/old-import/src/import/collections/board-collection.ts b/packages/old-import/src/import/collections/board-collection.ts new file mode 100644 index 000000000..7178485d5 --- /dev/null +++ b/packages/old-import/src/import/collections/board-collection.ts @@ -0,0 +1,78 @@ +import { createId } from "@homarr/db"; +import { logger } from "@homarr/log"; + +import { fixSectionIssues } from "../../fix-section-issues"; +import { mapBoard } from "../../mappers/map-board"; +import { moveWidgetsAndAppsIfMerge } from "../../move-widgets-and-apps-merge"; +import { prepareItems } from "../../prepare/prepare-items"; +import type { prepareMultipleImports } from "../../prepare/prepare-multiple"; +import { prepareSections } from "../../prepare/prepare-sections"; +import type { InitialOldmarrImportSettings } from "../../settings"; +import { createDbInsertCollection } from "./common"; + +export const createBoardInsertCollection = ( + { preparedApps, preparedBoards }: Omit, "preparedIntegrations">, + settings: InitialOldmarrImportSettings, +) => { + const insertCollection = createDbInsertCollection(["apps", "boards", "sections", "items"]); + logger.info("Preparing boards for insert collection"); + + const appsMap = new Map( + preparedApps.flatMap(({ ids, ...app }) => { + const id = app.existingId ?? createId(); + return ids.map((oldId) => [oldId, { id, ...app }] as const); + }), + ); + + for (const app of appsMap.values()) { + // Skip duplicate apps + if (insertCollection.apps.some((appEntry) => appEntry.id === app.id)) { + continue; + } + // Skip apps that already exist in the database + if (app.existingId) { + continue; + } + + insertCollection.apps.push(app); + } + + if (settings.onlyImportApps) { + logger.info( + `Skipping boards and sections import due to onlyImportApps setting appCount=${insertCollection.apps.length}`, + ); + return insertCollection; + } + logger.debug(`Added apps to board insert collection count=${insertCollection.apps.length}`); + + preparedBoards.forEach((board) => { + const { wrappers, categories, wrapperIdsToMerge } = fixSectionIssues(board.config); + const { apps, widgets } = moveWidgetsAndAppsIfMerge(board.config, wrapperIdsToMerge, { + ...settings, + screenSize: board.size, + name: board.name, + }); + + logger.debug(`Fixed issues with sections and item positions fileName=${board.name}`); + + const mappedBoard = mapBoard(board); + logger.debug(`Mapped board fileName=${board.name} boardId=${mappedBoard.id}`); + insertCollection.boards.push(mappedBoard); + const preparedSections = prepareSections(mappedBoard.id, { wrappers, categories }); + + for (const section of preparedSections.values()) { + insertCollection.sections.push(section); + } + logger.debug(`Added sections to board insert collection count=${insertCollection.sections.length}`); + + const preparedItems = prepareItems({ apps, widgets }, board.size, appsMap, preparedSections); + preparedItems.forEach((item) => insertCollection.items.push(item)); + logger.debug(`Added items to board insert collection count=${insertCollection.items.length}`); + }); + + logger.info( + `Board collection prepared boardCount=${insertCollection.boards.length} sectionCount=${insertCollection.sections.length} itemCount=${insertCollection.items.length} appCount=${insertCollection.apps.length}`, + ); + + return insertCollection; +}; diff --git a/packages/old-import/src/import/collections/common.ts b/packages/old-import/src/import/collections/common.ts new file mode 100644 index 000000000..7dd07f087 --- /dev/null +++ b/packages/old-import/src/import/collections/common.ts @@ -0,0 +1,33 @@ +import { objectEntries } from "@homarr/common"; +import type { Database, InferInsertModel } from "@homarr/db"; +import { schema } from "@homarr/db"; + +type TableKey = { + [K in keyof typeof schema]: (typeof schema)[K] extends { _: { brand: "Table" } } ? K : never; +}[keyof typeof schema]; + +export const createDbInsertCollection = (tablesInInsertOrder: TTableKey[]) => { + const context = tablesInInsertOrder.reduce( + (acc, key) => { + acc[key] = []; + return acc; + }, + {} as { [K in TTableKey]: InferInsertModel<(typeof schema)[K]>[] }, + ); + + return { + ...context, + insertAll: (db: Database) => { + db.transaction((transaction) => { + for (const [key, values] of objectEntries(context)) { + if (values.length >= 1) { + transaction + .insert(schema[key]) + .values(values as never) + .run(); + } + } + }); + }, + }; +}; diff --git a/packages/old-import/src/import/collections/integration-collection.ts b/packages/old-import/src/import/collections/integration-collection.ts new file mode 100644 index 000000000..dd21cd59f --- /dev/null +++ b/packages/old-import/src/import/collections/integration-collection.ts @@ -0,0 +1,47 @@ +import { encryptSecret } from "@homarr/common/server"; +import { logger } from "@homarr/log"; + +import { mapAndDecryptIntegrations } from "../../mappers/map-integration"; +import type { PreparedIntegration } from "../../prepare/prepare-integrations"; +import { createDbInsertCollection } from "./common"; + +export const createIntegrationInsertCollection = ( + preparedIntegrations: PreparedIntegration[], + encryptionToken: string | null, +) => { + const insertCollection = createDbInsertCollection(["integrations", "integrationSecrets"]); + logger.info(`Preparing integrations for insert collection count=${preparedIntegrations.length}`); + + if (encryptionToken === null) { + logger.debug("Skipping integration decryption due to missing token"); + return insertCollection; + } + + const preparedIntegrationsDecrypted = mapAndDecryptIntegrations(preparedIntegrations, encryptionToken); + + preparedIntegrationsDecrypted.forEach((integration) => { + insertCollection.integrations.push({ + id: integration.id, + kind: integration.kind, + name: integration.name, + url: integration.url, + }); + + integration.secrets + .filter((secret) => secret.value !== null) + .forEach((secret) => { + insertCollection.integrationSecrets.push({ + integrationId: integration.id, + kind: secret.field, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + value: encryptSecret(secret.value!), + }); + }); + }); + + logger.info( + `Added integrations and secrets to insert collection integrationCount=${insertCollection.integrations.length} secretCount=${insertCollection.integrationSecrets.length}`, + ); + + return insertCollection; +}; diff --git a/packages/old-import/src/import/collections/user-collection.ts b/packages/old-import/src/import/collections/user-collection.ts new file mode 100644 index 000000000..096a06591 --- /dev/null +++ b/packages/old-import/src/import/collections/user-collection.ts @@ -0,0 +1,53 @@ +import { createId } from "@homarr/db"; +import { credentialsAdminGroup } from "@homarr/definitions"; +import { logger } from "@homarr/log"; + +import { mapAndDecryptUsers } from "../../mappers/map-user"; +import type { OldmarrImportUser } from "../../user-schema"; +import { createDbInsertCollection } from "./common"; + +export const createUserInsertCollection = (importUsers: OldmarrImportUser[], encryptionToken: string | null) => { + const insertCollection = createDbInsertCollection(["users", "groups", "groupMembers", "groupPermissions"]); + + logger.info(`Preparing users for insert collection count=${importUsers.length}`); + + if (encryptionToken === null) { + logger.debug("Skipping user decryption due to missing token"); + return insertCollection; + } + + const preparedUsers = mapAndDecryptUsers(importUsers, encryptionToken); + preparedUsers.forEach((user) => insertCollection.users.push(user)); + logger.debug(`Added users to insert collection count=${insertCollection.users.length}`); + + if (!preparedUsers.some((user) => user.isAdmin)) { + logger.warn("No admin users found, skipping admin group creation"); + return insertCollection; + } + + const adminGroupId = createId(); + insertCollection.groups.push({ + id: adminGroupId, + name: credentialsAdminGroup, + }); + + insertCollection.groupPermissions.push({ + groupId: adminGroupId, + permission: "admin", + }); + + const admins = preparedUsers.filter((user) => user.isAdmin); + + admins.forEach((user) => { + insertCollection.groupMembers.push({ + groupId: adminGroupId, + userId: user.id, + }); + }); + + logger.info( + `Added admin group and permissions to insert collection adminGroupId=${adminGroupId} adminUsersCount=${admins.length}`, + ); + + return insertCollection; +}; diff --git a/packages/old-import/src/import/import-initial-oldmarr.ts b/packages/old-import/src/import/import-initial-oldmarr.ts new file mode 100644 index 000000000..90b2fea2a --- /dev/null +++ b/packages/old-import/src/import/import-initial-oldmarr.ts @@ -0,0 +1,45 @@ +import type { z } from "zod"; + +import { Stopwatch } from "@homarr/common"; +import type { Database } from "@homarr/db"; +import { logger } from "@homarr/log"; + +import { analyseOldmarrImportAsync } from "../analyse/analyse-oldmarr-import"; +import { prepareMultipleImports } from "../prepare/prepare-multiple"; +import { createBoardInsertCollection } from "./collections/board-collection"; +import { createIntegrationInsertCollection } from "./collections/integration-collection"; +import { createUserInsertCollection } from "./collections/user-collection"; +import type { importInitialOldmarrInputSchema } from "./input"; +import { ensureValidTokenOrThrow } from "./validate-token"; + +export const importInitialOldmarrAsync = async ( + db: Database, + input: z.infer, +) => { + const stopwatch = new Stopwatch(); + const { checksum, configs, users: importUsers } = await analyseOldmarrImportAsync(input.file); + ensureValidTokenOrThrow(checksum, input.token); + + const { preparedApps, preparedBoards, preparedIntegrations } = prepareMultipleImports( + configs, + input.settings, + input.boardSelections, + ); + + logger.info("Preparing import data in insert collections for database"); + + const boardInsertCollection = createBoardInsertCollection({ preparedApps, preparedBoards }, input.settings); + const userInsertCollection = createUserInsertCollection(importUsers, input.token); + const integrationInsertCollection = createIntegrationInsertCollection(preparedIntegrations, input.token); + + logger.info("Inserting import data to database"); + + // Due to a limitation with better-sqlite it's only possible to use it synchronously + db.transaction((transaction) => { + boardInsertCollection.insertAll(transaction); + userInsertCollection.insertAll(transaction); + integrationInsertCollection.insertAll(transaction); + }); + + logger.info(`Import successful (in ${stopwatch.getElapsedInHumanWords()})`); +}; diff --git a/packages/old-import/src/import/import-single-oldmarr.ts b/packages/old-import/src/import/import-single-oldmarr.ts new file mode 100644 index 000000000..568595929 --- /dev/null +++ b/packages/old-import/src/import/import-single-oldmarr.ts @@ -0,0 +1,36 @@ +import { inArray } from "@homarr/db"; +import type { Database } from "@homarr/db"; +import { apps } from "@homarr/db/schema/sqlite"; +import type { OldmarrConfig } from "@homarr/old-schema"; + +import { doAppsMatch } from "../prepare/prepare-apps"; +import { prepareSingleImport } from "../prepare/prepare-single"; +import type { OldmarrImportConfiguration } from "../settings"; +import { createBoardInsertCollection } from "./collections/board-collection"; + +export const importSingleOldmarrConfigAsync = async ( + db: Database, + config: OldmarrConfig, + settings: OldmarrImportConfiguration, +) => { + const { preparedApps, preparedBoards } = prepareSingleImport(config, settings); + const existingApps = await db.query.apps.findMany({ + where: inArray( + apps.href, + preparedApps.map((app) => app.href).filter((href) => href !== null), + ), + }); + + preparedApps.forEach((app) => { + const existingApp = existingApps.find((existingApp) => doAppsMatch(existingApp, app)); + if (existingApp) { + app.existingId = existingApp.id; + } + return app; + }); + + const boardInsertCollection = createBoardInsertCollection({ preparedApps, preparedBoards }, settings); + + // Due to a limitation with better-sqlite it's only possible to use it synchronously + boardInsertCollection.insertAll(db); +}; diff --git a/packages/old-import/src/import/index.ts b/packages/old-import/src/import/index.ts new file mode 100644 index 000000000..1c2c4cc72 --- /dev/null +++ b/packages/old-import/src/import/index.ts @@ -0,0 +1,3 @@ +export { importInitialOldmarrAsync } from "./import-initial-oldmarr"; +export * from "./input"; +export { ensureValidTokenOrThrow } from "./validate-token"; diff --git a/packages/old-import/src/import/input.ts b/packages/old-import/src/import/input.ts new file mode 100644 index 000000000..13f28c774 --- /dev/null +++ b/packages/old-import/src/import/input.ts @@ -0,0 +1,24 @@ +import SuperJSON from "superjson"; +import { z } from "zod"; +import { zfd } from "zod-form-data"; + +import { initialOldmarrImportSettings } from "../settings"; + +const boardSelectionMapSchema = z.map( + z.string(), + z.object({ + sm: z.boolean().nullable(), + md: z.boolean().nullable(), + lg: z.boolean().nullable(), + }), +); + +export const importInitialOldmarrInputSchema = zfd.formData({ + file: zfd.file(), + settings: zfd.json(initialOldmarrImportSettings), + boardSelections: zfd.text().transform((value) => { + const map = boardSelectionMapSchema.parse(SuperJSON.parse(value)); + return map; + }), + token: zfd.text().nullable(), +}); diff --git a/packages/old-import/src/import/validate-token.ts b/packages/old-import/src/import/validate-token.ts new file mode 100644 index 000000000..ac01cf20a --- /dev/null +++ b/packages/old-import/src/import/validate-token.ts @@ -0,0 +1,18 @@ +import { decryptSecretWithKey } from "@homarr/common/server"; + +export const ensureValidTokenOrThrow = (checksum: string | undefined, encryptionToken: string | null) => { + if (!encryptionToken || !checksum) return; + + const [first, second] = checksum.split("\n"); + if (!first || !second) throw new Error("Malformed checksum"); + + const key = Buffer.from(encryptionToken, "hex"); + let decrypted: string; + try { + decrypted = decryptSecretWithKey(second as `${string}.${string}`, key); + } catch { + throw new Error("Invalid checksum"); + } + const isValid = decrypted === first; + if (!isValid) throw new Error("Invalid checksum"); +}; diff --git a/packages/old-import/src/index.ts b/packages/old-import/src/index.ts index aa5ad882a..d3153a189 100644 --- a/packages/old-import/src/index.ts +++ b/packages/old-import/src/index.ts @@ -1,60 +1,13 @@ import type { Database } from "@homarr/db"; import type { OldmarrConfig } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; -import { fixSectionIssues } from "./fix-section-issues"; -import { insertAppsAsync } from "./import-apps"; -import { insertBoardAsync } from "./import-board"; -import { OldHomarrImportError, OldHomarrScreenSizeError } from "./import-error"; -import { insertItemsAsync } from "./import-items"; -import { insertSectionsAsync } from "./import-sections"; -import { moveWidgetsAndAppsIfMerge } from "./move-widgets-and-apps-merge"; -import type { BookmarkApp } from "./widgets/definitions/bookmark"; +import { importSingleOldmarrConfigAsync } from "./import/import-single-oldmarr"; +import type { OldmarrImportConfiguration } from "./settings"; -export const importAsync = async (db: Database, old: OldmarrConfig, configuration: OldmarrImportConfiguration) => { - const bookmarkApps = old.widgets - .filter((widget) => widget.type === "bookmark") - .map((widget) => widget.properties.items) - .flat() as BookmarkApp[]; - - if (configuration.onlyImportApps) { - await db - .transaction(async (trasaction) => { - await insertAppsAsync( - trasaction, - old.apps, - bookmarkApps, - configuration.distinctAppsByHref, - old.configProperties.name, - ); - }) - .catch((error) => { - throw new OldHomarrImportError(old, error); - }); - return; - } - - await db - .transaction(async (trasaction) => { - const { wrappers, categories, wrapperIdsToMerge } = fixSectionIssues(old); - const { apps, widgets } = moveWidgetsAndAppsIfMerge(old, wrapperIdsToMerge, configuration); - - const boardId = await insertBoardAsync(trasaction, old, configuration); - const sectionIdMaps = await insertSectionsAsync(trasaction, categories, wrappers, boardId); - const appsMap = await insertAppsAsync( - trasaction, - apps, - bookmarkApps, - configuration.distinctAppsByHref, - old.configProperties.name, - ); - await insertItemsAsync(trasaction, widgets, apps, appsMap, sectionIdMaps, configuration); - }) - .catch((error) => { - if (error instanceof OldHomarrScreenSizeError) { - throw error; - } - - throw new OldHomarrImportError(old, error); - }); +export const importOldmarrAsync = async ( + db: Database, + old: OldmarrConfig, + configuration: OldmarrImportConfiguration, +) => { + await importSingleOldmarrConfigAsync(db, old, configuration); }; diff --git a/packages/old-import/src/mappers/map-app.ts b/packages/old-import/src/mappers/map-app.ts new file mode 100644 index 000000000..0232edc50 --- /dev/null +++ b/packages/old-import/src/mappers/map-app.ts @@ -0,0 +1,27 @@ +import type { InferSelectModel } from "@homarr/db"; +import type { apps } from "@homarr/db/schema/sqlite"; +import type { OldmarrApp } from "@homarr/old-schema"; + +import type { OldmarrBookmarkDefinition } from "../widgets/definitions/bookmark"; + +export const mapOldmarrApp = (app: OldmarrApp): InferSelectModel => { + return { + id: app.id, + name: app.name, + iconUrl: app.appearance.iconUrl, + description: app.behaviour.tooltipDescription ?? null, + href: app.behaviour.externalUrl || app.url, + }; +}; + +export const mapOldmarrBookmarkApp = ( + app: OldmarrBookmarkDefinition["options"]["items"][number], +): InferSelectModel => { + return { + id: app.id, + name: app.name, + iconUrl: app.iconUrl, + description: null, + href: app.href, + }; +}; diff --git a/packages/old-import/src/mappers/map-board.ts b/packages/old-import/src/mappers/map-board.ts new file mode 100644 index 000000000..a11b84cbd --- /dev/null +++ b/packages/old-import/src/mappers/map-board.ts @@ -0,0 +1,27 @@ +import type { InferInsertModel } from "@homarr/db"; +import { createId } from "@homarr/db"; +import type { boards } from "@homarr/db/schema/sqlite"; + +import type { prepareMultipleImports } from "../prepare/prepare-multiple"; +import { mapColor } from "./map-colors"; +import { mapColumnCount } from "./map-column-count"; + +type PreparedBoard = ReturnType["preparedBoards"][number]; + +export const mapBoard = (preparedBoard: PreparedBoard): InferInsertModel => ({ + id: createId(), + name: preparedBoard.name, + backgroundImageAttachment: preparedBoard.config.settings.customization.backgroundImageAttachment, + backgroundImageUrl: preparedBoard.config.settings.customization.backgroundImageUrl, + backgroundImageRepeat: preparedBoard.config.settings.customization.backgroundImageRepeat, + backgroundImageSize: preparedBoard.config.settings.customization.backgroundImageSize, + columnCount: mapColumnCount(preparedBoard.config, preparedBoard.size), + faviconImageUrl: preparedBoard.config.settings.customization.faviconUrl, + isPublic: preparedBoard.config.settings.access.allowGuests, + logoImageUrl: preparedBoard.config.settings.customization.logoImageUrl, + pageTitle: preparedBoard.config.settings.customization.pageTitle, + metaTitle: preparedBoard.config.settings.customization.metaTitle, + opacity: preparedBoard.config.settings.customization.appOpacity, + primaryColor: mapColor(preparedBoard.config.settings.customization.colors.primary, "#fa5252"), + secondaryColor: mapColor(preparedBoard.config.settings.customization.colors.secondary, "#fd7e14"), +}); diff --git a/packages/old-import/src/mappers/map-column-count.ts b/packages/old-import/src/mappers/map-column-count.ts index 0f38a98e5..f2ac5c09c 100644 --- a/packages/old-import/src/mappers/map-column-count.ts +++ b/packages/old-import/src/mappers/map-column-count.ts @@ -1,5 +1,6 @@ import type { OldmarrConfig } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; + +import type { OldmarrImportConfiguration } from "../settings"; export const mapColumnCount = (old: OldmarrConfig, screenSize: OldmarrImportConfiguration["screenSize"]) => { switch (screenSize) { diff --git a/packages/old-import/src/mappers/map-integration.ts b/packages/old-import/src/mappers/map-integration.ts new file mode 100644 index 000000000..b51dae2dd --- /dev/null +++ b/packages/old-import/src/mappers/map-integration.ts @@ -0,0 +1,60 @@ +import { decryptSecretWithKey } from "@homarr/common/server"; +import { createId } from "@homarr/db"; +import type { IntegrationKind } from "@homarr/definitions"; +import type { OldmarrIntegrationType } from "@homarr/old-schema"; + +import type { PreparedIntegration } from "../prepare/prepare-integrations"; + +export const mapIntegrationType = (type: OldmarrIntegrationType) => { + const kind = mapping[type]; + if (!kind) { + throw new Error(`Integration type ${type} is not supported yet`); + } + return kind; +}; + +const mapping: Record = { + adGuardHome: "adGuardHome", + deluge: "deluge", + homeAssistant: "homeAssistant", + jellyfin: "jellyfin", + jellyseerr: "jellyseerr", + lidarr: "lidarr", + nzbGet: "nzbGet", + openmediavault: "openmediavault", + overseerr: "overseerr", + pihole: "piHole", + prowlarr: "prowlarr", + proxmox: null, + qBittorrent: "qBittorrent", + radarr: "radarr", + readarr: "readarr", + sabnzbd: "sabNzbd", + sonarr: "sonarr", + tdarr: null, + transmission: "transmission", + plex: "plex", +}; + +export const mapAndDecryptIntegrations = ( + preparedIntegrations: PreparedIntegration[], + encryptionToken: string | null, +) => { + if (encryptionToken === null) { + return []; + } + + const key = Buffer.from(encryptionToken, "hex"); + + return preparedIntegrations.map(({ type, name, url, properties }) => ({ + id: createId(), + name, + url, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + kind: mapIntegrationType(type!), + secrets: properties.map((property) => ({ + ...property, + value: property.value ? decryptSecretWithKey(property.value as `${string}.${string}`, key) : null, + })), + })); +}; diff --git a/packages/old-import/src/mappers/map-item.ts b/packages/old-import/src/mappers/map-item.ts new file mode 100644 index 000000000..f24fdfb37 --- /dev/null +++ b/packages/old-import/src/mappers/map-item.ts @@ -0,0 +1,89 @@ +import SuperJSON from "superjson"; + +import type { InferInsertModel } from "@homarr/db"; +import { createId } from "@homarr/db"; +import type { items } from "@homarr/db/schema/sqlite"; +import { logger } from "@homarr/log"; +import type { BoardSize, OldmarrApp, OldmarrWidget } from "@homarr/old-schema"; + +import type { WidgetComponentProps } from "../../../widgets/src/definition"; +import { mapKind } from "../widgets/definitions"; +import { mapOptions } from "../widgets/options"; + +export const mapApp = ( + app: OldmarrApp, + boardSize: BoardSize, + appsMap: Map, + sectionMap: Map, +): InferInsertModel => { + if (app.area.type === "sidebar") throw new Error("Mapping app in sidebar is not supported"); + + const shapeForSize = app.shape[boardSize]; + if (!shapeForSize) { + throw new Error(`Failed to find a shape for appId='${app.id}' screenSize='${boardSize}'`); + } + + const sectionId = sectionMap.get(app.area.properties.id)?.id; + if (!sectionId) { + throw new Error(`Failed to find section for app appId='${app.id}' sectionId='${app.area.properties.id}'`); + } + + return { + id: createId(), + sectionId, + height: shapeForSize.size.height, + width: shapeForSize.size.width, + xOffset: shapeForSize.location.x, + yOffset: shapeForSize.location.y, + kind: "app", + options: SuperJSON.stringify({ + // it's safe to assume that the app exists in the map + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain + appId: appsMap.get(app.id)?.id!, + openInNewTab: app.behaviour.isOpeningNewTab, + pingEnabled: app.network.enabledStatusChecker, + showDescriptionTooltip: app.behaviour.tooltipDescription !== "", + showTitle: app.appearance.appNameStatus === "normal", + } satisfies WidgetComponentProps<"app">["options"]), + }; +}; + +export const mapWidget = ( + widget: OldmarrWidget, + boardSize: BoardSize, + appsMap: Map, + sectionMap: Map, +): InferInsertModel | null => { + if (widget.area.type === "sidebar") throw new Error("Mapping widget in sidebar is not supported"); + + const shapeForSize = widget.shape[boardSize]; + if (!shapeForSize) { + throw new Error(`Failed to find a shape for widgetId='${widget.id}' screenSize='${boardSize}'`); + } + + const kind = mapKind(widget.type); + if (!kind) { + logger.warn(`Failed to map widget type='${widget.type}'. It's no longer supported`); + return null; + } + + const sectionId = sectionMap.get(widget.area.properties.id)?.id; + if (!sectionId) { + throw new Error( + `Failed to find section for widget widgetId='${widget.id}' sectionId='${widget.area.properties.id}'`, + ); + } + + return { + id: createId(), + sectionId, + height: shapeForSize.size.height, + width: shapeForSize.size.width, + xOffset: shapeForSize.location.x, + yOffset: shapeForSize.location.y, + kind, + options: SuperJSON.stringify( + mapOptions(kind, widget.properties, new Map([...appsMap.entries()].map(([key, value]) => [key, value.id]))), + ), + }; +}; diff --git a/packages/old-import/src/mappers/map-section.ts b/packages/old-import/src/mappers/map-section.ts new file mode 100644 index 000000000..10bf47ac8 --- /dev/null +++ b/packages/old-import/src/mappers/map-section.ts @@ -0,0 +1,24 @@ +import type { InferInsertModel } from "@homarr/db"; +import { createId } from "@homarr/db"; +import type { sections } from "@homarr/db/schema/sqlite"; +import type { OldmarrCategorySection, OldmarrEmptySection } from "@homarr/old-schema"; + +export const mapCategorySection = ( + boardId: string, + category: OldmarrCategorySection, +): InferInsertModel => ({ + id: createId(), + boardId, + kind: "category", + xOffset: 0, + yOffset: category.position, + name: category.name, +}); + +export const mapEmptySection = (boardId: string, wrapper: OldmarrEmptySection): InferInsertModel => ({ + id: createId(), + boardId, + kind: "empty", + xOffset: 0, + yOffset: wrapper.position, +}); diff --git a/packages/old-import/src/mappers/map-user.ts b/packages/old-import/src/mappers/map-user.ts new file mode 100644 index 000000000..465eae455 --- /dev/null +++ b/packages/old-import/src/mappers/map-user.ts @@ -0,0 +1,35 @@ +import { decryptSecretWithKey } from "@homarr/common/server"; +import type { InferInsertModel } from "@homarr/db"; +import { createId } from "@homarr/db"; +import type { users } from "@homarr/db/schema/sqlite"; + +import type { OldmarrImportUser } from "../user-schema"; + +export const mapAndDecryptUsers = (importUsers: OldmarrImportUser[], encryptionToken: string | null) => { + if (encryptionToken === null) { + return []; + } + + const key = Buffer.from(encryptionToken, "hex"); + + return importUsers.map( + ({ + id, + password, + salt, + settings, + ...user + }): InferInsertModel & { oldId: string; isAdmin: boolean } => ({ + ...user, + oldId: id, + id: createId(), + colorScheme: settings?.colorScheme === "environment" ? undefined : settings?.colorScheme, + firstDayOfWeek: settings?.firstDayOfWeek === "sunday" ? 0 : settings?.firstDayOfWeek === "monday" ? 1 : 6, + provider: "credentials", + pingIconsEnabled: settings?.replacePingWithIcons, + isAdmin: user.isAdmin || user.isOwner, + password: decryptSecretWithKey(password, key), + salt: decryptSecretWithKey(salt, key), + }), + ); +}; diff --git a/packages/old-import/src/move-widgets-and-apps-merge.ts b/packages/old-import/src/move-widgets-and-apps-merge.ts index 0305a8832..2111e5d9e 100644 --- a/packages/old-import/src/move-widgets-and-apps-merge.ts +++ b/packages/old-import/src/move-widgets-and-apps-merge.ts @@ -1,10 +1,10 @@ import { objectEntries } from "@homarr/common"; import { logger } from "@homarr/log"; import type { OldmarrApp, OldmarrConfig, OldmarrWidget } from "@homarr/old-schema"; -import type { OldmarrImportConfiguration } from "@homarr/validation"; import { OldHomarrScreenSizeError } from "./import-error"; import { mapColumnCount } from "./mappers/map-column-count"; +import type { OldmarrImportConfiguration } from "./settings"; export const moveWidgetsAndAppsIfMerge = ( old: OldmarrConfig, diff --git a/packages/old-import/src/prepare/prepare-apps.ts b/packages/old-import/src/prepare/prepare-apps.ts new file mode 100644 index 000000000..d38820102 --- /dev/null +++ b/packages/old-import/src/prepare/prepare-apps.ts @@ -0,0 +1,59 @@ +import type { InferSelectModel } from "@homarr/db"; +import type { apps } from "@homarr/db/schema/sqlite"; +import type { OldmarrConfig } from "@homarr/old-schema"; + +import type { ValidAnalyseConfig } from "../analyse/types"; +import { mapOldmarrApp, mapOldmarrBookmarkApp } from "../mappers/map-app"; +import type { OldmarrBookmarkDefinition } from "../widgets/definitions/bookmark"; + +export type PreparedApp = Omit, "id"> & { ids: string[]; existingId?: string }; + +export const prepareApps = (analyseConfigs: ValidAnalyseConfig[]) => { + const preparedApps: PreparedApp[] = []; + + analyseConfigs.forEach(({ config }) => { + const appsFromConfig = extractAppsFromConfig(config).concat(extractBookmarkAppsFromConfig(config)); + addAppsToPreparedApps(preparedApps, appsFromConfig); + }); + + return preparedApps; +}; + +const extractAppsFromConfig = (config: OldmarrConfig) => { + return config.apps.map(mapOldmarrApp); +}; + +const extractBookmarkAppsFromConfig = (config: OldmarrConfig) => { + const bookmarkWidgets = config.widgets.filter((widget) => widget.type === "bookmark"); + return bookmarkWidgets.flatMap((widget) => + (widget.properties as OldmarrBookmarkDefinition["options"]).items.map(mapOldmarrBookmarkApp), + ); +}; + +const addAppsToPreparedApps = (preparedApps: PreparedApp[], configApps: InferSelectModel[]) => { + configApps.forEach(({ id, ...app }) => { + const existingApp = preparedApps.find((preparedApp) => doAppsMatch(preparedApp, app)); + + if (existingApp) { + existingApp.ids.push(id); + return; + } + + preparedApps.push({ + ...app, + ids: [id], + }); + }); +}; + +export const doAppsMatch = ( + app1: Omit, "id">, + app2: Omit, "id">, +) => { + return ( + app1.name === app2.name && + app1.iconUrl === app2.iconUrl && + app1.description === app2.description && + app1.href === app2.href + ); +}; diff --git a/packages/old-import/src/prepare/prepare-boards.ts b/packages/old-import/src/prepare/prepare-boards.ts new file mode 100644 index 000000000..76dc2bc2f --- /dev/null +++ b/packages/old-import/src/prepare/prepare-boards.ts @@ -0,0 +1,34 @@ +import { objectEntries } from "@homarr/common"; +import type { BoardSize } from "@homarr/old-schema"; + +import type { ValidAnalyseConfig } from "../analyse/types"; +import type { BoardSelectionMap } from "../components/initial/board-selection-card"; + +const boardSizeSuffix: Record = { + lg: "large", + md: "medium", + sm: "small", +}; + +export const createBoardName = (fileName: string, boardSize: BoardSize) => { + return `${fileName.replace(".json", "")}-${boardSizeSuffix[boardSize]}`; +}; + +export const prepareBoards = (analyseConfigs: ValidAnalyseConfig[], selections: BoardSelectionMap) => { + return analyseConfigs.flatMap(({ name, config }) => { + const selectedSizes = selections.get(name); + if (!selectedSizes) return []; + + return objectEntries(selectedSizes) + .map(([size, selected]) => { + if (!selected) return null; + + return { + name: createBoardName(name, size), + size, + config, + }; + }) + .filter((board) => board !== null); + }); +}; diff --git a/packages/old-import/src/prepare/prepare-integrations.ts b/packages/old-import/src/prepare/prepare-integrations.ts new file mode 100644 index 000000000..6d55ae3d9 --- /dev/null +++ b/packages/old-import/src/prepare/prepare-integrations.ts @@ -0,0 +1,19 @@ +import type { ValidAnalyseConfig } from "../analyse/types"; + +export type PreparedIntegration = ReturnType[number]; + +export const prepareIntegrations = (analyseConfigs: ValidAnalyseConfig[]) => { + return analyseConfigs.flatMap(({ config }) => { + return config.apps + .map((app) => + app.integration?.type + ? { + ...app.integration, + name: app.name, + url: app.url, + } + : null, + ) + .filter((integration) => integration !== null); + }); +}; diff --git a/packages/old-import/src/prepare/prepare-items.ts b/packages/old-import/src/prepare/prepare-items.ts new file mode 100644 index 000000000..e82d6043c --- /dev/null +++ b/packages/old-import/src/prepare/prepare-items.ts @@ -0,0 +1,14 @@ +import type { BoardSize, OldmarrConfig } from "@homarr/old-schema"; + +import { mapApp, mapWidget } from "../mappers/map-item"; + +export const prepareItems = ( + { apps, widgets }: Pick, + boardSize: BoardSize, + appsMap: Map, + sectionMap: Map, +) => + widgets + .map((widget) => mapWidget(widget, boardSize, appsMap, sectionMap)) + .filter((widget) => widget !== null) + .concat(apps.map((app) => mapApp(app, boardSize, appsMap, sectionMap))); diff --git a/packages/old-import/src/prepare/prepare-multiple.ts b/packages/old-import/src/prepare/prepare-multiple.ts new file mode 100644 index 000000000..860d65b75 --- /dev/null +++ b/packages/old-import/src/prepare/prepare-multiple.ts @@ -0,0 +1,25 @@ +import type { AnalyseConfig, ValidAnalyseConfig } from "../analyse/types"; +import type { BoardSelectionMap } from "../components/initial/board-selection-card"; +import type { InitialOldmarrImportSettings } from "../settings"; +import { prepareApps } from "./prepare-apps"; +import { prepareBoards } from "./prepare-boards"; +import { prepareIntegrations } from "./prepare-integrations"; + +export const prepareMultipleImports = ( + analyseConfigs: AnalyseConfig[], + settings: InitialOldmarrImportSettings, + selections: BoardSelectionMap, +) => { + const invalidConfigs = analyseConfigs.filter((item) => item.config === null); + invalidConfigs.forEach(({ name }) => { + console.warn(`Skipping import of ${name} due to error in configuration. See logs of container for more details.`); + }); + + const filteredConfigs = analyseConfigs.filter((item): item is ValidAnalyseConfig => item.config !== null); + + return { + preparedApps: prepareApps(filteredConfigs), + preparedBoards: settings.onlyImportApps ? [] : prepareBoards(filteredConfigs, selections), + preparedIntegrations: prepareIntegrations(filteredConfigs), + }; +}; diff --git a/packages/old-import/src/prepare/prepare-sections.ts b/packages/old-import/src/prepare/prepare-sections.ts new file mode 100644 index 000000000..28c8c7136 --- /dev/null +++ b/packages/old-import/src/prepare/prepare-sections.ts @@ -0,0 +1,13 @@ +import type { OldmarrConfig } from "@homarr/old-schema"; + +import { mapCategorySection, mapEmptySection } from "../mappers/map-section"; + +export const prepareSections = ( + boardId: string, + { categories, wrappers }: Pick, +) => + new Map( + categories + .map((category) => [category.id, mapCategorySection(boardId, category)] as const) + .concat(wrappers.map((wrapper) => [wrapper.id, mapEmptySection(boardId, wrapper)] as const)), + ); diff --git a/packages/old-import/src/prepare/prepare-single.ts b/packages/old-import/src/prepare/prepare-single.ts new file mode 100644 index 000000000..c762beada --- /dev/null +++ b/packages/old-import/src/prepare/prepare-single.ts @@ -0,0 +1,21 @@ +import type { OldmarrConfig } from "@homarr/old-schema"; + +import type { OldmarrImportConfiguration } from "../settings"; +import { prepareApps } from "./prepare-apps"; + +export const prepareSingleImport = (config: OldmarrConfig, settings: OldmarrImportConfiguration) => { + const validAnalyseConfigs = [{ name: settings.name, config, isError: false }]; + + return { + preparedApps: prepareApps(validAnalyseConfigs), + preparedBoards: settings.onlyImportApps + ? [] + : [ + { + name: settings.name, + size: settings.screenSize, + config, + }, + ], + }; +}; diff --git a/packages/old-import/src/settings.ts b/packages/old-import/src/settings.ts new file mode 100644 index 000000000..a0700c8a0 --- /dev/null +++ b/packages/old-import/src/settings.ts @@ -0,0 +1,63 @@ +import { z } from "zod"; +import { zfd } from "zod-form-data"; + +import { boardSizes } from "@homarr/old-schema"; +import { validation, zodEnumFromArray } from "@homarr/validation"; +import { createCustomErrorParams } from "@homarr/validation/form"; + +export const sidebarBehaviours = ["remove-items", "last-section"] as const; +export const defaultSidebarBehaviour = "last-section"; +export type SidebarBehaviour = (typeof sidebarBehaviours)[number]; + +export const oldmarrImportConfigurationSchema = z.object({ + name: validation.board.name, + onlyImportApps: z.boolean().default(false), + screenSize: zodEnumFromArray(boardSizes).default("lg"), + sidebarBehaviour: z.enum(sidebarBehaviours).default(defaultSidebarBehaviour), +}); + +export type OldmarrImportConfiguration = z.infer; + +export const initialOldmarrImportSettings = oldmarrImportConfigurationSchema.pick({ + onlyImportApps: true, + sidebarBehaviour: true, +}); + +export type InitialOldmarrImportSettings = z.infer; + +export const superRefineJsonImportFile = (value: File | null, context: z.RefinementCtx) => { + if (!value) { + return context.addIssue({ + code: "invalid_type", + expected: "object", + received: "null", + }); + } + + if (value.type !== "application/json") { + return context.addIssue({ + code: "custom", + params: createCustomErrorParams({ + key: "invalidFileType", + params: { expected: "JSON" }, + }), + }); + } + + if (value.size > 1024 * 1024) { + return context.addIssue({ + code: "custom", + params: createCustomErrorParams({ + key: "fileTooLarge", + params: { maxSize: "1 MB" }, + }), + }); + } + + return null; +}; + +export const importJsonFileSchema = zfd.formData({ + file: zfd.file().superRefine(superRefineJsonImportFile), + configuration: zfd.json(oldmarrImportConfigurationSchema), +}); diff --git a/packages/old-import/src/shared.ts b/packages/old-import/src/shared.ts new file mode 100644 index 000000000..4276a510c --- /dev/null +++ b/packages/old-import/src/shared.ts @@ -0,0 +1,2 @@ +export { importJsonFileSchema, superRefineJsonImportFile, oldmarrImportConfigurationSchema } from "./settings"; +export type { OldmarrImportConfiguration } from "./settings"; diff --git a/packages/old-import/src/user-schema.ts b/packages/old-import/src/user-schema.ts new file mode 100644 index 000000000..f7a84c917 --- /dev/null +++ b/packages/old-import/src/user-schema.ts @@ -0,0 +1,27 @@ +import { z } from "zod"; + +const regexEncryptedSchema = z.string().regex(/^[a-f0-9]+\.[a-f0-9]+$/g); + +const encryptedSchema = z.custom<`${string}.${string}`>((value) => regexEncryptedSchema.safeParse(value).success); + +export const oldmarrImportUserSchema = z.object({ + id: z.string(), + name: z.string(), + email: z.string().email().nullable(), + emailVerified: z.date().nullable(), + image: z.string().nullable(), + isAdmin: z.boolean(), + isOwner: z.boolean(), + settings: z + .object({ + colorScheme: z.enum(["environment", "light", "dark"]), + defaultBoard: z.string(), + firstDayOfWeek: z.enum(["monday", "saturday", "sunday"]), + replacePingWithIcons: z.boolean(), + }) + .nullable(), + password: encryptedSchema, + salt: encryptedSchema, +}); + +export type OldmarrImportUser = z.infer; diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index 6e334a780..25c082f6f 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -22,6 +22,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { + "@homarr/common": "workspace:^0.1.0", "zod": "^3.24.1" }, "devDependencies": { diff --git a/packages/old-schema/src/app.ts b/packages/old-schema/src/app.ts index 5a4fb5421..79732af92 100644 --- a/packages/old-schema/src/app.ts +++ b/packages/old-schema/src/app.ts @@ -47,6 +47,8 @@ const integrationSchema = z.enum([ "tdarr", ]); +export type OldmarrIntegrationType = z.infer; + const appIntegrationPropertySchema = z.object({ type: z.enum(["private", "public"]), field: z.enum(["apiKey", "password", "username"]), diff --git a/packages/old-schema/src/config.ts b/packages/old-schema/src/config.ts index 5ca103739..d120d31c7 100644 --- a/packages/old-schema/src/config.ts +++ b/packages/old-schema/src/config.ts @@ -28,3 +28,5 @@ export const oldmarrConfigSchema = z.object({ }); export type OldmarrConfig = z.infer; +export type OldmarrCategorySection = z.infer; +export type OldmarrEmptySection = z.infer; diff --git a/packages/old-schema/src/index.ts b/packages/old-schema/src/index.ts index 6b2e36d27..c328cd8e7 100644 --- a/packages/old-schema/src/index.ts +++ b/packages/old-schema/src/index.ts @@ -1,5 +1,7 @@ -export type { OldmarrConfig } from "./config"; +export type { OldmarrConfig, OldmarrCategorySection, OldmarrEmptySection } from "./config"; export { oldmarrConfigSchema } from "./config"; -export type { OldmarrApp } from "./app"; +export type { OldmarrApp, OldmarrIntegrationType } from "./app"; export type { OldmarrWidget, OldmarrWidgetKind } from "./widget"; export { oldmarrWidgetKinds } from "./widget"; +export { boardSizes } from "./tile"; +export type { BoardSize } from "./tile"; diff --git a/packages/old-schema/src/setting.ts b/packages/old-schema/src/setting.ts index 56c30c188..f9374a6f2 100644 --- a/packages/old-schema/src/setting.ts +++ b/packages/old-schema/src/setting.ts @@ -32,11 +32,17 @@ const accessSettingsSchema = z.object({ allowGuests: z.boolean(), }); -const gridstackSettingsSchema = z.object({ - columnCountSmall: z.number(), - columnCountMedium: z.number(), - columnCountLarge: z.number(), -}); +const gridstackSettingsSchema = z + .object({ + columnCountSmall: z.number(), + columnCountMedium: z.number(), + columnCountLarge: z.number(), + }) + .catch({ + columnCountSmall: 3, + columnCountMedium: 6, + columnCountLarge: 12, + }); const layoutSettingsSchema = z.object({ enabledLeftSidebar: z.boolean(), diff --git a/packages/old-schema/src/tile.ts b/packages/old-schema/src/tile.ts index f90071175..92c66d5af 100644 --- a/packages/old-schema/src/tile.ts +++ b/packages/old-schema/src/tile.ts @@ -1,5 +1,7 @@ import { z } from "zod"; +import { objectKeys } from "@homarr/common"; + const createAreaSchema = ( type: TType, propertiesSchema: TPropertiesSchema, @@ -53,3 +55,6 @@ export const tileBaseSchema = z.object({ area: areaSchema, shape: shapeSchema, }); + +export const boardSizes = objectKeys(shapeSchema._def.shape()); +export type BoardSize = (typeof boardSizes)[number]; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 2d8dd3e76..75d42785b 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "Welcome to Homarr", + "subtitle": "Let's get started with setting up your Homarr instance.", + "description": "To get started, please select how you want to set up your Homarr instance.", + "action": { + "scratch": "Start from scratch", + "importOldmarr": "Import from Homarr before 1.0" + } + }, + "import": { + "title": "Import data", + "subtitle": "You can import data from an existing Homarr instance.", + "dropzone": { + "title": "Drag the zip file here or click to browse", + "description": "The uploaded zip will be processed and you'll be able to select what you want to import" + }, + "fileInfo": { + "action": { + "change": "Change file" + } + }, + "importSettings": { + "title": "Import settings", + "description": "Configure the import behavior" + }, + "boardSelection": { + "title": "Found {count} boards", + "description": "Choose all boards with there size you want to import", + "action": { + "selectAll": "Select all", + "unselectAll": "Unselect all" + } + }, + "summary": { + "title": "Import summary", + "description": "In the below summary you can see what will be imported", + "action": { + "import": "Confirm import and continue" + }, + "entities": { + "apps": "Apps", + "boards": "Boards", + "integrations": "Integrations", + "credentialUsers": "Credential users" + } + }, + "tokenModal": { + "title": "Enter import token", + "field": { + "token": { + "label": "Token", + "description": "Enter the shown import token from your previous homarr instance" + } + }, + "notification": { + "error": { + "title": "Invalid token", + "message": "The token you entered is invalid" + } + } + } + }, + "user": { + "title": "Admin user", + "subtitle": "Specify the credentials for your administrator user.", + "notification": { + "success": { + "title": "User created", + "message": "The user was successfully created" + }, + "error": { + "title": "User creation failed" + } + } + }, + "group": { + "title": "External group", + "subtitle": "Specify the group that should be used for external users.", + "form": { + "name": { + "label": "Group name", + "description": "Name has to match admin group of external provider" + } + } + }, + "settings": { + "title": "Settings", + "subtitle": "Configure server settings." + }, + "finish": { + "title": "Finish setup", + "subtitle": "You are ready to go!", + "description": "You have successfully completed the setup process. You can now start using Homarr. Select your next action:", + "action": { + "goToBoard": "Go to {name} board", + "createBoard": "Create your first board", + "inviteUser": "Invite other users", + "docs": "Read the documentation" + } + } + }, + "backToStart": "Back to start" + }, "user": { "title": "Users", "name": "User", @@ -588,6 +693,10 @@ "secrets": { "title": "Secrets", "lastUpdated": "Last updated {date}", + "notSet": { + "label": "No value set", + "tooltip": "This required secret has not been set yet" + }, "secureNotice": "This secret cannot be retrieved after creation", "reset": { "title": "Reset secret", @@ -687,6 +796,12 @@ "label": "Icon URL", "header": "Type name or objects to filter for icons... Homarr will search through {countIcons} icons for you." }, + "colorScheme": { + "options": { + "light": "Light", + "dark": "Dark" + } + }, "information": { "min": "Min", "max": "Max", @@ -768,7 +883,8 @@ "boardAlreadyExists": "A board with this name already exists", "invalidFileType": "Invalid file type, expected {expected}", "fileTooLarge": "File is too large, maximum size is {maxSize}", - "invalidConfiguration": "Invalid configuration" + "invalidConfiguration": "Invalid configuration", + "groupNameTaken": "Group name already taken" } } } @@ -1606,6 +1722,7 @@ }, "screenSize": { "label": "Screen size", + "description": "In versions before 1.0 three different modes existed, so you were able to choose the amount of columns for each screen size.", "option": { "sm": "Small", "md": "Medium", diff --git a/packages/ui/src/components/select-with-custom-items.tsx b/packages/ui/src/components/select-with-custom-items.tsx index 410fe3429..bbed3cd1f 100644 --- a/packages/ui/src/components/select-with-custom-items.tsx +++ b/packages/ui/src/components/select-with-custom-items.tsx @@ -17,6 +17,7 @@ export interface SelectWithCustomItemsProps withAsterisk?: boolean; onBlur?: (event: React.FocusEvent) => void; onFocus?: (event: React.FocusEvent) => void; + w?: string; } type Props = SelectWithCustomItemsProps & { @@ -30,6 +31,7 @@ export const SelectWithCustomItems = ({ defaultValue, placeholder, SelectOption, + w, ...props }: Props) => { const combobox = useCombobox({ @@ -75,6 +77,7 @@ export const SelectWithCustomItems = ({ onClick={toggle} rightSectionPointerEvents="none" multiline + w={w} > {selectedOption ? : {placeholder}} diff --git a/packages/validation/package.json b/packages/validation/package.json index b4580c1a9..d3d3c325c 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -24,7 +24,6 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/definitions": "workspace:^0.1.0", - "@homarr/old-schema": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "zod": "^3.24.1", "zod-form-data": "^2.0.2" diff --git a/packages/validation/src/board.ts b/packages/validation/src/board.ts index 33930063c..2783f7a88 100644 --- a/packages/validation/src/board.ts +++ b/packages/validation/src/board.ts @@ -1,5 +1,4 @@ import { z } from "zod"; -import { zfd } from "zod-form-data"; import { backgroundImageAttachments, @@ -9,7 +8,6 @@ import { } from "@homarr/definitions"; import { zodEnumFromArray } from "./enums"; -import { createCustomErrorParams } from "./form/i18n"; import { createSavePermissionsSchema } from "./permissions"; import { commonItemSchema, createSectionSchema } from "./shared"; @@ -69,53 +67,6 @@ const permissionsSchema = z.object({ id: z.string(), }); -export const oldmarrImportConfigurationSchema = z.object({ - name: boardNameSchema, - onlyImportApps: z.boolean().default(false), - distinctAppsByHref: z.boolean().default(true), - screenSize: z.enum(["lg", "md", "sm"]).default("lg"), - sidebarBehaviour: z.enum(["remove-items", "last-section"]).default("last-section"), -}); - -export type OldmarrImportConfiguration = z.infer; - -export const superRefineJsonImportFile = (value: File | null, context: z.RefinementCtx) => { - if (!value) { - return context.addIssue({ - code: "invalid_type", - expected: "object", - received: "null", - }); - } - - if (value.type !== "application/json") { - return context.addIssue({ - code: "custom", - params: createCustomErrorParams({ - key: "invalidFileType", - params: { expected: "JSON" }, - }), - }); - } - - if (value.size > 1024 * 1024) { - return context.addIssue({ - code: "custom", - params: createCustomErrorParams({ - key: "fileTooLarge", - params: { maxSize: "1 MB" }, - }), - }); - } - - return null; -}; - -const importJsonFileSchema = zfd.formData({ - file: zfd.file().superRefine(superRefineJsonImportFile), - configuration: zfd.json(oldmarrImportConfigurationSchema), -}); - const savePermissionsSchema = createSavePermissionsSchema(zodEnumFromArray(boardPermissions)); z.object({ @@ -129,6 +80,7 @@ z.object({ }); export const boardSchemas = { + name: boardNameSchema, byName: byNameSchema, savePartialSettings: savePartialSettingsSchema, save: saveSchema, @@ -137,5 +89,4 @@ export const boardSchemas = { changeVisibility: changeVisibilitySchema, permissions: permissionsSchema, savePermissions: savePermissionsSchema, - importOldmarrConfig: importJsonFileSchema, }; diff --git a/packages/validation/src/index.ts b/packages/validation/src/index.ts index dd218ff7c..6791c8a54 100644 --- a/packages/validation/src/index.ts +++ b/packages/validation/src/index.ts @@ -7,6 +7,7 @@ import { integrationSchemas } from "./integration"; import { locationSchemas } from "./location"; import { mediaSchemas } from "./media"; import { searchEngineSchemas } from "./search-engine"; +import { settingsSchemas } from "./settings"; import { userSchemas } from "./user"; import { widgetSchemas } from "./widgets"; @@ -21,11 +22,10 @@ export const validation = { icons: iconsSchemas, searchEngine: searchEngineSchemas, media: mediaSchemas, + settings: settingsSchemas, common: commonSchemas, }; -export { oldmarrImportConfigurationSchema, superRefineJsonImportFile } from "./board"; -export type { OldmarrImportConfiguration } from "./board"; export { createSectionSchema, itemAdvancedOptionsSchema, @@ -35,3 +35,4 @@ export { } from "./shared"; export { passwordRequirements } from "./user"; export { supportedMediaUploadFormats } from "./media"; +export { zodEnumFromArray, zodUnionFromArray } from "./enums"; diff --git a/packages/validation/src/settings.ts b/packages/validation/src/settings.ts new file mode 100644 index 000000000..8eb5225ac --- /dev/null +++ b/packages/validation/src/settings.ts @@ -0,0 +1,20 @@ +import { z } from "zod"; + +const initSettingsSchema = z.object({ + analytics: z.object({ + enableGeneral: z.boolean(), + enableWidgetData: z.boolean(), + enableIntegrationData: z.boolean(), + enableUserData: z.boolean(), + }), + crawlingAndIndexing: z.object({ + noIndex: z.boolean(), + noFollow: z.boolean(), + noTranslate: z.boolean(), + noSiteLinksSearchBox: z.boolean(), + }), +}); + +export const settingsSchemas = { + init: initSettingsSchema, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bca93d04f..12271478c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,6 +97,9 @@ importers: '@homarr/notifications': specifier: workspace:^0.1.0 version: link:../../packages/notifications + '@homarr/old-import': + specifier: workspace:^0.1.0 + version: link:../../packages/old-import '@homarr/old-schema': specifier: workspace:^0.1.0 version: link:../../packages/old-schema @@ -127,6 +130,9 @@ importers: '@mantine/core': specifier: ^7.15.1 version: 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dropzone': + specifier: ^7.15.1 + version: 7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.1 version: 7.15.1(react@19.0.0) @@ -939,6 +945,9 @@ importers: packages/form: dependencies: + '@homarr/common': + specifier: workspace:^0.1.0 + version: link:../common '@homarr/translation': specifier: workspace:^0.1.0 version: link:../translation @@ -1130,6 +1139,9 @@ importers: '@homarr/notifications': specifier: workspace:^0.1.0 version: link:../notifications + '@homarr/old-import': + specifier: workspace:^0.1.0 + version: link:../old-import '@homarr/old-schema': specifier: workspace:^0.1.0 version: link:../old-schema @@ -1213,18 +1225,54 @@ importers: '@homarr/definitions': specifier: workspace:^0.1.0 version: link:../definitions + '@homarr/form': + specifier: workspace:^0.1.0 + version: link:../form '@homarr/log': specifier: workspace:^0.1.0 version: link:../log + '@homarr/modals': + specifier: workspace:^0.1.0 + version: link:../modals + '@homarr/notifications': + specifier: workspace:^0.1.0 + version: link:../notifications '@homarr/old-schema': specifier: workspace:^0.1.0 version: link:../old-schema + '@homarr/translation': + specifier: workspace:^0.1.0 + version: link:../translation + '@homarr/ui': + specifier: workspace:^0.1.0 + version: link:../ui '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation + '@mantine/core': + specifier: ^7.15.1 + version: 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': + specifier: ^7.15.1 + version: 7.15.1(react@19.0.0) + adm-zip: + specifier: 0.5.16 + version: 0.5.16 + next: + specifier: ^14.2.20 + version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + react: + specifier: ^19.0.0 + version: 19.0.0 superjson: specifier: 2.2.2 version: 2.2.2 + zod: + specifier: ^3.24.1 + version: 3.24.1 + zod-form-data: + specifier: ^2.0.2 + version: 2.0.2(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1235,6 +1283,9 @@ importers: '@homarr/tsconfig': specifier: workspace:^0.1.0 version: link:../../tooling/typescript + '@types/adm-zip': + specifier: 0.5.7 + version: 0.5.7 eslint: specifier: ^9.17.0 version: 9.17.0 @@ -1244,6 +1295,9 @@ importers: packages/old-schema: dependencies: + '@homarr/common': + specifier: workspace:^0.1.0 + version: link:../common zod: specifier: ^3.24.1 version: 3.24.1 @@ -1576,9 +1630,6 @@ importers: '@homarr/definitions': specifier: workspace:^0.1.0 version: link:../definitions - '@homarr/old-schema': - specifier: workspace:^0.1.0 - version: link:../old-schema '@homarr/translation': specifier: workspace:^0.1.0 version: link:../translation @@ -2916,6 +2967,14 @@ packages: react: ^18.x || ^19.x react-dom: ^18.x || ^19.x + '@mantine/dropzone@7.15.1': + resolution: {integrity: sha512-1kaIc8ReKI+xxh0Q+pTkPk9vW0hvTC++GttZ9kLQUH3Rd/VEVKC+gTqj2WFnkwaCSqe6rcGR7Xnb0deNvJ1mwA==} + peerDependencies: + '@mantine/core': 7.15.1 + '@mantine/hooks': 7.15.1 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + '@mantine/form@7.15.1': resolution: {integrity: sha512-DA2syNlPsG1f+UtnbEG+pf4Pc/DoZUgcdvZn3LsCRxJZYNuwz8qQ16oL/wQ6UIk3klGlJI/RDzRJ9rvn6E28YQ==} peerDependencies: @@ -3803,6 +3862,9 @@ packages: resolution: {integrity: sha512-PSys7Hy5NuX76HBleOkd8wlRtI4GCzLHS2XUpKeGIj0vpzH4fqE+tpi7fBb5t9U7UiyM6E6pyabSKjoD2zUsoQ==} hasBin: true + '@types/adm-zip@0.5.7': + resolution: {integrity: sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==} + '@types/asn1@0.2.4': resolution: {integrity: sha512-V91DSJ2l0h0gRhVP4oBfBzRBN9lAbPUkGDMCnwedqPKX2d84aAMc9CulOvxdw1f7DfEYx99afab+Rsm3e52jhA==} @@ -4205,6 +4267,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + aes-decrypter@4.0.2: resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==} @@ -7056,6 +7122,12 @@ packages: peerDependencies: react: ^19.0.0 + react-dropzone-esm@15.2.0: + resolution: {integrity: sha512-pPwR8xWVL+tFLnbAb8KVH5f6Vtl397tck8dINkZ1cPMxHWH+l9dFmIgRWgbh7V7jbjIcuKXCsVrXbhQz68+dVA==} + engines: {node: '>= 10.13'} + peerDependencies: + react: '>= 16.8 || 18.0.0' + react-error-boundary@4.1.2: resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} peerDependencies: @@ -9368,6 +9440,14 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) + '@mantine/dropzone@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@mantine/core': 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.1(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-dropzone-esm: 15.2.0(react@19.0.0) + '@mantine/form@7.15.1(react@19.0.0)': dependencies: fast-deep-equal: 3.1.3 @@ -10520,6 +10600,10 @@ snapshots: semver: 7.6.2 update-check: 1.5.4 + '@types/adm-zip@0.5.7': + dependencies: + '@types/node': 22.10.2 + '@types/asn1@0.2.4': dependencies: '@types/node': 22.10.2 @@ -11044,6 +11128,8 @@ snapshots: acorn@8.14.0: {} + adm-zip@0.5.16: {} + aes-decrypter@4.0.2: dependencies: '@babel/runtime': 7.25.6 @@ -14225,6 +14311,11 @@ snapshots: react: 19.0.0 scheduler: 0.25.0 + react-dropzone-esm@15.2.0(react@19.0.0): + dependencies: + prop-types: 15.8.1 + react: 19.0.0 + react-error-boundary@4.1.2(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 From 032509e4623d7bab3a000a308cb21fc487c45487 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sun, 15 Dec 2024 15:53:02 +0100 Subject: [PATCH 015/262] feat: add tdarr integration (#1657) Co-authored-by: Meier Lukas --- packages/api/src/router/widgets/index.ts | 2 + .../src/router/widgets/media-transcoding.ts | 28 +++ packages/cron-jobs/src/index.ts | 2 + .../jobs/integrations/media-transcoding.ts | 14 ++ packages/definitions/src/integration.ts | 10 +- packages/definitions/src/widget.ts | 1 + packages/integrations/src/base/creator.ts | 2 + packages/integrations/src/index.ts | 3 + .../src/interfaces/media-transcoding/queue.ts | 16 ++ .../media-transcoding/statistics.ts | 29 +++ .../interfaces/media-transcoding/workers.ts | 13 ++ .../media-transcoding/tdarr-integration.ts | 172 ++++++++++++++++++ .../tdarr-validation-schemas.ts | 118 ++++++++++++ .../old-import/src/mappers/map-integration.ts | 2 +- .../src/widgets/definitions/index.ts | 1 + packages/old-import/src/widgets/options.ts | 4 + .../request-handler/src/media-transcoding.ts | 24 +++ packages/translation/src/lang/en.json | 62 +++++++ packages/widgets/src/index.tsx | 2 + .../src/media-transcoding/component.tsx | 115 ++++++++++++ .../media-transcoding/health-check-status.tsx | 76 ++++++++ .../widgets/src/media-transcoding/index.ts | 22 +++ .../media-transcoding/panels/queue.panel.tsx | 64 +++++++ .../panels/statistics.panel.tsx | 140 ++++++++++++++ .../panels/workers.panel.tsx | 76 ++++++++ 25 files changed, 996 insertions(+), 2 deletions(-) create mode 100644 packages/api/src/router/widgets/media-transcoding.ts create mode 100644 packages/cron-jobs/src/jobs/integrations/media-transcoding.ts create mode 100644 packages/integrations/src/interfaces/media-transcoding/queue.ts create mode 100644 packages/integrations/src/interfaces/media-transcoding/statistics.ts create mode 100644 packages/integrations/src/interfaces/media-transcoding/workers.ts create mode 100644 packages/integrations/src/media-transcoding/tdarr-integration.ts create mode 100644 packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts create mode 100644 packages/request-handler/src/media-transcoding.ts create mode 100644 packages/widgets/src/media-transcoding/component.tsx create mode 100644 packages/widgets/src/media-transcoding/health-check-status.tsx create mode 100644 packages/widgets/src/media-transcoding/index.ts create mode 100644 packages/widgets/src/media-transcoding/panels/queue.panel.tsx create mode 100644 packages/widgets/src/media-transcoding/panels/statistics.panel.tsx create mode 100644 packages/widgets/src/media-transcoding/panels/workers.panel.tsx diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index 7f030a4bb..5960587eb 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -7,6 +7,7 @@ import { healthMonitoringRouter } from "./health-monitoring"; import { indexerManagerRouter } from "./indexer-manager"; import { mediaRequestsRouter } from "./media-requests"; import { mediaServerRouter } from "./media-server"; +import { mediaTranscodingRouter } from "./media-transcoding"; import { notebookRouter } from "./notebook"; import { rssFeedRouter } from "./rssFeed"; import { smartHomeRouter } from "./smart-home"; @@ -25,4 +26,5 @@ export const widgetRouter = createTRPCRouter({ rssFeed: rssFeedRouter, indexerManager: indexerManagerRouter, healthMonitoring: healthMonitoringRouter, + mediaTranscoding: mediaTranscodingRouter, }); diff --git a/packages/api/src/router/widgets/media-transcoding.ts b/packages/api/src/router/widgets/media-transcoding.ts new file mode 100644 index 000000000..d6d1ce7e8 --- /dev/null +++ b/packages/api/src/router/widgets/media-transcoding.ts @@ -0,0 +1,28 @@ +import { getIntegrationKindsByCategory } from "@homarr/definitions"; +import { mediaTranscodingRequestHandler } from "@homarr/request-handler/media-transcoding"; +import { validation } from "@homarr/validation"; + +import type { IntegrationAction } from "../../middlewares/integration"; +import { createOneIntegrationMiddleware } from "../../middlewares/integration"; +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) => + createOneIntegrationMiddleware(action, ...getIntegrationKindsByCategory("mediaTranscoding")); + +export const mediaTranscodingRouter = createTRPCRouter({ + getDataAsync: publicProcedure + .unstable_concat(createIndexerManagerIntegrationMiddleware("query")) + .input(validation.common.paginated.pick({ page: true, pageSize: true })) + .query(async ({ ctx, input }) => { + const innerHandler = mediaTranscodingRequestHandler.handler(ctx.integration, { + pageOffset: input.page, + pageSize: input.pageSize, + }); + const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + + return { + integrationId: ctx.integration.id, + data, + }; + }), +}); diff --git a/packages/cron-jobs/src/index.ts b/packages/cron-jobs/src/index.ts index 45ddd4505..4bb6e0bf5 100644 --- a/packages/cron-jobs/src/index.ts +++ b/packages/cron-jobs/src/index.ts @@ -8,6 +8,7 @@ import { indexerManagerJob } from "./jobs/integrations/indexer-manager"; import { mediaOrganizerJob } from "./jobs/integrations/media-organizer"; import { mediaRequestListJob, mediaRequestStatsJob } from "./jobs/integrations/media-requests"; import { mediaServerJob } from "./jobs/integrations/media-server"; +import { mediaTranscodingJob } from "./jobs/integrations/media-transcoding"; import { pingJob } from "./jobs/ping"; import type { RssFeed } from "./jobs/rss-feeds"; import { rssFeedsJob } from "./jobs/rss-feeds"; @@ -31,6 +32,7 @@ export const jobGroup = createCronJobGroup({ healthMonitoring: healthMonitoringJob, sessionCleanup: sessionCleanupJob, updateChecker: updateCheckerJob, + mediaTranscoding: mediaTranscodingJob, }); export type JobGroupKeys = ReturnType<(typeof jobGroup)["getKeys"]>[number]; diff --git a/packages/cron-jobs/src/jobs/integrations/media-transcoding.ts b/packages/cron-jobs/src/jobs/integrations/media-transcoding.ts new file mode 100644 index 000000000..c039dc250 --- /dev/null +++ b/packages/cron-jobs/src/jobs/integrations/media-transcoding.ts @@ -0,0 +1,14 @@ +import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions"; +import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; +import { mediaTranscodingRequestHandler } from "@homarr/request-handler/media-transcoding"; + +import { createCronJob } from "../../lib"; + +export const mediaTranscodingJob = createCronJob("mediaTranscoding", EVERY_5_MINUTES).withCallback( + createRequestIntegrationJobHandler(mediaTranscodingRequestHandler.handler, { + widgetKinds: ["mediaTranscoding"], + getInput: { + mediaTranscoding: () => ({ pageOffset: 0, pageSize: 10 }), + }, + }), +); diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 8c9645be9..0856fa830 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -151,6 +151,13 @@ export const integrationDefs = { iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dashdot.png", supportsSearch: false, }, + tdarr: { + name: "Tdarr", + secretKinds: [[]], + category: ["mediaTranscoding"], + iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/tdarr.png", + supportsSearch: false, + }, } as const satisfies Record; export const integrationKinds = objectKeys(integrationDefs) as AtLeastOneOf; @@ -217,4 +224,5 @@ export type IntegrationCategory = | "torrent" | "smartHomeServer" | "indexerManager" - | "healthMonitoring"; + | "healthMonitoring" + | "mediaTranscoding"; diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts index 0f68c6577..633a1004a 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -14,6 +14,7 @@ export const widgetKinds = [ "downloads", "mediaRequests-requestList", "mediaRequests-requestStats", + "mediaTranscoding", "rssFeed", "bookmarks", "indexerManager", diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts index 54643e4db..82e54d98d 100644 --- a/packages/integrations/src/base/creator.ts +++ b/packages/integrations/src/base/creator.ts @@ -17,6 +17,7 @@ import { LidarrIntegration } from "../media-organizer/lidarr/lidarr-integration" import { RadarrIntegration } from "../media-organizer/radarr/radarr-integration"; import { ReadarrIntegration } from "../media-organizer/readarr/readarr-integration"; import { SonarrIntegration } from "../media-organizer/sonarr/sonarr-integration"; +import { TdarrIntegration } from "../media-transcoding/tdarr-integration"; import { OpenMediaVaultIntegration } from "../openmediavault/openmediavault-integration"; import { OverseerrIntegration } from "../overseerr/overseerr-integration"; import { PiHoleIntegration } from "../pi-hole/pi-hole-integration"; @@ -70,4 +71,5 @@ export const integrationCreators = { lidarr: LidarrIntegration, readarr: ReadarrIntegration, dashDot: DashDotIntegration, + tdarr: TdarrIntegration, } satisfies Record Integration>; diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index ea13ce13b..baa5a99b0 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -28,6 +28,9 @@ export type { HealthMonitoring } from "./interfaces/health-monitoring/healt-moni export { MediaRequestStatus } from "./interfaces/media-requests/media-request"; export type { MediaRequestList, MediaRequestStats } from "./interfaces/media-requests/media-request"; export type { StreamSession } from "./interfaces/media-server/session"; +export type { TdarrQueue } from "./interfaces/media-transcoding/queue"; +export type { TdarrPieSegment, TdarrStatistics } from "./interfaces/media-transcoding/statistics"; +export type { TdarrWorker } from "./interfaces/media-transcoding/workers"; // Schemas export { downloadClientItemSchema } from "./interfaces/downloads/download-client-items"; diff --git a/packages/integrations/src/interfaces/media-transcoding/queue.ts b/packages/integrations/src/interfaces/media-transcoding/queue.ts new file mode 100644 index 000000000..1b85dddc9 --- /dev/null +++ b/packages/integrations/src/interfaces/media-transcoding/queue.ts @@ -0,0 +1,16 @@ +export interface TdarrQueue { + array: { + id: string; + healthCheck: string; + transcode: string; + filePath: string; + fileSize: number; + container: string; + codec: string; + resolution: string; + type: "transcode" | "health-check"; + }[]; + totalCount: number; + startIndex: number; + endIndex: number; +} diff --git a/packages/integrations/src/interfaces/media-transcoding/statistics.ts b/packages/integrations/src/interfaces/media-transcoding/statistics.ts new file mode 100644 index 000000000..f16d39ae4 --- /dev/null +++ b/packages/integrations/src/interfaces/media-transcoding/statistics.ts @@ -0,0 +1,29 @@ +export interface TdarrPieSegment { + name: string; + value: number; +} + +export interface TdarrStatistics { + totalFileCount: number; + totalTranscodeCount: number; + totalHealthCheckCount: number; + failedTranscodeCount: number; + failedHealthCheckCount: number; + stagedTranscodeCount: number; + stagedHealthCheckCount: number; + pies: { + libraryName: string; + libraryId: string; + totalFiles: number; + totalTranscodes: number; + savedSpace: number; + totalHealthChecks: number; + transcodeStatus: TdarrPieSegment[]; + healthCheckStatus: TdarrPieSegment[]; + videoCodecs: TdarrPieSegment[]; + videoContainers: TdarrPieSegment[]; + videoResolutions: TdarrPieSegment[]; + audioCodecs: TdarrPieSegment[]; + audioContainers: TdarrPieSegment[]; + }[]; +} diff --git a/packages/integrations/src/interfaces/media-transcoding/workers.ts b/packages/integrations/src/interfaces/media-transcoding/workers.ts new file mode 100644 index 000000000..9adaed716 --- /dev/null +++ b/packages/integrations/src/interfaces/media-transcoding/workers.ts @@ -0,0 +1,13 @@ +export interface TdarrWorker { + id: string; + filePath: string; + fps: number; + percentage: number; + ETA: string; + jobType: string; + status: string; + step: string; + originalSize: number; + estimatedSize: number | null; + outputSize: number | null; +} diff --git a/packages/integrations/src/media-transcoding/tdarr-integration.ts b/packages/integrations/src/media-transcoding/tdarr-integration.ts new file mode 100644 index 000000000..c602b8da0 --- /dev/null +++ b/packages/integrations/src/media-transcoding/tdarr-integration.ts @@ -0,0 +1,172 @@ +import { z } from "@homarr/validation"; + +import { Integration } from "../base/integration"; +import type { TdarrQueue } from "../interfaces/media-transcoding/queue"; +import type { TdarrStatistics } from "../interfaces/media-transcoding/statistics"; +import type { TdarrWorker } from "../interfaces/media-transcoding/workers"; +import { getNodesResponseSchema, getStatisticsSchema, getStatusTableSchema } from "./tdarr-validation-schemas"; + +export class TdarrIntegration extends Integration { + public async testConnectionAsync(): Promise { + const url = this.url("/api/v2/status"); + const response = await fetch(url); + if (response.status !== 200) { + throw new Error(`Unexpected status code: ${response.status}`); + } + + await z.object({ status: z.string() }).parseAsync(await response.json()); + } + + public async getStatisticsAsync(): Promise { + const url = this.url("/api/v2/cruddb"); + const response = await fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ + data: { + collection: "StatisticsJSONDB", + mode: "getById", + docID: "statistics", + }, + }), + }); + + const statisticsData = await getStatisticsSchema.parseAsync(await response.json()); + + return { + totalFileCount: statisticsData.totalFileCount, + totalTranscodeCount: statisticsData.totalTranscodeCount, + totalHealthCheckCount: statisticsData.totalHealthCheckCount, + failedTranscodeCount: statisticsData.table3Count, + failedHealthCheckCount: statisticsData.table6Count, + stagedTranscodeCount: statisticsData.table1Count, + stagedHealthCheckCount: statisticsData.table4Count, + pies: statisticsData.pies.map((pie) => ({ + libraryName: pie[0], + libraryId: pie[1], + totalFiles: pie[2], + totalTranscodes: pie[3], + savedSpace: pie[4] * 1_000_000_000, // file_size is in GB, convert to bytes, + totalHealthChecks: pie[5], + transcodeStatus: pie[6], + healthCheckStatus: pie[7], + videoCodecs: pie[8], + videoContainers: pie[9], + videoResolutions: pie[10], + audioCodecs: pie[11], + audioContainers: pie[12], + })), + }; + } + + public async getWorkersAsync(): Promise { + const url = this.url("/api/v2/get-nodes"); + const response = await fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }); + + const nodesData = await getNodesResponseSchema.parseAsync(await response.json()); + const workers = Object.values(nodesData).flatMap((node) => { + return Object.values(node.workers); + }); + + return workers.map((worker) => ({ + id: worker._id, + filePath: worker.file, + fps: worker.fps, + percentage: worker.percentage, + ETA: worker.ETA, + jobType: worker.job.type, + status: worker.status, + step: worker.lastPluginDetails?.number ?? "", + originalSize: worker.originalfileSizeInGbytes * 1_000_000_000, // file_size is in GB, convert to bytes, + estimatedSize: worker.estSize ? worker.estSize * 1_000_000_000 : null, // file_size is in GB, convert to bytes, + outputSize: worker.outputFileSizeInGbytes ? worker.outputFileSizeInGbytes * 1_000_000_000 : null, // file_size is in GB, convert to bytes, + })); + } + + public async getQueueAsync(firstItemIndex: number, pageSize: number): Promise { + const transcodingQueue = await this.getTranscodingQueueAsync(firstItemIndex, pageSize); + const healthChecks = await this.getHealthCheckDataAsync(firstItemIndex, pageSize, transcodingQueue.totalCount); + + const combinedArray = [...transcodingQueue.array, ...healthChecks.array].slice(0, pageSize); + return { + array: combinedArray, + totalCount: transcodingQueue.totalCount + healthChecks.totalCount, + startIndex: firstItemIndex, + endIndex: firstItemIndex + combinedArray.length - 1, + }; + } + + private async getTranscodingQueueAsync(firstItemIndex: number, pageSize: number) { + const url = this.url("/api/v2/client/status-tables"); + const response = await fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ + data: { + start: firstItemIndex, + pageSize, + filters: [], + sorts: [], + opts: { table: "table1" }, + }, + }), + }); + const transcodesQueueData = await getStatusTableSchema.parseAsync(await response.json()); + + return { + array: transcodesQueueData.array.map((item) => ({ + id: item._id, + healthCheck: item.HealthCheck, + transcode: item.TranscodeDecisionMaker, + filePath: item.file, + fileSize: item.file_size * 1_000_000, // file_size is in MB, convert to bytes + container: item.container, + codec: item.video_codec_name, + resolution: item.video_resolution, + type: "transcode" as const, + })), + totalCount: transcodesQueueData.totalCount, + startIndex: firstItemIndex, + endIndex: firstItemIndex + transcodesQueueData.array.length - 1, + }; + } + + private async getHealthCheckDataAsync(firstItemIndex: number, pageSize: number, totalQueueCount: number) { + const url = this.url("/api/v2/client/status-tables"); + const response = await fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ + data: { + start: Math.max(firstItemIndex - totalQueueCount, 0), + pageSize, + filters: [], + sorts: [], + opts: { + table: "table4", + }, + }, + }), + }); + + const healthCheckData = await getStatusTableSchema.parseAsync(await response.json()); + + return { + array: healthCheckData.array.map((item) => ({ + id: item._id, + healthCheck: item.HealthCheck, + transcode: item.TranscodeDecisionMaker, + filePath: item.file, + fileSize: item.file_size * 1_000_000, // file_size is in MB, convert to bytes + container: item.container, + codec: item.video_codec_name, + resolution: item.video_resolution, + type: "health-check" as const, + })), + totalCount: healthCheckData.totalCount, + }; + } +} diff --git a/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts new file mode 100644 index 000000000..aabb61cc7 --- /dev/null +++ b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts @@ -0,0 +1,118 @@ +import { z } from "@homarr/validation"; + +export const getStatisticsSchema = z.object({ + totalFileCount: z.number(), + totalTranscodeCount: z.number(), + totalHealthCheckCount: z.number(), + table3Count: z.number(), + table6Count: z.number(), + table1Count: z.number(), + table4Count: z.number(), + pies: z.array( + z.tuple([ + z.string(), // Library Name + z.string(), // Library ID + z.number(), // File count + z.number(), // Number of transcodes + z.number(), // Space saved (in GB) + z.number(), // Number of health checks + z.array( + z.object({ + // Transcode Status (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Health Status (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Video files - Codecs (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Video files - Containers (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Video files - Resolutions (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Audio files - Codecs (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + z.array( + z.object({ + // Audio files - Containers (Pie segments) + name: z.string(), + value: z.number(), + }), + ), + ]), + ), +}); + +export const getNodesResponseSchema = z.record( + z.string(), + z.object({ + _id: z.string(), + nodeName: z.string(), + nodePaused: z.boolean(), + workers: z.record( + z.string(), + z.object({ + _id: z.string(), + file: z.string(), + fps: z.number(), + percentage: z.number(), + ETA: z.string(), + job: z.object({ + type: z.string(), + }), + status: z.string(), + lastPluginDetails: z + .object({ + number: z.string().optional(), + }) + .optional(), + originalfileSizeInGbytes: z.number(), + estSize: z.number().optional(), + outputFileSizeInGbytes: z.number().optional(), + workerType: z.string(), + }), + ), + }), +); + +export const getStatusTableSchema = z.object({ + array: z.array( + z.object({ + _id: z.string(), + HealthCheck: z.string(), + TranscodeDecisionMaker: z.string(), + file: z.string(), + file_size: z.number(), + container: z.string(), + video_codec_name: z.string(), + video_resolution: z.string(), + }), + ), + totalCount: z.number(), +}); diff --git a/packages/old-import/src/mappers/map-integration.ts b/packages/old-import/src/mappers/map-integration.ts index b51dae2dd..e4274adb5 100644 --- a/packages/old-import/src/mappers/map-integration.ts +++ b/packages/old-import/src/mappers/map-integration.ts @@ -31,7 +31,7 @@ const mapping: Record = { readarr: "readarr", sabnzbd: "sabNzbd", sonarr: "sonarr", - tdarr: null, + tdarr: "tdarr", transmission: "transmission", plex: "plex", }; diff --git a/packages/old-import/src/widgets/definitions/index.ts b/packages/old-import/src/widgets/definitions/index.ts index d574e0a37..5aaa9684f 100644 --- a/packages/old-import/src/widgets/definitions/index.ts +++ b/packages/old-import/src/widgets/definitions/index.ts @@ -68,6 +68,7 @@ export const widgetKindMapping = { indexerManager: "indexer-manager", bookmarks: "bookmark", healthMonitoring: "health-monitoring", + mediaTranscoding: "media-transcoding", } satisfies Record; // Use null for widgets that did not exist in oldmarr // TODO: revert assignment so that only old widgets are needed in the object, diff --git a/packages/old-import/src/widgets/options.ts b/packages/old-import/src/widgets/options.ts index a95c8a5d9..078a4ccd5 100644 --- a/packages/old-import/src/widgets/options.ts +++ b/packages/old-import/src/widgets/options.ts @@ -129,6 +129,10 @@ const optionMapping: OptionMapping = { fahrenheit: (oldOptions) => oldOptions.fahrenheit, fileSystem: (oldOptions) => oldOptions.fileSystem, }, + mediaTranscoding: { + defaultView: (oldOptions) => oldOptions.defaultView, + queuePageSize: (oldOptions) => oldOptions.queuePageSize, + }, app: null, }; diff --git a/packages/request-handler/src/media-transcoding.ts b/packages/request-handler/src/media-transcoding.ts new file mode 100644 index 000000000..05446bdd6 --- /dev/null +++ b/packages/request-handler/src/media-transcoding.ts @@ -0,0 +1,24 @@ +import dayjs from "dayjs"; + +import type { IntegrationKindByCategory } from "@homarr/definitions"; +import { integrationCreator } from "@homarr/integrations"; +import type { TdarrQueue, TdarrStatistics, TdarrWorker } from "@homarr/integrations"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const mediaTranscodingRequestHandler = createCachedIntegrationRequestHandler< + { queue: TdarrQueue; workers: TdarrWorker[]; statistics: TdarrStatistics }, + IntegrationKindByCategory<"mediaTranscoding">, + { pageOffset: number; pageSize: number } +>({ + queryKey: "mediaTranscoding", + cacheDuration: dayjs.duration(5, "minutes"), + async requestAsync(integration, input) { + const integrationInstance = integrationCreator(integration); + return { + queue: await integrationInstance.getQueueAsync(input.pageOffset, input.pageSize), + workers: await integrationInstance.getWorkersAsync(), + statistics: await integrationInstance.getStatisticsAsync(), + }; + }, +}); diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 75d42785b..8997a4deb 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1643,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "Media transcoding", + "description": "Statistics, current queue and worker status of your media transcoding", + "option": { + "defaultView": { + "label": "Default view" + }, + "queuePageSize": { + "label": "Queue page size" + } + }, + "tab": { + "workers": "Workers", + "queue": "Queue", + "statistics": "Statistics" + }, + "currentIndex": "{start}-{end} of {total}", + "healthCheck": { + "title": "Health check", + "queued": "Queued", + "status": { + "healthy": "Healthy", + "unhealthy": "Unhealthy" + } + }, + "panel": { + "statistics": { + "empty": "Empty", + "transcodes": "Transcodes", + "transcodesCount": "Transcodes: {value}", + "healthChecksCount": "Health checks: {value}", + "filesCount": "Files: {value}", + "savedSpace": "Saved space: {value}", + "healthChecks": "Health checks", + "videoCodecs": "Codecs", + "videoContainers": "Containers", + "videoResolutions": "Resolutions" + }, + "workers": { + "empty": "Empty", + "table": { + "file": "File", + "eta": "ETA", + "progress": "Progress", + "transcode": "Transcode", + "healthCheck": "Health check" + } + }, + "queue": { + "empty": "Empty", + "table": { + "file": "File", + "size": "Size", + "transcode": "Transcode", + "healthCheck": "Health check" + } + } + } + }, "rssFeed": { "name": "RSS feeds", "description": "Monitor and display one or more generic RSS, ATOM or JSON feeds", @@ -2272,6 +2331,9 @@ }, "updateChecker": { "label": "Update checker" + }, + "mediaTranscoding": { + "label": "Media transcoding" } } }, diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index e2d83563a..7fc8f97ff 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -21,6 +21,7 @@ import * as indexerManager from "./indexer-manager"; import * as mediaRequestsList from "./media-requests/list"; import * as mediaRequestsStats from "./media-requests/stats"; import * as mediaServer from "./media-server"; +import * as mediaTranscoding from "./media-transcoding"; import * as notebook from "./notebook"; import type { WidgetOptionDefinition } from "./options"; import * as rssFeed from "./rssFeed"; @@ -52,6 +53,7 @@ export const widgetImports = { bookmarks, indexerManager, healthMonitoring, + mediaTranscoding, } satisfies WidgetImportRecord; export type WidgetImports = typeof widgetImports; diff --git a/packages/widgets/src/media-transcoding/component.tsx b/packages/widgets/src/media-transcoding/component.tsx new file mode 100644 index 000000000..10342ec6a --- /dev/null +++ b/packages/widgets/src/media-transcoding/component.tsx @@ -0,0 +1,115 @@ +"use client"; + +import { useState } from "react"; +import { Center, Divider, Group, Pagination, SegmentedControl, Stack, Text } from "@mantine/core"; +import { IconClipboardList, IconCpu2, IconReportAnalytics } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { useI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; +import { HealthCheckStatus } from "./health-check-status"; +import { QueuePanel } from "./panels/queue.panel"; +import { StatisticsPanel } from "./panels/statistics.panel"; +import { WorkersPanel } from "./panels/workers.panel"; + +type Views = "workers" | "queue" | "statistics"; + +export default function MediaTranscodingWidget({ integrationIds, options }: WidgetComponentProps<"mediaTranscoding">) { + const [queuePage, setQueuePage] = useState(1); + const queuePageSize = 10; + const [transcodingData] = clientApi.widget.mediaTranscoding.getDataAsync.useSuspenseQuery( + { + integrationId: integrationIds[0] ?? "", + pageSize: queuePageSize, + page: queuePage, + }, + { + refetchOnMount: false, + refetchOnWindowFocus: false, + refetchOnReconnect: false, + }, + ); + + const [view, setView] = useState(options.defaultView); + const totalQueuePages = Math.ceil((transcodingData.data.queue.totalCount || 1) / queuePageSize); + + const t = useI18n("widget.mediaTranscoding"); + + return ( + + {view === "workers" ? ( + + ) : view === "queue" ? ( + + ) : ( + + )} + + + + + + {t("tab.workers")} + + + ), + value: "workers", + }, + { + label: ( +
+ + + {t("tab.queue")} + +
+ ), + value: "queue", + }, + { + label: ( +
+ + + {t("tab.statistics")} + +
+ ), + value: "statistics", + }, + ]} + value={view} + onChange={(value) => setView(value as Views)} + size="xs" + /> + {view === "queue" && ( + <> + + + + + + + + + + {t("currentIndex", { + start: transcodingData.data.queue.startIndex + 1, + end: transcodingData.data.queue.endIndex + 1, + total: transcodingData.data.queue.totalCount, + })} + + + )} + + + +
+
+ ); +} diff --git a/packages/widgets/src/media-transcoding/health-check-status.tsx b/packages/widgets/src/media-transcoding/health-check-status.tsx new file mode 100644 index 000000000..6491f6289 --- /dev/null +++ b/packages/widgets/src/media-transcoding/health-check-status.tsx @@ -0,0 +1,76 @@ +import type { MantineColor } from "@mantine/core"; +import { Divider, Group, HoverCard, Indicator, RingProgress, Stack, Text } from "@mantine/core"; +import { useColorScheme } from "@mantine/hooks"; +import { IconHeartbeat } from "@tabler/icons-react"; + +import type { TdarrStatistics } from "@homarr/integrations"; +import { useI18n } from "@homarr/translation/client"; + +interface HealthCheckStatusProps { + statistics: TdarrStatistics; +} + +export function HealthCheckStatus(props: HealthCheckStatusProps) { + const colorScheme = useColorScheme(); + const t = useI18n("widget.mediaTranscoding.healthCheck"); + + const indicatorColor = props.statistics.failedHealthCheckCount + ? "red" + : props.statistics.stagedHealthCheckCount + ? "yellow" + : "green"; + + return ( + + + + + + + + + + + {t("title")} + + + + + + + {props.statistics.stagedHealthCheckCount} + + {t("queued")} + + + + {props.statistics.totalHealthCheckCount} + + {t("status.healthy")} + + + + {props.statistics.failedHealthCheckCount} + + {t("status.unhealthy")} + + + + + + ); +} + +function textColor(color: MantineColor, theme: "light" | "dark") { + return `${color}.${theme === "light" ? 8 : 5}`; +} diff --git a/packages/widgets/src/media-transcoding/index.ts b/packages/widgets/src/media-transcoding/index.ts new file mode 100644 index 000000000..c8c6b13fb --- /dev/null +++ b/packages/widgets/src/media-transcoding/index.ts @@ -0,0 +1,22 @@ +import { IconTransform } from "@tabler/icons-react"; + +import { z } from "@homarr/validation"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const { componentLoader, definition } = createWidgetDefinition("mediaTranscoding", { + icon: IconTransform, + options: optionsBuilder.from((factory) => ({ + defaultView: factory.select({ + defaultValue: "statistics", + options: [ + { label: "Workers", value: "workers" }, + { label: "Queue", value: "queue" }, + { label: "Statistics", value: "statistics" }, + ], + }), + queuePageSize: factory.number({ defaultValue: 10, validate: z.number().min(1).max(30) }), + })), + supportedIntegrations: ["tdarr"], +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/media-transcoding/panels/queue.panel.tsx b/packages/widgets/src/media-transcoding/panels/queue.panel.tsx new file mode 100644 index 000000000..9d4d6a680 --- /dev/null +++ b/packages/widgets/src/media-transcoding/panels/queue.panel.tsx @@ -0,0 +1,64 @@ +import { Center, Group, ScrollArea, Table, Text, Title, Tooltip } from "@mantine/core"; +import { IconHeartbeat, IconTransform } from "@tabler/icons-react"; + +import { humanFileSize } from "@homarr/common"; +import type { TdarrQueue } from "@homarr/integrations"; +import { useI18n } from "@homarr/translation/client"; + +interface QueuePanelProps { + queue: TdarrQueue; +} + +export function QueuePanel(props: QueuePanelProps) { + const { queue } = props; + + const t = useI18n("widget.mediaTranscoding.panel.queue"); + + if (queue.array.length === 0) { + return ( +
+ {t("empty")} +
+ ); + } + + return ( + + + + + + + + + + {queue.array.map((item) => ( + + + + + ))} + +
{t("table.file")}{t("table.size")}
+ +
+ {item.type === "transcode" ? ( + + + + ) : ( + + + + )} +
+ + {item.filePath.split("\\").pop()?.split("/").pop() ?? item.filePath} + +
+
+ {humanFileSize(item.fileSize)} +
+
+ ); +} diff --git a/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx b/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx new file mode 100644 index 000000000..93da0c0ce --- /dev/null +++ b/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx @@ -0,0 +1,140 @@ +import type react from "react"; +import type { MantineColor, RingProgressProps } from "@mantine/core"; +import { Box, Center, Grid, Group, RingProgress, Stack, Text, Title, useMantineColorScheme } from "@mantine/core"; +import { IconDatabaseHeart, IconFileDescription, IconHeartbeat, IconTransform } from "@tabler/icons-react"; + +import { humanFileSize } from "@homarr/common"; +import type { TdarrPieSegment, TdarrStatistics } from "@homarr/integrations"; +import { useI18n } from "@homarr/translation/client"; + +const PIE_COLORS: MantineColor[] = ["cyan", "grape", "gray", "orange", "pink"]; + +interface StatisticsPanelProps { + statistics: TdarrStatistics; +} + +export function StatisticsPanel(props: StatisticsPanelProps) { + const t = useI18n("widget.mediaTranscoding.panel.statistics"); + + const allLibs = props.statistics.pies.find((pie) => pie.libraryName === "All"); + + if (!allLibs) { + return ( +
+ {t("empty")} +
+ ); + } + + return ( + + + + + {t("transcodes")} + + + + } + label={t("transcodesCount", { + value: props.statistics.totalTranscodeCount, + })} + /> + + + } + label={t("healthChecksCount", { + value: props.statistics.totalHealthCheckCount, + })} + /> + + + } + label={t("filesCount", { + value: props.statistics.totalFileCount, + })} + /> + + + } + label={t("savedSpace", { + value: humanFileSize(Math.floor(allLibs.savedSpace)), + })} + /> + + + + + {t("healthChecks")} + + + + + + {t("videoCodecs")} + + + + {t("videoContainers")} + + + + {t("videoResolutions")} + + + + ); +} + +function toRingProgressSections(segments: TdarrPieSegment[]): RingProgressProps["sections"] { + const total = segments.reduce((prev, curr) => prev + curr.value, 0); + return segments.map((segment, index) => ({ + value: (segment.value * 100) / total, + tooltip: `${segment.name}: ${segment.value}`, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + color: PIE_COLORS[index % PIE_COLORS.length]!, // Ensures a valid color in the case that index > PIE_COLORS.length + })); +} + +interface StatBoxProps { + icon: react.ReactNode; + label: string; +} + +function StatBox(props: StatBoxProps) { + const { colorScheme } = useMantineColorScheme(); + return ( + ({ + padding: theme.spacing.xs, + border: "1px solid", + borderRadius: theme.radius.md, + borderColor: colorScheme === "dark" ? theme.colors.dark[5] : theme.colors.gray[1], + })} + > + + {props.icon} + {props.label} + + + ); +} diff --git a/packages/widgets/src/media-transcoding/panels/workers.panel.tsx b/packages/widgets/src/media-transcoding/panels/workers.panel.tsx new file mode 100644 index 000000000..961ac5d7c --- /dev/null +++ b/packages/widgets/src/media-transcoding/panels/workers.panel.tsx @@ -0,0 +1,76 @@ +import { Center, Group, Progress, ScrollArea, Table, Text, Title, Tooltip } from "@mantine/core"; +import { IconHeartbeat, IconTransform } from "@tabler/icons-react"; + +import type { TdarrWorker } from "@homarr/integrations"; +import { useI18n } from "@homarr/translation/client"; + +interface WorkersPanelProps { + workers: TdarrWorker[]; +} + +export function WorkersPanel(props: WorkersPanelProps) { + const t = useI18n("widget.mediaTranscoding.panel.workers"); + + if (props.workers.length === 0) { + return ( +
+ {t("empty")} +
+ ); + } + + return ( + + + + + + + + + + + {props.workers.map((worker) => ( + + + + + + ))} + +
{t("table.file")}{t("table.eta")}{t("table.progress")}
+ +
+ {worker.jobType === "transcode" ? ( + + + + ) : ( + + + + )} +
+ + {worker.filePath.split("\\").pop()?.split("/").pop() ?? worker.filePath} + +
+
+ {worker.ETA.startsWith("0:") ? worker.ETA.substring(2) : worker.ETA} + + + {worker.step} + + {Math.round(worker.percentage)}% + +
+
+ ); +} From 922101dcbd0c512815b2cbb354cbab0fe80028c0 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 15 Dec 2024 21:16:42 +0100 Subject: [PATCH 016/262] fix: issues found in security audit (#1668) --- .../app/[locale]/boards/[name]/settings/page.tsx | 6 +++++- .../src/app/[locale]/manage/settings/page.tsx | 8 ++++++++ .../manage/users/groups/[id]/members/page.tsx | 8 ++++++++ .../app/[locale]/manage/users/groups/[id]/page.tsx | 8 ++++++++ .../manage/users/groups/[id]/permissions/page.tsx | 8 ++++++++ packages/api/src/router/board.ts | 13 ++++++++----- packages/api/src/router/invite.ts | 11 +++++++---- packages/api/src/router/serverSettings.ts | 7 ++++--- packages/api/src/router/test/invite.spec.ts | 2 +- packages/api/src/router/test/serverSettings.spec.ts | 2 +- packages/api/src/router/update-checker.ts | 4 ++-- packages/api/src/router/widgets/dns-hole.ts | 6 +++--- packages/api/src/router/widgets/indexer-manager.ts | 4 ++-- packages/api/src/router/widgets/notebook.ts | 4 ++-- packages/api/src/router/widgets/smart-home.ts | 6 +++--- 15 files changed, 70 insertions(+), 27 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx index 06255e0ff..e5d634e33 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx @@ -66,9 +66,13 @@ const getBoardAndPermissionsAsync = async (params: Props["params"]) => { export default async function BoardSettingsPage({ params, searchParams }: Props) { const { board, permissions } = await getBoardAndPermissionsAsync(params); const boardSettings = await getServerSettingByKeyAsync(db, "board"); - const { hasFullAccess } = await getBoardPermissionsAsync(board); + const { hasFullAccess, hasChangeAccess } = await getBoardPermissionsAsync(board); const t = await getScopedI18n("board.setting"); + if (!hasChangeAccess) { + notFound(); + } + return ( diff --git a/apps/nextjs/src/app/[locale]/manage/settings/page.tsx b/apps/nextjs/src/app/[locale]/manage/settings/page.tsx index a651682e9..f877b4ded 100644 --- a/apps/nextjs/src/app/[locale]/manage/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/settings/page.tsx @@ -1,6 +1,8 @@ +import { notFound } from "next/navigation"; import { Stack, Title } from "@mantine/core"; import { api } from "@homarr/api/server"; +import { auth } from "@homarr/auth/next"; import { getScopedI18n } from "@homarr/translation/server"; import { CrawlingAndIndexingSettings } from "~/app/[locale]/manage/settings/_components/crawling-and-indexing.settings"; @@ -20,6 +22,12 @@ export async function generateMetadata() { } export default async function SettingsPage() { + const session = await auth(); + + if (!session?.user.permissions.includes("admin")) { + notFound(); + } + const serverSettings = await api.serverSettings.getAll(); const tSettings = await getScopedI18n("management.page.settings"); return ( diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx index d20f285a8..11c6d1dad 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx @@ -1,10 +1,12 @@ import Link from "next/link"; +import { notFound } from "next/navigation"; import { Alert, Anchor, Center, Group, Stack, Table, TableTbody, TableTd, TableTr, Text, Title } from "@mantine/core"; import { IconExclamationCircle } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { env } from "@homarr/auth/env.mjs"; +import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; import { everyoneGroup } from "@homarr/definitions"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; @@ -24,6 +26,12 @@ interface GroupsDetailPageProps { } export default async function GroupsDetailPage({ params, searchParams }: GroupsDetailPageProps) { + const session = await auth(); + + if (!session?.user.permissions.includes("admin")) { + notFound(); + } + const t = await getI18n(); const tMembers = await getScopedI18n("management.page.group.setting.members"); const group = await api.group.getById({ id: params.id }); diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx index e3d8c6a5f..8ec60e2f3 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx @@ -1,6 +1,8 @@ +import { notFound } from "next/navigation"; import { Card, Group, Stack, Text, Title } from "@mantine/core"; import { api } from "@homarr/api/server"; +import { auth } from "@homarr/auth/next"; import { everyoneGroup } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; import { UserAvatar } from "@homarr/ui"; @@ -18,6 +20,12 @@ interface GroupsDetailPageProps { } export default async function GroupsDetailPage({ params }: GroupsDetailPageProps) { + const session = await auth(); + + if (!session?.user.permissions.includes("admin")) { + notFound(); + } + const group = await api.group.getById({ id: params.id }); const tGeneral = await getScopedI18n("management.page.group.setting.general"); const tGroupAction = await getScopedI18n("group.action"); diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx index 303d7b22d..f44397ab4 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx @@ -1,7 +1,9 @@ import React from "react"; +import { notFound } from "next/navigation"; import { Card, CardSection, Divider, Group, Stack, Text, Title } from "@mantine/core"; import { api } from "@homarr/api/server"; +import { auth } from "@homarr/auth/next"; import { objectKeys } from "@homarr/common"; import type { GroupPermissionKey } from "@homarr/definitions"; import { groupPermissions } from "@homarr/definitions"; @@ -16,6 +18,12 @@ interface GroupPermissionsPageProps { } export default async function GroupPermissionsPage({ params }: GroupPermissionsPageProps) { + const session = await auth(); + + if (!session?.user.permissions.includes("admin")) { + notFound(); + } + const group = await api.group.getById({ id: params.id }); const tPermissions = await getScopedI18n("group.permission"); const t = await getI18n(); diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 64863e2f2..26c38ba91 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -575,11 +575,14 @@ export const boardRouter = createTRPCRouter({ ); }); }), - importOldmarrConfig: protectedProcedure.input(importJsonFileSchema).mutation(async ({ input, ctx }) => { - const content = await input.file.text(); - const oldmarr = oldmarrConfigSchema.parse(JSON.parse(content)); - await importOldmarrAsync(ctx.db, oldmarr, input.configuration); - }), + importOldmarrConfig: permissionRequiredProcedure + .requiresPermission("board-create") + .input(importJsonFileSchema) + .mutation(async ({ input, ctx }) => { + const content = await input.file.text(); + const oldmarr = oldmarrConfigSchema.parse(JSON.parse(content)); + await importOldmarrAsync(ctx.db, oldmarr, input.configuration); + }), }); const noBoardWithSimilarNameAsync = async (db: Database, name: string, ignoredIds: string[] = []) => { diff --git a/packages/api/src/router/invite.ts b/packages/api/src/router/invite.ts index 8599555d3..c380f0003 100644 --- a/packages/api/src/router/invite.ts +++ b/packages/api/src/router/invite.ts @@ -6,11 +6,12 @@ import { invites } from "@homarr/db/schema/sqlite"; import { selectInviteSchema } from "@homarr/db/validationSchemas"; import { z } from "@homarr/validation"; -import { createTRPCRouter, protectedProcedure } from "../trpc"; +import { createTRPCRouter, permissionRequiredProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; export const inviteRouter = createTRPCRouter({ - getAll: protectedProcedure + getAll: permissionRequiredProcedure + .requiresPermission("admin") .output( z.array( selectInviteSchema @@ -40,7 +41,8 @@ export const inviteRouter = createTRPCRouter({ }, }); }), - createInvite: protectedProcedure + createInvite: permissionRequiredProcedure + .requiresPermission("admin") .input( z.object({ expirationDate: z.date(), @@ -65,7 +67,8 @@ export const inviteRouter = createTRPCRouter({ token, }; }), - deleteInvite: protectedProcedure + deleteInvite: permissionRequiredProcedure + .requiresPermission("admin") .input( z.object({ id: z.string(), diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts index f1aa6ecdd..2fdb000f2 100644 --- a/packages/api/src/router/serverSettings.ts +++ b/packages/api/src/router/serverSettings.ts @@ -3,17 +3,18 @@ import type { ServerSettings } from "@homarr/server-settings"; import { defaultServerSettingsKeys } from "@homarr/server-settings"; import { validation, z } from "@homarr/validation"; -import { createTRPCRouter, onboardingProcedure, protectedProcedure, publicProcedure } from "../trpc"; +import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, publicProcedure } from "../trpc"; import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; export const serverSettingsRouter = createTRPCRouter({ getCulture: publicProcedure.query(async ({ ctx }) => { return await getServerSettingByKeyAsync(ctx.db, "culture"); }), - getAll: protectedProcedure.query(async ({ ctx }) => { + getAll: permissionRequiredProcedure.requiresPermission("admin").query(async ({ ctx }) => { return await getServerSettingsAsync(ctx.db); }), - saveSettings: protectedProcedure + saveSettings: permissionRequiredProcedure + .requiresPermission("admin") .input( z.object({ settingsKey: z.enum(defaultServerSettingsKeys), diff --git a/packages/api/src/router/test/invite.spec.ts b/packages/api/src/router/test/invite.spec.ts index 6be30f7a9..927e7fd91 100644 --- a/packages/api/src/router/test/invite.spec.ts +++ b/packages/api/src/router/test/invite.spec.ts @@ -11,7 +11,7 @@ import { inviteRouter } from "../invite"; const defaultSession = { user: { id: createId(), - permissions: [], + permissions: ["admin"], colorScheme: "light", }, expires: new Date().toISOString(), diff --git a/packages/api/src/router/test/serverSettings.spec.ts b/packages/api/src/router/test/serverSettings.spec.ts index 4f08132be..ba2a7c784 100644 --- a/packages/api/src/router/test/serverSettings.spec.ts +++ b/packages/api/src/router/test/serverSettings.spec.ts @@ -15,7 +15,7 @@ vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session })); const defaultSession = { user: { id: createId(), - permissions: [], + permissions: ["admin"], colorScheme: "light", }, expires: new Date().toISOString(), diff --git a/packages/api/src/router/update-checker.ts b/packages/api/src/router/update-checker.ts index 730080873..4b36c3f93 100644 --- a/packages/api/src/router/update-checker.ts +++ b/packages/api/src/router/update-checker.ts @@ -1,9 +1,9 @@ import { updateCheckerRequestHandler } from "@homarr/request-handler/update-checker"; -import { createTRPCRouter, protectedProcedure } from "../trpc"; +import { createTRPCRouter, permissionRequiredProcedure } from "../trpc"; export const updateCheckerRouter = createTRPCRouter({ - getAvailableUpdates: protectedProcedure.query(async () => { + getAvailableUpdates: permissionRequiredProcedure.requiresPermission("admin").query(async () => { const handler = updateCheckerRequestHandler.handler({}); const data = await handler.getCachedOrUpdatedDataAsync({}); return data.data.availableUpdates; diff --git a/packages/api/src/router/widgets/dns-hole.ts b/packages/api/src/router/widgets/dns-hole.ts index a9b76be4f..3480ae874 100644 --- a/packages/api/src/router/widgets/dns-hole.ts +++ b/packages/api/src/router/widgets/dns-hole.ts @@ -10,7 +10,7 @@ import { controlsInputSchema } from "@homarr/integrations/types"; import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole"; import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration"; -import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; export const dnsHoleRouter = createTRPCRouter({ summary: publicProcedure @@ -62,7 +62,7 @@ export const dnsHoleRouter = createTRPCRouter({ }); }), - enable: publicProcedure + enable: protectedProcedure .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) .mutation(async ({ ctx: { integration } }) => { const client = integrationCreator(integration); @@ -75,7 +75,7 @@ export const dnsHoleRouter = createTRPCRouter({ }); }), - disable: publicProcedure + disable: protectedProcedure .input(controlsInputSchema) .unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole"))) .mutation(async ({ ctx: { integration }, input }) => { diff --git a/packages/api/src/router/widgets/indexer-manager.ts b/packages/api/src/router/widgets/indexer-manager.ts index 19dedb595..2bbf1356d 100644 --- a/packages/api/src/router/widgets/indexer-manager.ts +++ b/packages/api/src/router/widgets/indexer-manager.ts @@ -9,7 +9,7 @@ import { indexerManagerRequestHandler } from "@homarr/request-handler/indexer-ma import type { IntegrationAction } from "../../middlewares/integration"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; -import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) => createManyIntegrationMiddleware(action, ...getIntegrationKindsByCategory("indexerManager")); @@ -54,7 +54,7 @@ export const indexerManagerRouter = createTRPCRouter({ }; }); }), - testAllIndexers: publicProcedure + testAllIndexers: protectedProcedure .unstable_concat(createIndexerManagerIntegrationMiddleware("interact")) .mutation(async ({ ctx }) => { await Promise.all( diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts index 8fd369630..9c7d6da2b 100644 --- a/packages/api/src/router/widgets/notebook.ts +++ b/packages/api/src/router/widgets/notebook.ts @@ -5,10 +5,10 @@ import { eq } from "@homarr/db"; import { items } from "@homarr/db/schema/sqlite"; import { z } from "@homarr/validation"; -import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { createTRPCRouter, protectedProcedure } from "../../trpc"; export const notebookRouter = createTRPCRouter({ - updateContent: publicProcedure + updateContent: protectedProcedure .input( z.object({ itemId: z.string(), diff --git a/packages/api/src/router/widgets/smart-home.ts b/packages/api/src/router/widgets/smart-home.ts index 1b8b6ec64..d1a1fde85 100644 --- a/packages/api/src/router/widgets/smart-home.ts +++ b/packages/api/src/router/widgets/smart-home.ts @@ -7,7 +7,7 @@ import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; -import { createTRPCRouter, publicProcedure } from "../../trpc"; +import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; const createSmartHomeIntegrationMiddleware = (action: IntegrationAction) => createOneIntegrationMiddleware(action, ...getIntegrationKindsByCategory("smartHomeServer")); @@ -41,7 +41,7 @@ export const smartHomeRouter = createTRPCRouter({ }; }); }), - switchEntity: publicProcedure + switchEntity: protectedProcedure .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) .input(z.object({ entityId: z.string() })) .mutation(async ({ ctx: { integration }, input }) => { @@ -53,7 +53,7 @@ export const smartHomeRouter = createTRPCRouter({ return success; }), - executeAutomation: publicProcedure + executeAutomation: protectedProcedure .unstable_concat(createSmartHomeIntegrationMiddleware("interact")) .input(z.object({ automationId: z.string() })) .mutation(async ({ ctx: { integration }, input }) => { From 8c596bf5fa9119bd22375f2fc8408ebac8eb0bcb Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 15 Dec 2024 20:37:54 +0000 Subject: [PATCH 017/262] fix(deps): update dependency @tabler/icons-react to ^3.26.0 (#1667) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 54 ++++++++++++------------- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 5130741e5..fd7f80283 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -46,7 +46,7 @@ "@mantine/tiptap": "^7.15.1", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", - "@tabler/icons-react": "^3.24.0", + "@tabler/icons-react": "^3.26.0", "@tanstack/react-query": "^5.62.7", "@tanstack/react-query-devtools": "^5.62.7", "@tanstack/react-query-next-experimental": "5.62.7", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 93670731b..590ede0a7 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,7 +33,7 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.1", - "@tabler/icons-react": "^3.24.0", + "@tabler/icons-react": "^3.26.0", "dayjs": "^1.11.13", "next": "^14.2.20", "react": "^19.0.0" diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 8c6ce51d2..7151cabfd 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/ui": "workspace:^0.1.0", "@mantine/notifications": "^7.15.1", - "@tabler/icons-react": "^3.24.0" + "@tabler/icons-react": "^3.26.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 48c8c5ea7..6bc81b8f3 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -35,7 +35,7 @@ "@mantine/core": "^7.15.1", "@mantine/hooks": "^7.15.1", "@mantine/spotlight": "^7.15.1", - "@tabler/icons-react": "^3.24.0", + "@tabler/icons-react": "^3.26.0", "jotai": "^2.10.3", "next": "^14.2.20", "react": "^19.0.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index fa7fe065f..53e934cc4 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -32,7 +32,7 @@ "@mantine/core": "^7.15.1", "@mantine/dates": "^7.15.1", "@mantine/hooks": "^7.15.1", - "@tabler/icons-react": "^3.24.0", + "@tabler/icons-react": "^3.26.0", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.20", "react": "^19.0.0" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 3770e3e1c..4a03abfb1 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -43,7 +43,7 @@ "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.1", "@mantine/hooks": "^7.15.1", - "@tabler/icons-react": "^3.24.0", + "@tabler/icons-react": "^3.26.0", "@tiptap/extension-color": "2.10.3", "@tiptap/extension-highlight": "2.10.3", "@tiptap/extension-image": "2.10.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 12271478c..3ddc61f92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,8 +149,8 @@ importers: specifier: ^0.11.1 version: 0.11.1(typescript@5.7.2)(zod@3.24.1) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) '@tanstack/react-query': specifier: ^5.62.7 version: 5.62.7(react@19.0.0) @@ -204,7 +204,7 @@ importers: version: 2.10.3(@types/react@19.0.1)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -1158,8 +1158,8 @@ importers: specifier: ^7.15.1 version: 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -1195,8 +1195,8 @@ importers: specifier: ^7.15.1 version: 7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1493,8 +1493,8 @@ importers: specifier: ^7.15.1 version: 7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) jotai: specifier: ^2.10.3 version: 2.10.3(@types/react@18.3.13)(react@19.0.0) @@ -1540,7 +1540,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -1594,11 +1594,11 @@ importers: specifier: ^7.15.1 version: 7.15.1(react@19.0.0) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -1716,8 +1716,8 @@ importers: specifier: ^7.15.1 version: 7.15.1(react@19.0.0) '@tabler/icons-react': - specifier: ^3.24.0 - version: 3.24.0(react@19.0.0) + specifier: ^3.26.0 + version: 3.26.0(react@19.0.0) '@tiptap/extension-color': specifier: 2.10.3 version: 2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))(@tiptap/extension-text-style@2.10.3(@tiptap/core@2.10.3(@tiptap/pm@2.10.3))) @@ -1771,7 +1771,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -3544,13 +3544,13 @@ packages: typescript: optional: true - '@tabler/icons-react@3.24.0': - resolution: {integrity: sha512-m9c7TmlcDmKqvZAasG5rv1YvazZDrVEhNdNFa2d1Bzotc0dh+iceFdiZCEcYPDb5UcRyLAMvOaOC9y/5sfMMWw==} + '@tabler/icons-react@3.26.0': + resolution: {integrity: sha512-t18Zmu1ROktB7M8hWQ6vJw+mNpI/LPk5PPxLuE+kNB+4Zzf38GfETL8VF98inhzcfHohsggdROzMzwSAfjcAxw==} peerDependencies: react: '>= 16' - '@tabler/icons@3.24.0': - resolution: {integrity: sha512-qNis9e90QcdxAGV3wNIeX0Ba2R7ktm0cnqOToKHJfC2kj3fvJwEVLsw63K0/fm7NW8rSZjDSTQRmMnSg8g/wrg==} + '@tabler/icons@3.26.0': + resolution: {integrity: sha512-oO3D4ss+DxzxqU1aDy0f1HmToyrO0gcQWIMpzHAfV1quPUx0BZYvNm5xz1DQb4DxNm/+xNvbBGLJy4pzTLYWag==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} @@ -10263,12 +10263,12 @@ snapshots: optionalDependencies: typescript: 5.7.2 - '@tabler/icons-react@3.24.0(react@19.0.0)': + '@tabler/icons-react@3.26.0(react@19.0.0)': dependencies: - '@tabler/icons': 3.24.0 + '@tabler/icons': 3.26.0 react: 19.0.0 - '@tabler/icons@3.24.0': {} + '@tabler/icons@3.26.0': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: @@ -13463,12 +13463,12 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.1(react@19.0.0) - '@tabler/icons-react': 3.24.0(react@19.0.0) + '@tabler/icons-react': 3.26.0(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -13477,12 +13477,12 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.24.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.1(react@19.0.0) - '@tabler/icons-react': 3.24.0(react@19.0.0) + '@tabler/icons-react': 3.26.0(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From 73f7df771b935bb4e70153351c229b86bf19d3a8 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 00:50:03 +0000 Subject: [PATCH 018/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cs.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/da.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/de.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/el.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/es.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/et.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/fr.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/he.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/hr.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/hu.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/it.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/ja.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/ko.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/lt.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/lv.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/nl.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/no.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/pl.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/pt.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/ro.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/ru.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/sk.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/sl.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/sv.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/tr.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/uk.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/vi.json | 181 +++++++++++++++++++++++++- packages/translation/src/lang/zh.json | 181 +++++++++++++++++++++++++- 28 files changed, 5040 insertions(+), 28 deletions(-) diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 358f5ef14..307ca991a 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Uživatelé", "name": "Uživatel", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Malé", "md": "Střední", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 86aad66f6..eba7cbc0b 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Brugere", "name": "Bruger", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Lille", "md": "Mellem", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 1408c5142..a6582a4c1 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Benutzer", "name": "Benutzer", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Klein", "md": "Mittel", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index d0b52eff5..2cc592efa 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Χρήστες", "name": "Χρήστης", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Μικρό", "md": "Μεσαίο", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 92cce8e14..e5e586918 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Usuarios", "name": "Usuario", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Pequeño", "md": "Mediano", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index c49508a23..ac823fb9b 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "", "name": "", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "", "md": "", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 0bba97efd..0e5d9f62a 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Utilisateurs", "name": "Utilisateur", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Petite", "md": "Moyenne", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 5022ce402..f398e9d75 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "משתמשים", "name": "משתמש", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "קטן", "md": "בינוני", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index cab45b40d..6e4da0221 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Korisnici", "name": "Korisnik", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Mali", "md": "Srednji", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 210e0299c..854dad162 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Felhasználók", "name": "Felhasználó", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Kicsi", "md": "Közepes", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index ba306c1aa..ce40b0918 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Utenti", "name": "Utente", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Piccolo", "md": "Medio", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 4efccaf3f..2b64d3a82 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "ユーザー", "name": "ユーザー", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "小", "md": "中", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 6a7552145..7e74b14ff 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "사용자", "name": "사용자", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "", "md": "", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 377841a75..65e00deb8 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Vartotojai", "name": "Vartotojas", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Mažas", "md": "Vidutinis", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 610fbf16a..ca90093f1 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Lietotāji", "name": "Lietotājs", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Mazs", "md": "Vidējs", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 2c3dfffd4..e58c20bff 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Gebruikers", "name": "Gebruiker", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Klein", "md": "Middel", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index caee7f4d5..6739ab8fe 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Brukere", "name": "Bruker", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Liten", "md": "", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 22524a710..f9a653d91 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Użytkownicy", "name": "Użytkownik", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Mały", "md": "Średni", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 5d05ae0ac..bff90ac2c 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Usuários", "name": "Usuário", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Pequeno", "md": "Médio", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 83a1ac082..a874750c4 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Utilizatori", "name": "Utilizator", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Mic", "md": "Mediu", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index e925ee515..d088ebae0 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Пользователи", "name": "Пользователь", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Маленький", "md": "Средний", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index f0db252f3..40d7fe327 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Používatelia", "name": "Používateľ", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Malé", "md": "Stredné", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 10c25442f..a43123380 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Uporabniki", "name": "Uporabnik", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Majhna", "md": "Srednja", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 2a261578b..c6bbf87e1 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Användare", "name": "Användare", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Liten", "md": "Mellan", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index c82183892..5b2ccf7bb 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Kullanıcılar", "name": "Kullanıcı", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Küçük", "md": "Orta", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 3a8848472..001e56ef8 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Користувачі", "name": "Користувач", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Малий", "md": "Середній", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 02e34fc31..748f0a8ae 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "Người dùng", "name": "Người dùng", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "Bé nhỏ", "md": "Trung bình", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 5ac348f10..896088d7f 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1,4 +1,109 @@ { + "init": { + "step": { + "start": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "scratch": "", + "importOldmarr": "" + } + }, + "import": { + "title": "", + "subtitle": "", + "dropzone": { + "title": "", + "description": "" + }, + "fileInfo": { + "action": { + "change": "" + } + }, + "importSettings": { + "title": "", + "description": "" + }, + "boardSelection": { + "title": "", + "description": "", + "action": { + "selectAll": "", + "unselectAll": "" + } + }, + "summary": { + "title": "", + "description": "", + "action": { + "import": "" + }, + "entities": { + "apps": "", + "boards": "", + "integrations": "", + "credentialUsers": "" + } + }, + "tokenModal": { + "title": "", + "field": { + "token": { + "label": "", + "description": "" + } + }, + "notification": { + "error": { + "title": "", + "message": "" + } + } + } + }, + "user": { + "title": "", + "subtitle": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "" + } + } + }, + "group": { + "title": "", + "subtitle": "", + "form": { + "name": { + "label": "", + "description": "" + } + } + }, + "settings": { + "title": "", + "subtitle": "" + }, + "finish": { + "title": "", + "subtitle": "", + "description": "", + "action": { + "goToBoard": "", + "createBoard": "", + "inviteUser": "", + "docs": "" + } + } + }, + "backToStart": "" + }, "user": { "title": "", "name": "", @@ -588,6 +693,10 @@ "secrets": { "title": "", "lastUpdated": "", + "notSet": { + "label": "", + "tooltip": "" + }, "secureNotice": "", "reset": { "title": "", @@ -687,6 +796,12 @@ "label": "", "header": "" }, + "colorScheme": { + "options": { + "light": "", + "dark": "" + } + }, "information": { "min": "", "max": "", @@ -768,7 +883,8 @@ "boardAlreadyExists": "", "invalidFileType": "", "fileTooLarge": "", - "invalidConfiguration": "" + "invalidConfiguration": "", + "groupNameTaken": "" } } } @@ -1527,6 +1643,65 @@ } } }, + "mediaTranscoding": { + "name": "", + "description": "", + "option": { + "defaultView": { + "label": "" + }, + "queuePageSize": { + "label": "" + } + }, + "tab": { + "workers": "", + "queue": "", + "statistics": "" + }, + "currentIndex": "", + "healthCheck": { + "title": "", + "queued": "", + "status": { + "healthy": "", + "unhealthy": "" + } + }, + "panel": { + "statistics": { + "empty": "", + "transcodes": "", + "transcodesCount": "", + "healthChecksCount": "", + "filesCount": "", + "savedSpace": "", + "healthChecks": "", + "videoCodecs": "", + "videoContainers": "", + "videoResolutions": "" + }, + "workers": { + "empty": "", + "table": { + "file": "", + "eta": "", + "progress": "", + "transcode": "", + "healthCheck": "" + } + }, + "queue": { + "empty": "", + "table": { + "file": "", + "size": "", + "transcode": "", + "healthCheck": "" + } + } + } + }, "rssFeed": { "name": "", "description": "", @@ -1606,6 +1781,7 @@ }, "screenSize": { "label": "", + "description": "", "option": { "sm": "", "md": "", @@ -2155,6 +2331,9 @@ }, "updateChecker": { "label": "" + }, + "mediaTranscoding": { + "label": "" } } }, From e3bf3f371c4bc67126e810a42e6da1d446cdfa87 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 16 Dec 2024 15:06:31 +0100 Subject: [PATCH 019/262] test: reduce flakiness of nzbget and sabnzbd (#1669) --- packages/integrations/test/nzbget.spec.ts | 20 +++++++++++--------- packages/integrations/test/sabnzbd.spec.ts | 18 +++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/integrations/test/nzbget.spec.ts b/packages/integrations/test/nzbget.spec.ts index b19b39d71..9241c5a52 100644 --- a/packages/integrations/test/nzbget.spec.ts +++ b/packages/integrations/test/nzbget.spec.ts @@ -28,7 +28,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); + }, 30_000); test("Test connection should fail with wrong credentials", async () => { // Arrange @@ -43,7 +43,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("pauseQueueAsync should work", async () => { // Arrange @@ -60,7 +60,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("resumeQueueAsync should work", async () => { // Arrange @@ -80,7 +80,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Items should be empty", async () => { // Arrange @@ -98,7 +98,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("1 Items should exist after adding one", async () => { // Arrange @@ -115,7 +115,7 @@ describe("Nzbget integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Delete item should result in empty items", async () => { // Arrange @@ -124,16 +124,18 @@ describe("Nzbget integration", () => { const item = await nzbGetAddItemAsync(startedContainer, username, password, nzbGetIntegration); // Act - const getAsync = async () => await nzbGetIntegration.getClientJobsAndStatusAsync(); const actAsync = async () => await nzbGetIntegration.deleteItemAsync(item, true); // Assert await expect(actAsync()).resolves.not.toThrow(); - await expect(getAsync()).resolves.toMatchObject({ items: [] }); + // NzbGet is slow and we wait for a second before querying the items. Test was flaky without this. + await new Promise((resolve) => setTimeout(resolve, 1000)); + const result = await nzbGetIntegration.getClientJobsAndStatusAsync(); + expect(result.items).toHaveLength(0); // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds*/ + }, 30_000); // Timeout of 30 seconds }); const createNzbGetContainer = () => { diff --git a/packages/integrations/test/sabnzbd.spec.ts b/packages/integrations/test/sabnzbd.spec.ts index b549a8f3d..b153a2a86 100644 --- a/packages/integrations/test/sabnzbd.spec.ts +++ b/packages/integrations/test/sabnzbd.spec.ts @@ -28,7 +28,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Test connection should fail with wrong ApiKey", async () => { // Arrange @@ -43,7 +43,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("pauseQueueAsync should work", async () => { // Arrange @@ -60,7 +60,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("resumeQueueAsync should work", async () => { // Arrange @@ -80,7 +80,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Items should be empty", async () => { // Arrange @@ -98,7 +98,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("1 Items should exist after adding one", async () => { // Arrange @@ -115,7 +115,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Pause item should work", async () => { // Arrange @@ -134,7 +134,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Resume item should work", async () => { // Arrange @@ -154,7 +154,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds test("Delete item should result in empty items", async () => { // Arrange @@ -173,7 +173,7 @@ describe("Sabnzbd integration", () => { // Cleanup await startedContainer.stop(); - }, 20_000); // Timeout of 20 seconds + }, 30_000); // Timeout of 30 seconds }); const createSabnzbdContainer = () => { From b7b5da654bee37f1aceda2718bb92646fc4f472e Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:38:19 +0000 Subject: [PATCH 020/262] fix(deps): update dependency jotai to ^2.10.4 (#1672) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/spotlight/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index fd7f80283..518d634f5 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -63,7 +63,7 @@ "dotenv": "^16.4.7", "flag-icons": "^7.2.3", "glob": "^11.0.0", - "jotai": "^2.10.3", + "jotai": "^2.10.4", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.20", "postcss-preset-mantine": "^1.17.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 6bc81b8f3..3956ebbed 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -36,7 +36,7 @@ "@mantine/hooks": "^7.15.1", "@mantine/spotlight": "^7.15.1", "@tabler/icons-react": "^3.26.0", - "jotai": "^2.10.3", + "jotai": "^2.10.4", "next": "^14.2.20", "react": "^19.0.0", "use-deep-compare-effect": "^1.8.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3ddc61f92..86d814d65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -200,8 +200,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 jotai: - specifier: ^2.10.3 - version: 2.10.3(@types/react@19.0.1)(react@19.0.0) + specifier: ^2.10.4 + version: 2.10.4(@types/react@19.0.1)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.1(@mantine/core@7.15.1(@mantine/hooks@7.15.1(react@19.0.0))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.1(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1496,8 +1496,8 @@ importers: specifier: ^3.26.0 version: 3.26.0(react@19.0.0) jotai: - specifier: ^2.10.3 - version: 2.10.3(@types/react@18.3.13)(react@19.0.0) + specifier: ^2.10.4 + version: 2.10.4(@types/react@18.3.13)(react@19.0.0) next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -6137,8 +6137,8 @@ packages: jose@5.9.6: resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} - jotai@2.10.3: - resolution: {integrity: sha512-Nnf4IwrLhNfuz2JOQLI0V/AgwcpxvVy8Ec8PidIIDeRi4KCFpwTFIpHAAcU+yCgnw/oASYElq9UY0YdUUegsSA==} + jotai@2.10.4: + resolution: {integrity: sha512-/T4ofyMSkAybEs2OvR8S4HACa+/ASUEPLz86SUjFXJqU9RdJKLvZDJrag398suvHC5CR0+Cs4P5m/gtVcryzlw==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -13236,12 +13236,12 @@ snapshots: jose@5.9.6: {} - jotai@2.10.3(@types/react@18.3.13)(react@19.0.0): + jotai@2.10.4(@types/react@18.3.13)(react@19.0.0): optionalDependencies: '@types/react': 18.3.13 react: 19.0.0 - jotai@2.10.3(@types/react@19.0.1)(react@19.0.0): + jotai@2.10.4(@types/react@19.0.1)(react@19.0.0): optionalDependencies: '@types/react': 19.0.1 react: 19.0.0 From 8e4d67c3eb49f7ccbd7e87efa75dfe1e4665bf3f Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 16 Dec 2024 17:25:44 +0100 Subject: [PATCH 021/262] feat: add not found pages for boards (#1671) --- .../app/[locale]/(home)/(board)/layout.tsx | 5 ++ .../{(home-board) => (home)/(board)}/page.tsx | 2 +- .../src/app/[locale]/(home)/not-found.tsx | 3 ++ .../src/app/[locale]/(home-board)/layout.tsx | 5 -- .../[name]/{ => (board)}/_definition.tsx | 2 +- .../(content)/[name]/{ => (board)}/layout.tsx | 0 .../(content)/[name]/{ => (board)}/page.tsx | 0 .../boards/(content)/[name]/not-found.tsx | 18 +++++++ .../[locale]/boards/(content)/not-found.tsx | 47 +++++++++++++++++++ .../nextjs/src/components/board/not-found.tsx | 41 ++++++++++++++++ packages/translation/src/lang/en.json | 32 +++++++++++++ 11 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 apps/nextjs/src/app/[locale]/(home)/(board)/layout.tsx rename apps/nextjs/src/app/[locale]/{(home-board) => (home)/(board)}/page.tsx (64%) create mode 100644 apps/nextjs/src/app/[locale]/(home)/not-found.tsx delete mode 100644 apps/nextjs/src/app/[locale]/(home-board)/layout.tsx rename apps/nextjs/src/app/[locale]/boards/(content)/[name]/{ => (board)}/_definition.tsx (79%) rename apps/nextjs/src/app/[locale]/boards/(content)/[name]/{ => (board)}/layout.tsx (100%) rename apps/nextjs/src/app/[locale]/boards/(content)/[name]/{ => (board)}/page.tsx (100%) create mode 100644 apps/nextjs/src/app/[locale]/boards/(content)/[name]/not-found.tsx create mode 100644 apps/nextjs/src/app/[locale]/boards/(content)/not-found.tsx create mode 100644 apps/nextjs/src/components/board/not-found.tsx diff --git a/apps/nextjs/src/app/[locale]/(home)/(board)/layout.tsx b/apps/nextjs/src/app/[locale]/(home)/(board)/layout.tsx new file mode 100644 index 000000000..3467dc941 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/(home)/(board)/layout.tsx @@ -0,0 +1,5 @@ +import definition from "../../boards/(content)/(home)/_definition"; + +const { layout } = definition; + +export default layout; diff --git a/apps/nextjs/src/app/[locale]/(home-board)/page.tsx b/apps/nextjs/src/app/[locale]/(home)/(board)/page.tsx similarity index 64% rename from apps/nextjs/src/app/[locale]/(home-board)/page.tsx rename to apps/nextjs/src/app/[locale]/(home)/(board)/page.tsx index 7554444e5..79d1685df 100644 --- a/apps/nextjs/src/app/[locale]/(home-board)/page.tsx +++ b/apps/nextjs/src/app/[locale]/(home)/(board)/page.tsx @@ -1,4 +1,4 @@ -import definition from "../boards/(content)/(home)/_definition"; +import definition from "../../boards/(content)/(home)/_definition"; const { generateMetadataAsync: generateMetadata, page } = definition; diff --git a/apps/nextjs/src/app/[locale]/(home)/not-found.tsx b/apps/nextjs/src/app/[locale]/(home)/not-found.tsx new file mode 100644 index 000000000..b88f6c393 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/(home)/not-found.tsx @@ -0,0 +1,3 @@ +import HomeBoardNotFoundPage from "../boards/(content)/not-found"; + +export default HomeBoardNotFoundPage; diff --git a/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx b/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx deleted file mode 100644 index 9b69474ba..000000000 --- a/apps/nextjs/src/app/[locale]/(home-board)/layout.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import definition from "../boards/(content)/(home)/_definition"; - -const { layout } = definition; - -export default layout; diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/[name]/_definition.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/_definition.tsx similarity index 79% rename from apps/nextjs/src/app/[locale]/boards/(content)/[name]/_definition.tsx rename to apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/_definition.tsx index 82e53110d..d3b65a5e9 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/[name]/_definition.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/_definition.tsx @@ -1,6 +1,6 @@ import { api } from "@homarr/api/server"; -import { createBoardContentPage } from "../_creator"; +import { createBoardContentPage } from "../../_creator"; export default createBoardContentPage<{ locale: string; name: string }>({ async getInitialBoardAsync({ name }) { diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/[name]/layout.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/layout.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/boards/(content)/[name]/layout.tsx rename to apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/layout.tsx diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/[name]/page.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/page.tsx similarity index 100% rename from apps/nextjs/src/app/[locale]/boards/(content)/[name]/page.tsx rename to apps/nextjs/src/app/[locale]/boards/(content)/[name]/(board)/page.tsx diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/[name]/not-found.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/not-found.tsx new file mode 100644 index 000000000..9c398669b --- /dev/null +++ b/apps/nextjs/src/app/[locale]/boards/(content)/[name]/not-found.tsx @@ -0,0 +1,18 @@ +import { IconLayoutOff } from "@tabler/icons-react"; + +import { getScopedI18n } from "@homarr/translation/server"; + +import { BoardNotFound } from "~/components/board/not-found"; + +export default async function BoardNotFoundPage() { + const tNotFound = await getScopedI18n("board.error.notFound"); + return ( + + ); +} diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/not-found.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/not-found.tsx new file mode 100644 index 000000000..ba84e0593 --- /dev/null +++ b/apps/nextjs/src/app/[locale]/boards/(content)/not-found.tsx @@ -0,0 +1,47 @@ +import { IconHomeOff } from "@tabler/icons-react"; + +import { auth } from "@homarr/auth/next"; +import { db } from "@homarr/db"; +import { boards } from "@homarr/db/schema/sqlite"; +import { getI18n } from "@homarr/translation/server"; + +import type { BoardNotFoundProps } from "~/components/board/not-found"; +import { BoardNotFound } from "~/components/board/not-found"; + +export default async function NotFoundBoardHomePage() { + const boardNotFoundProps = await getPropsAsync(); + + return ; +} + +const getPropsAsync = async (): Promise => { + const boardCount = await db.$count(boards); + const t = await getI18n(); + + if (boardCount === 0) { + return { + icon: { src: "/favicon.ico", alt: "Homarr logo" }, + title: t("board.error.noBoard.title"), + description: t("board.error.noBoard.description"), + link: { label: t("board.error.noBoard.link"), href: "/manage/boards" }, + notice: t("board.error.noBoard.notice"), + }; + } + + const session = await auth(); + const isAdmin = session?.user.permissions.includes("admin"); + const type = isAdmin ? "admin" : session !== null ? "user" : "anonymous"; + const href = { + admin: "/manage/settings", + user: `/manage/users/${session?.user.id}/general`, + anonymous: "/manage/boards", + }[type]; + + return { + icon: IconHomeOff, + title: t(`board.error.homeBoard.title`), + description: t(`board.error.homeBoard.${type}.description`), + link: { label: t(`board.error.homeBoard.${type}.link`), href }, + notice: t(`board.error.homeBoard.${type}.notice`), + }; +}; diff --git a/apps/nextjs/src/components/board/not-found.tsx b/apps/nextjs/src/components/board/not-found.tsx new file mode 100644 index 000000000..d597597de --- /dev/null +++ b/apps/nextjs/src/components/board/not-found.tsx @@ -0,0 +1,41 @@ +import { Anchor, AppShellMain, Center, Flex, Group, Image, Text, Title } from "@mantine/core"; + +import type { TablerIcon } from "@homarr/ui"; + +import { fullHeightWithoutHeaderAndFooter } from "~/constants"; +import { MainHeader } from "../layout/header"; +import { HomarrLogoWithTitle } from "../layout/logo/homarr-logo"; +import { ClientShell } from "../layout/shell"; + +export interface BoardNotFoundProps { + icon: TablerIcon | { src: string; alt: string }; + title: string; + description: string; + link: { + label: string; + href: string; + }; + notice: string; +} + +export const BoardNotFound = ({ icon: Icon, title, description, link, notice }: BoardNotFoundProps) => { + return ( + + } hasNavigation={false} /> + +
+ + + {"src" in Icon ? {Icon.alt} : } + + {title} + + {description} + {link.label} + {notice} + +
+
+
+ ); +}; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 8997a4deb..516d0d5a5 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "Welcome to Homarr", + "description": "A sleek, modern dashboard that puts all of your apps and services at your fingertips.", + "link": "Create your first board", + "notice": "To make this page disappear, create a board and set it as the home board" + }, + "notFound": { + "title": "Board not found", + "description": "The board specified was either not found or you don't have access to it.", + "link": "View all boards", + "notice": "Check the link or contact an administrator if you think it should be accessible" + }, + "homeBoard": { + "title": "No home board", + "admin": { + "description": "You haven't set a home board for the server yet.", + "link": "Configure server-wide home board", + "notice": "To make this page disappear for all users, set a home board for the server" + }, + "user": { + "description": "You haven't set a home board yet.", + "link": "Configure your home board", + "notice": "To make this page disappear, specify the home board in your preferences" + }, + "anonymous": { + "description": "The server administrator hasn't set a home board yet.", + "link": "View public boards", + "notice": "To make this page disappear, ask the server administrator to set a home board for the server" + } + } } }, "management": { From 613d1f966282886c6a85bc400dfedbc4bdac906c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:10:43 +0000 Subject: [PATCH 022/262] fix(deps): update dependency typescript-eslint to ^8.18.1 (#1673) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 114 ++++++++++++++++++------------------ tooling/eslint/package.json | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86d814d65..0fcd2b1a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1814,7 +1814,7 @@ importers: version: 2.3.3(eslint@9.17.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) + version: 2.31.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.17.0) @@ -1825,8 +1825,8 @@ importers: specifier: ^5.1.0 version: 5.1.0(eslint@9.17.0) typescript-eslint: - specifier: ^8.18.0 - version: 8.18.0(eslint@9.17.0)(typescript@5.7.2) + specifier: ^8.18.1 + version: 8.18.1(eslint@9.17.0)(typescript@5.7.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -4050,51 +4050,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.18.0': - resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} + '@typescript-eslint/eslint-plugin@8.18.1': + resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.18.0': - resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} + '@typescript-eslint/parser@8.18.1': + resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.18.0': - resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} + '@typescript-eslint/scope-manager@8.18.1': + resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.18.0': - resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} + '@typescript-eslint/type-utils@8.18.1': + resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.18.0': - resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} + '@typescript-eslint/types@8.18.1': + resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.18.0': - resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} + '@typescript-eslint/typescript-estree@8.18.1': + resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.18.0': - resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} + '@typescript-eslint/utils@8.18.1': + resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.18.0': - resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} + '@typescript-eslint/visitor-keys@8.18.1': + resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -8072,8 +8072,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.18.0: - resolution: {integrity: sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==} + typescript-eslint@8.18.1: + resolution: {integrity: sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10822,14 +10822,14 @@ snapshots: dependencies: '@types/node': 22.10.2 - '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/type-utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/type-utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.1 eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -10839,27 +10839,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.1 debug: 4.3.7 eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.18.0': + '@typescript-eslint/scope-manager@8.18.1': dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 - '@typescript-eslint/type-utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.18.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) debug: 4.3.7 eslint: 9.17.0 ts-api-utils: 1.3.0(typescript@5.7.2) @@ -10867,12 +10867,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.18.0': {} + '@typescript-eslint/types@8.18.1': {} - '@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.18.1(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/visitor-keys': 8.18.0 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -10883,20 +10883,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.18.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) - '@typescript-eslint/scope-manager': 8.18.0 - '@typescript-eslint/types': 8.18.0 - '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.18.0': + '@typescript-eslint/visitor-keys@8.18.1': dependencies: - '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/types': 8.18.1 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -12312,17 +12312,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -12333,7 +12333,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -12345,7 +12345,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15461,11 +15461,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.18.0(eslint@9.17.0)(typescript@5.7.2): + typescript-eslint@8.18.1(eslint@9.17.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.18.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.18.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.18.1(@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 5ede328f9..f03361a7a 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.1.0", - "typescript-eslint": "^8.18.0" + "typescript-eslint": "^8.18.1" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From 02777d104c5da555337b3b1494a906488fcc7d64 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 22:33:55 +0000 Subject: [PATCH 023/262] fix(deps): update dependency undici to v7.1.1 (#1674) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/tasks/package.json b/apps/tasks/package.json index c33b28f5a..2b2e89441 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -38,7 +38,7 @@ "dayjs": "^1.11.13", "dotenv": "^16.4.7", "superjson": "2.2.2", - "undici": "7.1.0" + "undici": "7.1.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0fcd2b1a5..848b106c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -339,8 +339,8 @@ importers: specifier: 2.2.2 version: 2.2.2 undici: - specifier: 7.1.0 - version: 7.1.0 + specifier: 7.1.1 + version: 7.1.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -8115,8 +8115,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@7.1.0: - resolution: {integrity: sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==} + undici@7.1.1: + resolution: {integrity: sha512-WZkQ6eH9f5ZT93gaIffsbUaDpBwjbpvmMbfaEhOnbdUneurTESeRxwPGwjI28mRFESH3W3e8Togijh37ptOQqA==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -15499,7 +15499,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.1.0: {} + undici@7.1.1: {} unenv@1.10.0: dependencies: From 21126b6adc7c100e3f3fd42792147910e62003bf Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 08:40:01 +0000 Subject: [PATCH 024/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cs.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/da.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/de.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/el.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/es.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/et.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/fr.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/he.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/hr.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/hu.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/it.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/ja.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/ko.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/lt.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/lv.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/nl.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/no.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/pl.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/pt.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/ro.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/ru.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/sk.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/sl.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/sv.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/tr.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/uk.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/vi.json | 32 +++++++++++++++++++++++++++ packages/translation/src/lang/zh.json | 32 +++++++++++++++++++++++++++ 28 files changed, 896 insertions(+) diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 307ca991a..c65569394 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index eba7cbc0b..d8398ec91 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index a6582a4c1..1346b70fe 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 2cc592efa..4abfc57ad 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index e5e586918..e1c08f864 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index ac823fb9b..1e6479a95 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 0e5d9f62a..2a13c4f43 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index f398e9d75..b268168b8 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 6e4da0221..4bc952a62 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 854dad162..c02bbc614 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index ce40b0918..1ea8d025c 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 2b64d3a82..3d3777058 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 7e74b14ff..f3f7e531c 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 65e00deb8..1bf728aad 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index ca90093f1..10d29d551 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index e58c20bff..32fd8cd6c 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 6739ab8fe..3bd31e04a 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index f9a653d91..137fa7d1a 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index bff90ac2c..09398572c 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index a874750c4..425861393 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index d088ebae0..256f2be8d 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 40d7fe327..dac56eb5a 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index a43123380..7bdac931d 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index c6bbf87e1..51e56fde7 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 5b2ccf7bb..0e7097c93 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 001e56ef8..d2aad4e9a 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 748f0a8ae..6319c4801 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 896088d7f..4f82cee8b 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -1978,6 +1978,38 @@ } } } + }, + "error": { + "noBoard": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "notFound": { + "title": "", + "description": "", + "link": "", + "notice": "" + }, + "homeBoard": { + "title": "", + "admin": { + "description": "", + "link": "", + "notice": "" + }, + "user": { + "description": "", + "link": "", + "notice": "" + }, + "anonymous": { + "description": "", + "link": "", + "notice": "" + } + } } }, "management": { From dfa2e83238095145be9acfaa457345b369f5c077 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:53:52 +0000 Subject: [PATCH 025/262] chore(deps): update dependency @types/chroma-js to v2.4.5 (#1680) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 518d634f5..038adba45 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -81,7 +81,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/chroma-js": "2.4.4", + "@types/chroma-js": "2.4.5", "@types/node": "^22.10.2", "@types/prismjs": "^1.26.5", "@types/react": "^19.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 848b106c4..e29f0940d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,8 +249,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/chroma-js': - specifier: 2.4.4 - version: 2.4.4 + specifier: 2.4.5 + version: 2.4.5 '@types/node': specifier: ^22.10.2 version: 22.10.2 @@ -3892,8 +3892,8 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - '@types/chroma-js@2.4.4': - resolution: {integrity: sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==} + '@types/chroma-js@2.4.5': + resolution: {integrity: sha512-6ISjhzJViaPCy2q2e6PgK+8HcHQDQ0V2LDiKmYAh+jJlLqDa6HbwDh0wOevHY0kHHUx0iZwjSRbVD47WOUx5EQ==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -10644,7 +10644,7 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 22.10.2 - '@types/chroma-js@2.4.4': {} + '@types/chroma-js@2.4.5': {} '@types/connect@3.4.38': dependencies: From 28667c5e1aa5b9c9c640f251fcb4e9e1063fa922 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 17:36:20 +0000 Subject: [PATCH 026/262] fix(deps): update tanstack-query monorepo to ^5.62.8 (#1682) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 038adba45..fe9b0eeb7 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.26.0", - "@tanstack/react-query": "^5.62.7", - "@tanstack/react-query-devtools": "^5.62.7", - "@tanstack/react-query-next-experimental": "5.62.7", + "@tanstack/react-query": "^5.62.8", + "@tanstack/react-query-devtools": "^5.62.8", + "@tanstack/react-query-next-experimental": "5.62.8", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e29f0940d..0f7d6ebaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -152,23 +152,23 @@ importers: specifier: ^3.26.0 version: 3.26.0(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.7 - version: 5.62.7(react@19.0.0) + specifier: ^5.62.8 + version: 5.62.8(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.7 - version: 5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(react@19.0.0) + specifier: ^5.62.8 + version: 5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.7 - version: 5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + specifier: 5.62.8 + version: 5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.660(typescript@5.7.2) @@ -517,7 +517,7 @@ importers: version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.660(typescript@5.7.2) @@ -3556,27 +3556,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.7': - resolution: {integrity: sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==} + '@tanstack/query-core@5.62.8': + resolution: {integrity: sha512-4fV31vDsUyvNGrKIOUNPrZztoyL187bThnoQOvAXEVlZbSiuPONpfx53634MKKdvsDir5NyOGm80ShFaoHS/mw==} '@tanstack/query-devtools@5.61.4': resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} - '@tanstack/react-query-devtools@5.62.7': - resolution: {integrity: sha512-wxXsdTZJRs//hMtJMU5aNlUaTclRFPqLvDNeWbRj8YpGD3aoo4zyu53W55W2DY16+ycg3fti21uCW4N9oyj91w==} + '@tanstack/react-query-devtools@5.62.8': + resolution: {integrity: sha512-SwjXjQTRONd9WPeKVQQ9framG7YNqPV8PS+EGNVNXAyz2XThulMRCvZnh2+3DggnjcYM7YcpnuoZ4RH7q13p0g==} peerDependencies: - '@tanstack/react-query': ^5.62.7 + '@tanstack/react-query': ^5.62.8 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.7': - resolution: {integrity: sha512-9f+VpQ3P7ta86frcpZVYDcaYCAktQ/ccp7nrNUWdRnHkcVQ/kQJKwGCCxBPoV7/K/PmeWDZDR4COqcQi7bIGnw==} + '@tanstack/react-query-next-experimental@5.62.8': + resolution: {integrity: sha512-2F7WA0L810rZXvyE6chsDr8dVqPPO5shilPFHYZjsu7TAE3egnTNUF5JhrhibRJbZ1SYfErL3urDyE+bXpUclw==} peerDependencies: - '@tanstack/react-query': ^5.62.7 + '@tanstack/react-query': ^5.62.8 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.7': - resolution: {integrity: sha512-+xCtP4UAFDTlRTYyEjLx0sRtWyr5GIk7TZjZwBu4YaNahi3Rt2oMyRqfpfVrtwsqY2sayP4iXVCwmC+ZqqFmuw==} + '@tanstack/react-query@5.62.8': + resolution: {integrity: sha512-8TUstKxF/fysHonZsWg/hnlDVgasTdHx6Q+f1/s/oPKJBJbKUWPZEHwLTMOZgrZuroLMiqYKJ9w69Abm8mWP0Q==} peerDependencies: react: ^18 || ^19 @@ -10274,25 +10274,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.62.7': {} + '@tanstack/query-core@5.62.8': {} '@tanstack/query-devtools@5.61.4': {} - '@tanstack/react-query-devtools@5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.61.4 - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.7(@tanstack/react-query@5.62.7(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) next: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - '@tanstack/react-query@5.62.7(react@19.0.0)': + '@tanstack/react-query@5.62.8(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.62.7 + '@tanstack/query-core': 5.62.8 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -10531,7 +10531,7 @@ snapshots: '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) @@ -10540,12 +10540,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.62.8(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.7(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.7(react@19.0.0) + '@tanstack/react-query': 5.62.8(react@19.0.0) '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) react: 19.0.0 From c050ec4fe93b3f06be31db1ae732ce2331ce8316 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:10:06 +0100 Subject: [PATCH 027/262] docs: update license to apache 2.0 (#1684) * Update LICENSE * docs: add ajnart as copyright holder --- LICENSE | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 197 insertions(+), 17 deletions(-) diff --git a/LICENSE b/LICENSE index 435503eb6..46fa751ae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,201 @@ -MIT License + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright (c) 2023 Julius Marminge + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + 1. Definitions. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2024 Meier Lukas, Thomas Camlong and Homarr Labs + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 15d47d0585be3706367688265619cef65ccc9375 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:10:19 +0100 Subject: [PATCH 028/262] ci: generate auth secret in production (#1681) * ci: generate auth secret in production * refactor: remove no longer needed auth-secret from e2e test * fix: remove static auth secret --- Dockerfile | 2 +- development/docker-run.cmd | 2 +- e2e/shared/create-homarr-container.ts | 3 --- packages/auth/configuration.ts | 1 - ...ncryptionKey.js => generateRandomSecureKey.js} | 6 +++--- scripts/run.sh | 15 ++++++++++++++- 6 files changed, 19 insertions(+), 10 deletions(-) rename scripts/{generateEncryptionKey.js => generateRandomSecureKey.js} (65%) diff --git a/Dockerfile b/Dockerfile index 443a7ce08..6b0ea4e63 100644 --- a/Dockerfile +++ b/Dockerfile @@ -67,7 +67,7 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/static ./apps/nextjs/.next/static COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/public COPY --chown=nextjs:nodejs scripts/run.sh ./run.sh -COPY --chown=nextjs:nodejs scripts/generateEncryptionKey.js ./generateEncryptionKey.js +COPY --chown=nextjs:nodejs scripts/generateRandomSecureKey.js ./generateRandomSecureKey.js COPY --chown=nextjs:nodejs packages/redis/redis.conf /app/redis.conf COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/templates/nginx.conf diff --git a/development/docker-run.cmd b/development/docker-run.cmd index 080de6c41..1f608898f 100644 --- a/development/docker-run.cmd +++ b/development/docker-run.cmd @@ -1 +1 @@ -docker run -p 7575:7575 -e AUTH_SECRET='secrets' homarr:latest \ No newline at end of file +docker run -p 7575:7575 homarr:latest \ No newline at end of file diff --git a/e2e/shared/create-homarr-container.ts b/e2e/shared/create-homarr-container.ts index 84cbcc711..e6f2281ae 100644 --- a/e2e/shared/create-homarr-container.ts +++ b/e2e/shared/create-homarr-container.ts @@ -6,9 +6,6 @@ export const createHomarrContainer = () => { } return new GenericContainer("homarr-e2e") - .withEnvironment({ - AUTH_SECRET: "secret", - }) .withExposedPorts(7575) .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)); }; diff --git a/packages/auth/configuration.ts b/packages/auth/configuration.ts index 4c00a0b20..f13765536 100644 --- a/packages/auth/configuration.ts +++ b/packages/auth/configuration.ts @@ -89,7 +89,6 @@ export const createConfiguration = ( signIn: createSignInEventHandler(db), }, redirectProxyUrl: createRedirectUri(headers, "/api/auth"), - secret: "secret-is-not-defined-yet", // TODO: This should be added later session: { strategy: "database", maxAge: env.AUTH_SESSION_EXPIRY_TIME, diff --git a/scripts/generateEncryptionKey.js b/scripts/generateRandomSecureKey.js similarity index 65% rename from scripts/generateEncryptionKey.js rename to scripts/generateRandomSecureKey.js index 1fc7fdbfe..4813ae6a5 100644 --- a/scripts/generateEncryptionKey.js +++ b/scripts/generateRandomSecureKey.js @@ -1,6 +1,6 @@ -// This script generates a random encryption key -// This key is used to encrypt and decrypt the integration secrets -// In production it is generated in run.sh and stored in the environment variable ENCRYPTION_KEY +// This script generates a random secure key with a length of 64 characters +// This key is used to encrypt and decrypt the integration secrets for auth.js +// In production it is generated in run.sh and stored in the environment variables ENCRYPTION_KEY / AUTH_SECRET // during runtime, it's also stored in a file. const crypto = require("crypto"); diff --git a/scripts/run.sh b/scripts/run.sh index bc4d9c9b1..d22536ff2 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -18,11 +18,24 @@ if [ -r /secrets/encryptionKey ]; then encryptionKey=$(cat /secrets/encryptionKey) else echo "Generating encryption key" - encryptionKey=$(node ./generateEncryptionKey.js) + encryptionKey=$(node ./generateRandomSecureKey.js) echo $encryptionKey > /secrets/encryptionKey fi export ENCRYPTION_KEY=$encryptionKey +# Generates an auth secret if it doesn't exist and saves it to /secrets/authSecret +# Also sets the AUTH_SECRET environment variable required for auth.js +authSecret="" +if [ -r /secrets/authSecret ]; then + echo "Auth secret already exists" + authSecret=$(cat /secrets/authSecret) +else + echo "Generating auth secret" + authSecret=$(node ./generateRandomSecureKey.js) + echo $authSecret > /secrets/authSecret +fi +export AUTH_SECRET=$authSecret + # Start nginx proxy # 1. Replace the HOSTNAME in the nginx template file # 2. Create the nginx configuration file from the template From 692ef7f6dce5b8a687cce40504a01fc31c79bbf6 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:31:11 +0100 Subject: [PATCH 029/262] docs: add readme (#1683) --- README.md | 7 -- docs/README.md | 130 ++++++++++++++++++++++ docs/banner.png | Bin 0 -> 49700 bytes docs/installation-button.png | Bin 0 -> 7653 bytes docs/section-contribute.png | Bin 0 -> 28640 bytes docs/section-features.png | Bin 0 -> 19037 bytes docs/section-installation.png | Bin 0 -> 17426 bytes docs/section-preview.png | Bin 0 -> 24447 bytes docs/section-widgets-and-integrations.png | Bin 0 -> 33553 bytes 9 files changed, 130 insertions(+), 7 deletions(-) delete mode 100644 README.md create mode 100644 docs/README.md create mode 100644 docs/banner.png create mode 100644 docs/installation-button.png create mode 100644 docs/section-contribute.png create mode 100644 docs/section-features.png create mode 100644 docs/section-installation.png create mode 100644 docs/section-preview.png create mode 100644 docs/section-widgets-and-integrations.png diff --git a/README.md b/README.md deleted file mode 100644 index 3a88af411..000000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# THIS PROJECT IS STILL UNSTABLE AND WE DO NOT PROVIDE ANY SUPPORT FOR ISSUES THAT OCCURE. - -## PLEASE DO NOT OPEN ANY ISSUES OR DISCUSSIONS - -### EVERYTHING IS SUBJECT TO CHANGE - -Please use [this](https://github.com/ajnart/homarr) version of Homarr when you want to use it diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..658c070ed --- /dev/null +++ b/docs/README.md @@ -0,0 +1,130 @@ + +![Banner](./banner.png) + + +

+ +Latest Release (Semver) + +CI Status + + + + + + +

+ + +

+ + Demo ✨ + + • + + Install 💻 + • + + Translations 🈺 + • + + Discord 👋 + +

+ +> [!WARNING] +> This is a beta version of Homarr. You can download the old but stable version at https://github.com/ajnart/homarr/. Running this version is at your own risk. + +Simplify the management of your server with Homarr - a sleek, modern dashboard that puts all of your apps and services at your fingertips. With Homarr, you can access and control everything in one location. Homarr seamlessly integrates with the apps you've added, providing you with valuable information and giving you complete control. Installation is a breeze, and Homarr supports a wide range of deployment methods. + +
+
+ +![Features Section](./section-features.png) + +- 🖌️ Highly customizable with an extensive drag and drop grid system +- ✨ Integrates seamlessly with your favorite self-hosted applications +- 📌 Easy and fast app management - no YAML involved +- 👤 Detailed and easy to use user management with permissions and groups +- 👥 Support for single sign on via OIDC / LDAP +- 🙊 Safe encryption using BCrypt and AES-256-CBC for your valuable data +- 🕔 Realtime widget updates using WebSockets, tRPC and Redis +- 🔍 Search through thousands of data points in supported integrations or your data in Homarr using the fast built-in search +- 🦞 Icon picker with over 11K icons +- 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...) and most OS (Windows, Linux, TrueNAS, Unraid) +- 🖥️ Extensive Kubernetes support with Helm for efficient scaling & high reliability + +
+
+ +![Widgets & Integrations Section](./section-widgets-and-integrations.png) + +Homarr has a [built-in collection of widgets and integrations](https://homarr.dev/docs/category/integrations), that connect to your applications and enable you to control them directly from the dashboard. + +- 📥 **Torrent clients** + - [Deluge](https://homarr.dev/docs/integrations/torrent#deluge) + - [Transmission](https://homarr.dev/docs/integrations/torrent#transmission) + - [qBittorent](https://homarr.dev/docs/integrations/torrent#qbittorrent-integration) +- 📥 **Usenet clients** + - [SABnzbd](https://homarr.dev/docs/integrations/usenet#sabnzbd) + - [NZBGet](https://homarr.dev/docs/integrations/usenet#nzbget) +- 📺 **Media servers** + - [Plex](https://homarr.dev/docs/integrations/media-server/#plex) + - [Jellyfin](https://homarr.dev/docs/integrations/media-server#jellyfin-and-emby) +- 📚 **Media collection managers** + - [Sonarr](https://homarr.dev/docs/integrations/servarr#sonarr) + - [Radarr](https://homarr.dev/docs/integrations/servarr#radarr) + - [Lidarr](https://homarr.dev/docs/integrations/servarr#lidarr) + - [Readarr](https://homarr.dev/docs/integrations/servarr#readarr) +- 🎞️ **Media request managers** + - [Overseerr](https://homarr.dev/docs/integrations/media-requester) + - [Jellyseerr](https://homarr.dev/docs/integrations/media-requester) +- 🚫 **DNS ad-blockers** + - [Pihole](https://homarr.dev/docs/integrations/dns#pihole) + - [AdGuard Home](https://homarr.dev/docs/integrations/dns#adguard-home) +- 🖥️ **Monitoring** + - [Dash.](https://homarr.dev/docs/integrations/hardware) + - [OpenMediaVault.](https://homarr.dev/docs/integrations/hardware/#openmediavault) + - [Proxmox.](https://homarr.dev/docs/integrations/hardware/#proxmox) +- 🐳 **Container management**: + - [Docker](https://homarr.dev/docs/integrations/containers) + +
+
+ +![Installation Section](./section-installation.png) + +Since we are updating Homarr very frequently, we recommend reading our official installation guides: + +

+ + Please click here for official installation instructions + +

+ +
+
+ +![Contribute Section](./section-contribute.png) + +
+ +Homarr is a free to use open source project that is maintained by volunteers and developers from all over the world. We publish under the ``Apache License 2.0`` license which allows commercial usage. We invest multiple hours daily in to providing support, developing Homarr, integrating to third party software and more. We also pay for licensing and server hosting fees. +Please consider to help us cover these costs to enable the future development of Homarr. Thank you! + +

+ + Please click here to sponsor us at OpenCollective + +

+ +You can also support us by helping with [translating the entire project](https://homarr.dev/docs/community/translations) to as many languages as possible or contributing directly to the code or documentation. Please read our [Contribution Guidelines](/CONTRIBUTING.md). All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️ + +## Sponsors +Thanks to your generous sponsors we can continue to build Homarr. Check them out for high quality and easy to use development tools. +Feel free to contact us at homarr-labs@proton.me if you wish to become a sponsor. + +[![Covered by Argos Visual Testing](https://argos-ci.com/badge-large.svg)](https://argos-ci.com?utm_source=%5Bhomarr%5D&utm_campaign=oss) diff --git a/docs/banner.png b/docs/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..823bb50b1c3f0eb1c0fb2d8e84fb32e92846a8f1 GIT binary patch literal 49700 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 Sej%+Nh{cZmI;q=i&;1XAYDMb+ literal 0 HcmV?d00001 diff --git a/docs/installation-button.png b/docs/installation-button.png new file mode 100644 index 0000000000000000000000000000000000000000..991cb9b27fe447b2d782a407941ca79bcbbe6bb4 GIT binary patch literal 7653 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 BSNZ?| literal 0 HcmV?d00001 diff --git a/docs/section-features.png b/docs/section-features.png new file mode 100644 index 0000000000000000000000000000000000000000..b1854bf3a11e5981e25bda7d881ebabfb2034967 GIT binary patch literal 19037 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 literal 0 HcmV?d00001 diff --git a/docs/section-installation.png b/docs/section-installation.png new file mode 100644 index 0000000000000000000000000000000000000000..92fa4474f832986b1877dd205a93207de40074b5 GIT binary patch literal 17426 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 literal 0 HcmV?d00001 diff --git a/docs/section-preview.png b/docs/section-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..6e43e043d5b16558fee9b34a39d530080a3d85a9 GIT binary patch literal 24447 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 literal 0 HcmV?d00001 From 2b5ed83de35fbdee38c6d6ee803489b0ca7dd0f4 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:41:51 +0100 Subject: [PATCH 030/262] ci: adjust release pipeline for semver releases (#1679) --- .github/workflows/deployment-docker-image.yml | 120 +- .../workflows/deployment-weekly-release.yml | 2 +- .releaserc.json | 51 + package.json | 15 +- pnpm-lock.yaml | 1379 ++++++++++++++++- tooling/semver/package.json | 13 - tooling/semver/release.config.cjs | 16 - 7 files changed, 1516 insertions(+), 80 deletions(-) create mode 100644 .releaserc.json delete mode 100644 tooling/semver/package.json delete mode 100644 tooling/semver/release.config.cjs diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index f00513efd..f0edd9cb4 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -4,6 +4,8 @@ on: push: branches: - main + - beta + - dev workflow_dispatch: inputs: send-notifications: @@ -18,7 +20,7 @@ on: description: Push Docker Image permissions: - contents: write + contents: read packages: write env: @@ -30,31 +32,84 @@ env: concurrency: production jobs: + release: + name: Create tag and release + runs-on: ubuntu-latest + env: + SKIP_RELEASE: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'dev' }} + outputs: + version: ${{ steps.read-semver.outputs.version || steps.version-fallback.outputs.version }} + + steps: + - run: echo "Skipping release for workflow_dispatch event" + if: env.SKIP_RELEASE == 'true' + # The below generated version fallback represents a normalized branch name, for example "feature/branch-name" -> "feature-branch-name" + - run: echo "version="$(echo ${{github.ref_name}} | sed 's/[^a-zA-Z0-9\-]/-/g') >> "$GITHUB_OUTPUT" + id: version-fallback + if: env.SKIP_RELEASE == 'true' && github.ref_name != 'main' && github.ref_name != 'beta' + + - name: Obtain token + if: env.SKIP_RELEASE == 'false' + id: obtainToken + uses: tibdex/github-app-token@v2 + with: + private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + - uses: actions/checkout@v4 + if: env.SKIP_RELEASE == 'false' + - uses: actions/setup-node@v4 + if: env.SKIP_RELEASE == 'false' + with: + node-version: 22 + - run: npm i -g pnpm + if: env.SKIP_RELEASE == 'false' + - name: Install dependencies + if: env.SKIP_RELEASE == 'false' + run: | + pnpm install + - name: Run Semantic Release + if: env.SKIP_RELEASE == 'false' + env: + GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} + GIT_AUTHOR_NAME: "Releases Homarr" + GIT_AUTHOR_EMAIL: "175486441+homarr-releases[bot]@users.noreply.github.com" + GIT_COMMITTER_NAME: "Releases Homarr" + GIT_COMMITTER_EMAIL: "175486441+homarr-releases[bot]@users.noreply.github.com" + run: | + pnpm release + - name: Read semver output + # We read the last tag either from the created release or from the current branch, this is to rerun the deployment job for the currently released version when it failed + if: env.SKIP_RELEASE == 'false' || github.ref_name == 'main' || github.ref_name == 'beta' + id: read-semver + run: | + git fetch --tags + echo "version=$(git describe --tags --abbrev=0)" >> "$GITHUB_OUTPUT" + - name: Update dev branch + if: env.SKIP_RELEASE == 'false' + continue-on-error: true # Prevent pipeline from failing when merge fails + run: | + git fetch origin dev + git checkout dev + git pull origin dev + git merge ${{ github.ref_name }} + git push origin dev deploy: name: Deploy docker image + needs: release runs-on: ubuntu-latest + env: + NEXT_VERSION: ${{ needs.release.outputs.version }} + DEPLOY_LATEST: ${{ github.ref_name == 'main' }} + PUSH_IMAGE: ${{ github.event_name != 'workflow_dispatch' || github.events.inputs.push-image == 'true' }} steps: - - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false }} - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - uses: Ilshidur/action-discord@master - with: - args: "Deployment of an image has been triggered: [run ${{ github.run_number }}](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>)" - uses: actions/checkout@v4 - - name: Get Next Version - id: semver - uses: ietf-tools/semver-action@v1 - with: - token: ${{ github.token }} - branch: dev - name: Discord notification if: ${{ github.events.inputs.send-notifications != false }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Semver computed next tag to be ${{ steps.semver.outputs.next }}. Current is ${{ steps.semver.outputs.current }}. Building images..." + args: "Deployment of an image for version '${{env.NEXT_VERSION}}' has been triggered: [run ${{ github.run_number }}](<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>)" - name: Log in to the Container registry uses: docker/login-action@v3 with: @@ -71,48 +126,23 @@ jobs: with: images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" tags: | - type=raw,value=alpha - type=raw,value=early-adopters - # tags: | - # type=raw,value=latest - # type=raw,value=${{ steps.semver.outputs.next }} - - name: Build and push + ${{ env.DEPLOY_LATEST == true && 'type=raw,value=latest' || null }} + type=raw,value=${{ env.NEXT_VERSION }} + - name: Build and maybe push id: buildPushAction uses: docker/build-push-action@v6 - if: ${{ github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null }} with: platforms: linux/amd64,linux/arm64 context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - network: host - env: - SKIP_ENV_VALIDATION: true - - name: Build - id: buildPushDryAction - uses: docker/build-push-action@v6 - if: ${{ github.events.inputs.push-image == 'false' }} - with: - platforms: linux/amd64,linux/arm64 - context: . - push: false + push: ${{ env.PUSH_IMAGE}} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} network: host env: SKIP_ENV_VALIDATION: true - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false && (github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null) }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Deployment of image has completed. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'." - - name: Discord notification - if: ${{ github.events.inputs.send-notifications != false && !(github.events.inputs.push-image == 'true' || github.events.inputs.push-image == null) }} - env: - DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} - uses: Ilshidur/action-discord@master - with: - args: "Deployment of image has completed. Image ID is '${{ steps.buildPushDryAction.outputs.imageid }}'. This was a dry run." + args: "Deployment of image has completed. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == true && '' || 'This was a dry run' }}" diff --git a/.github/workflows/deployment-weekly-release.yml b/.github/workflows/deployment-weekly-release.yml index 9177db3cd..f658726e6 100644 --- a/.github/workflows/deployment-weekly-release.yml +++ b/.github/workflows/deployment-weekly-release.yml @@ -37,7 +37,7 @@ jobs: token: ${{ github.token }} branch: dev - name: Create pull request - run: "gh pr create --title \"chore(release): automatic release ${{ steps.semver.outputs.next }}\" --body \"**This is an automatic release**.
Manual action may be required for major bumps.
Detected change to be ``${{ steps.semver.outputs.bump }}``
Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}``\" --base main --head dev --label automerge" + run: 'gh pr create --title "chore(release): automatic release ${{ steps.semver.outputs.next }}" --body "**This is an automatic release**.
Manual action may be required for major bumps.
Detected change to be ``${{ steps.semver.outputs.bump }}``
Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}``" --base beta --head dev --label automerge' env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - name: Discord notification diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 000000000..e2414a583 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,51 @@ +{ + "branches": [ + "main", + { + "name": "beta", + "prerelease": true, + "channel": "beta" + } + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits" + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false + } + ], + [ + "@semantic-release/git", + { + "assets": ["package.json", "CHANGELOG.md"], + "message": "chore(release): ${nextRelease.version} [skip ci]" + } + ], + [ + "@semantic-release/github", + { + "successComment": false, + "failComment": false, + "releaseBodyTemplate": "<%= _.truncate(nextRelease.notes, { 'length': 124000, 'omission': '' }) %>" + } + ] + ] +} diff --git a/package.json b/package.json index 987c74d7a..fa3bd9f38 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homarr", - "private": true, "version": "1.0.0", + "private": true, "scripts": { "build": "cross-env CI=true turbo build", "clean": "git clean -xdf node_modules", @@ -21,6 +21,7 @@ "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", "lint:ws": "pnpm dlx sherif@latest", "package:new": "turbo gen init", + "release": "semantic-release", "test": "cross-env NODE_ENV=development vitest run --exclude e2e --coverage.enabled ", "test:e2e": "cross-env NODE_ENV=development vitest e2e", "test:ui": "cross-env NODE_ENV=development vitest --exclude e2e --ui --coverage.enabled", @@ -30,13 +31,21 @@ "prettier": "@homarr/prettier-config", "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^11.0.1", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.1", "@turbo/gen": "^2.3.3", "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.8", "@vitest/ui": "^2.1.8", + "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "jsdom": "^25.0.1", "prettier": "^3.4.2", + "semantic-release": "^24.2.0", "testcontainers": "^10.16.0", "turbo": "^2.3.3", "typescript": "^5.7.2", @@ -48,9 +57,9 @@ "node": ">=22.12.0" }, "pnpm": { + "allowNonAppliedPatches": true, "patchedDependencies": { "pretty-print-error": "patches/pretty-print-error.patch" - }, - "allowNonAppliedPatches": true + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f7d6ebaf..6d260927f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,24 @@ importers: '@homarr/prettier-config': specifier: workspace:^0.1.0 version: link:tooling/prettier + '@semantic-release/changelog': + specifier: ^6.0.3 + version: 6.0.3(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/commit-analyzer': + specifier: ^13.0.0 + version: 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/git': + specifier: ^10.0.1 + version: 10.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/github': + specifier: ^11.0.1 + version: 11.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/npm': + specifier: ^12.0.1 + version: 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/release-notes-generator': + specifier: ^14.0.1 + version: 14.0.2(semantic-release@24.2.0(typescript@5.7.2)) '@turbo/gen': specifier: ^2.3.3 version: 2.3.3(@types/node@22.10.2)(typescript@5.7.2) @@ -28,6 +46,9 @@ importers: '@vitest/ui': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) + conventional-changelog-conventionalcommits: + specifier: ^8.0.0 + version: 8.0.0 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -37,6 +58,9 @@ importers: prettier: specifier: ^3.4.2 version: 3.4.2 + semantic-release: + specifier: ^24.2.0 + version: 24.2.0(typescript@5.7.2) testcontainers: specifier: ^10.16.0 version: 10.16.0 @@ -1862,8 +1886,6 @@ importers: specifier: ^5.7.2 version: 5.7.2 - tooling/semver: {} - tooling/typescript: {} packages: @@ -2018,6 +2040,10 @@ packages: '@clack/prompts@0.8.2': resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@colors/colors@1.6.0': resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} @@ -3433,6 +3459,65 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@semantic-release/changelog@6.0.3': + resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/commit-analyzer@13.0.0': + resolution: {integrity: sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/error@3.0.0': + resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} + engines: {node: '>=14.17'} + + '@semantic-release/error@4.0.0': + resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} + engines: {node: '>=18'} + + '@semantic-release/git@10.0.1': + resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} + engines: {node: '>=14.17'} + peerDependencies: + semantic-release: '>=18.0.0' + + '@semantic-release/github@11.0.1': + resolution: {integrity: sha512-Z9cr0LgU/zgucbT9cksH0/pX9zmVda9hkDPcgIE0uvjMQ8w/mElDivGjx1w1pEQ+MuQJ5CBq3VCF16S6G4VH3A==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=24.1.0' + + '@semantic-release/npm@12.0.1': + resolution: {integrity: sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@semantic-release/release-notes-generator@14.0.2': + resolution: {integrity: sha512-ur2l2tVLBfX3fSEO2rCy2X6Kzg5S7BHGqdwTHvJrpWp4mOEN7W4K/2kWAjvfAlwMenEKjMnDIhBbxxjnP0S9hw==} + engines: {node: '>=20.8.1'} + peerDependencies: + semantic-release: '>=20.1.0' + + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3979,6 +4064,9 @@ packages: '@types/node@22.10.2': resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} @@ -4005,6 +4093,9 @@ packages: '@types/react@19.0.1': resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -4286,6 +4377,10 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} + aggregate-error@5.0.0: + resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} + engines: {node: '>=18'} + ajv-keywords@3.5.2: resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -4301,6 +4396,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -4321,6 +4420,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + apg-lite@1.0.4: resolution: {integrity: sha512-B32zCN3IdHIc99Vy7V9BaYTUzLeRA8YXYY1aQD1/5I2aqIrO0coi4t6hJPqMisidlBxhyME8UexkHt31SlR6Og==} @@ -4349,6 +4451,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argv-formatter@1.0.0: + resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -4357,6 +4462,9 @@ packages: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + array-includes@3.1.8: resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} @@ -4600,9 +4708,17 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@3.1.0: resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -4651,6 +4767,10 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + clean-stack@5.2.0: + resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} + engines: {node: '>=14.16'} + cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} @@ -4663,10 +4783,19 @@ packages: resolution: {integrity: sha512-q/CIxOggmzAw/67QYS4j1bMo72IpC+dAlswZl8xHxp8XvmWS97x3Q30pWNXq8mg0pZLSJwIFWZpUWTfcF119wA==} hasBin: true + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} @@ -4674,6 +4803,9 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4734,6 +4866,9 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + compress-commons@6.0.2: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} @@ -4763,6 +4898,32 @@ packages: constant-case@2.0.0: resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + conventional-changelog-angular@8.0.0: + resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} + + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} + hasBin: true + + conventional-commits-filter@5.0.0: + resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} + engines: {node: '>=18'} + + conventional-commits-parser@6.0.0: + resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} + engines: {node: '>=18'} + hasBin: true + + convert-hrtime@5.0.0: + resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} + engines: {node: '>=12'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -4802,6 +4963,15 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cpu-features@0.0.10: resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} engines: {node: '>=10.0.0'} @@ -4844,6 +5014,10 @@ packages: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -5162,6 +5336,9 @@ packages: drizzle-orm: '>=0.36.0' zod: '>=3.0.0' + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -5177,6 +5354,9 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emojilib@2.4.0: + resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} + emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -5206,6 +5386,21 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + env-ci@11.1.0: + resolution: {integrity: sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==} + engines: {node: ^18.17 || >=20.6.1} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -5286,6 +5481,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -5432,6 +5631,14 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + execa@9.5.2: + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} + engines: {node: ^18.19.0 || >=20.5.0} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -5499,10 +5706,18 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@2.0.0: + resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} + engines: {node: '>=4'} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -5514,10 +5729,22 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-versions@6.0.0: + resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} + engines: {node: '>=18'} + flag-icons@7.2.3: resolution: {integrity: sha512-X2gUdteNuqdNqob2KKTJTS+ZCvyWeLCtDz9Ty8uJP17Y4o82Y+U/Vd4JNrdwTAjagYsRznOn9DZ+E/Q52qbmqg==} @@ -5555,6 +5782,9 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -5586,6 +5816,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-timeout@1.0.2: + resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} + engines: {node: '>=18'} + function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -5629,6 +5863,18 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-stream@7.0.1: + resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} + engines: {node: '>=16'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -5643,6 +5889,9 @@ packages: git-hooks-list@3.1.0: resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + git-log-parser@1.2.1: + resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} + github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -5698,6 +5947,10 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -5784,6 +6037,18 @@ packages: resolution: {integrity: sha512-6NGwvttY1+HAFii08VYiEKI6ETPAFbpLntpm2M/MogEsAFWdZV74UNT+2M4bmqX90cIQhjlpBSP+tO+CfB0uww==} engines: {node: '>=16.0.0'} + hook-std@3.0.0: + resolution: {integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hosted-git-info@8.0.2: + resolution: {integrity: sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==} + engines: {node: ^18.17.0 || >=20.5.0} + html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} @@ -5814,6 +6079,14 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5840,10 +6113,17 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-from-esm@1.3.4: + resolution: {integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==} + engines: {node: '>=16.20'} + import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5852,6 +6132,14 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} @@ -5885,6 +6173,10 @@ packages: intl-messageformat@10.7.1: resolution: {integrity: sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==} + into-stream@7.0.0: + resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} + engines: {node: '>=12'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -5909,6 +6201,9 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -6040,6 +6335,14 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -6059,6 +6362,10 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-upper-case@1.1.2: resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} @@ -6096,6 +6403,10 @@ packages: isomorphic-fetch@3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + issue-parser@7.0.1: + resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} + engines: {node: ^18.17 || >=20.6.1} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -6127,6 +6438,10 @@ packages: resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} engines: {node: 20 || >=22} + java-properties@1.0.2: + resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} + engines: {node: '>= 0.6.0'} + jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -6182,6 +6497,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -6244,12 +6562,19 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} linkifyjs@4.1.3: resolution: {integrity: sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==} + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -6258,10 +6583,20 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.capitalize@4.2.1: + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -6271,15 +6606,27 @@ packages: lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -6369,6 +6716,17 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + marked-terminal@7.2.1: + resolution: {integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + marked: '>=1 <15' + + marked@12.0.2: + resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} + engines: {node: '>= 18'} + hasBin: true + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -6376,6 +6734,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -6400,10 +6762,19 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + mime@4.0.4: + resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + engines: {node: '>=16'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -6495,6 +6866,9 @@ packages: resolution: {integrity: sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==} engines: {node: '>= 8.0'} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + named-placeholders@1.1.3: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} @@ -6533,6 +6907,9 @@ packages: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} + nerf-dart@1.0.0: + resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} + netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -6608,6 +6985,10 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + node-emoji@2.2.0: + resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} + engines: {node: '>=18'} + node-fetch-commonjs@3.3.2: resolution: {integrity: sha512-VBlAiynj3VMLrotgwOS3OyECFxas5y7ltLcK4t41lMUZeaK15Ym4QRkqN0EQKAFL42q9i21EPKjzLUPfltR72A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6646,14 +7027,104 @@ packages: engines: {node: '>=6'} hasBin: true + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + npm@10.9.2: + resolution: {integrity: sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/fs' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/promise-spawn' + - '@npmcli/redact' + - '@npmcli/run-script' + - '@sigstore/tuf' + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -6719,6 +7190,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + openapi-path-templating@1.6.0: resolution: {integrity: sha512-1atBNwOUrZXthTvlvvX8k8ovFEF3iA8mDidYMkdOtvVdndBhTrspbwGXNOzEUaJhm9iUl4Tf5uQaeTLAJvwPig==} engines: {node: '>=12.20.0'} @@ -6749,10 +7224,30 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + p-each-series@3.0.0: + resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} + engines: {node: '>=12'} + + p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + + p-is-promise@3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -6761,6 +7256,22 @@ packages: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} + p-map@7.0.3: + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + engines: {node: '>=18'} + + p-reduce@2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} + + p-reduce@3.0.0: + resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} + engines: {node: '>=12'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + pac-proxy-agent@7.0.2: resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} @@ -6785,10 +7296,35 @@ packages: parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -6798,6 +7334,10 @@ packages: path-case@2.1.1: resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -6810,6 +7350,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -6825,6 +7369,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -6846,6 +7394,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + piscina@4.6.1: resolution: {integrity: sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==} @@ -6853,6 +7405,10 @@ packages: resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} hasBin: true + pkg-conf@2.1.0: + resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} + engines: {node: '>=4'} + playwright-core@1.49.0: resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} engines: {node: '>=18'} @@ -6953,6 +7509,10 @@ packages: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} + engines: {node: '>=18'} + pretty-print-error@1.1.2: resolution: {integrity: sha512-XkKN3W8aeRYApO17WpzuaJZmqH3WNSFeqR4Sxt7vu+C7pcWB+3+JDJ2dnnhzSCqvC1IaYR36CVh4VsFZyBicQA==} @@ -7236,6 +7796,14 @@ packages: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -7329,6 +7897,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -7444,13 +8016,26 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} + semantic-release@24.2.0: + resolution: {integrity: sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==} + engines: {node: '>=20.8.1'} + hasBin: true + semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + semver-parser@4.1.7: resolution: {integrity: sha512-RNNvmr1JKZ4Eia7Cyfxtr6aR7eiQs1bPGBv4EC3OJ5pTKEoHjLsT+dY1SSny2tq/uqx9bzNR4lL8tzaB70TN9A==} + semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -7525,6 +8110,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + signale@1.4.0: + resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} + engines: {node: '>=6'} + simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} @@ -7541,10 +8130,18 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: + resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} + engines: {node: '>=8'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -7596,9 +8193,27 @@ packages: space-separated-tokens@1.1.5: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + spawn-error-forwarder@1.0.0: + resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + split-ca@1.0.1: resolution: {integrity: sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==} + split2@1.0.0: + resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -7632,6 +8247,9 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + stream-combiner2@1.1.1: + resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -7694,6 +8312,14 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -7727,6 +8353,10 @@ packages: peerDependencies: postcss: ^8.3.3 + super-regex@1.0.0: + resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} + engines: {node: '>=18'} + superjson@2.2.2: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} @@ -7743,6 +8373,10 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -7793,6 +8427,14 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + temp-dir@3.0.0: + resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + engines: {node: '>=14.16'} + + tempy@3.1.0: + resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + engines: {node: '>=14.16'} + terser-webpack-plugin@5.3.10: resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} @@ -7827,9 +8469,23 @@ packages: text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + time-span@5.1.0: + resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} + engines: {node: '>=12'} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -7912,6 +8568,10 @@ packages: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} + traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -8042,6 +8702,14 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + type-fest@4.28.0: resolution: {integrity: sha512-jXMwges/FVbFRe5lTMJZVEZCrO9kI9c8k0PA/z7nF3bo0JSCCLysvokFjNPIUK/itEMas10MQM+AiHoHt/T/XA==} engines: {node: '>=16'} @@ -8122,10 +8790,26 @@ packages: unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + unicode-emoji-modifier-base@1.0.0: + resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + universal-github-app-jwt@2.2.0: resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} @@ -8174,6 +8858,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -8253,6 +8941,9 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8548,10 +9239,18 @@ packages: engines: {node: '>= 14'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -8564,6 +9263,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + zenscroll@4.0.2: resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==} @@ -8767,6 +9470,9 @@ snapshots: picocolors: 1.1.0 sisteransi: 1.0.5 + '@colors/colors@1.5.0': + optional: true + '@colors/colors@1.6.0': {} '@cspotcode/source-map-support@0.8.1': @@ -9909,6 +10615,109 @@ snapshots: '@scarf/scarf@1.4.0': {} + '@sec-ant/readable-stream@0.4.1': {} + + '@semantic-release/changelog@6.0.3(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + fs-extra: 11.2.0 + lodash: 4.17.21 + semantic-release: 24.2.0(typescript@5.7.2) + + '@semantic-release/commit-analyzer@13.0.0(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + debug: 4.3.7 + import-from-esm: 1.3.4 + lodash-es: 4.17.21 + micromatch: 4.0.8 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@semantic-release/error@3.0.0': {} + + '@semantic-release/error@4.0.0': {} + + '@semantic-release/git@10.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 3.0.0 + aggregate-error: 3.1.0 + debug: 4.3.7 + dir-glob: 3.0.1 + execa: 5.1.1 + lodash: 4.17.21 + micromatch: 4.0.8 + p-reduce: 2.1.0 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@semantic-release/github@11.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@octokit/core': 6.1.2 + '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) + '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2) + '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.3.7 + dir-glob: 3.0.1 + globby: 14.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + issue-parser: 7.0.1 + lodash-es: 4.17.21 + mime: 4.0.4 + p-filter: 4.1.0 + semantic-release: 24.2.0(typescript@5.7.2) + url-join: 5.0.0 + transitivePeerDependencies: + - supports-color + + '@semantic-release/npm@12.0.1(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + execa: 9.5.2 + fs-extra: 11.2.0 + lodash-es: 4.17.21 + nerf-dart: 1.0.0 + normalize-url: 8.0.1 + npm: 10.9.2 + rc: 1.2.8 + read-pkg: 9.0.1 + registry-auth-token: 5.0.2 + semantic-release: 24.2.0(typescript@5.7.2) + semver: 7.6.3 + tempy: 3.1.0 + + '@semantic-release/release-notes-generator@14.0.2(semantic-release@24.2.0(typescript@5.7.2))': + dependencies: + conventional-changelog-angular: 8.0.0 + conventional-changelog-writer: 8.0.0 + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.0.0 + debug: 4.3.7 + get-stream: 7.0.1 + import-from-esm: 1.3.4 + into-stream: 7.0.0 + lodash-es: 4.17.21 + read-package-up: 11.0.0 + semantic-release: 24.2.0(typescript@5.7.2) + transitivePeerDependencies: + - supports-color + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + '@socket.io/component-emitter@3.1.2': {} '@swagger-api/apidom-ast@1.0.0-alpha.9': @@ -10743,6 +11552,8 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/normalize-package-data@2.4.4': {} + '@types/prismjs@1.26.5': {} '@types/prop-types@15.7.12': @@ -10770,6 +11581,8 @@ snapshots: dependencies: csstype: 3.1.3 + '@types/semver@7.5.8': {} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 @@ -11154,6 +11967,11 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + aggregate-error@5.0.0: + dependencies: + clean-stack: 5.2.0 + indent-string: 5.0.0 + ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 @@ -11173,6 +11991,10 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -11187,6 +12009,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + apg-lite@1.0.4: {} aproba@2.0.0: {} @@ -11224,6 +12048,8 @@ snapshots: argparse@2.0.1: {} + argv-formatter@1.0.0: {} + aria-query@5.3.2: {} array-buffer-byte-length@1.0.1: @@ -11231,6 +12057,8 @@ snapshots: call-bind: 1.0.7 is-array-buffer: 3.0.4 + array-ify@1.0.0: {} + array-includes@3.1.8: dependencies: call-bind: 1.0.7 @@ -11519,6 +12347,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + change-case@3.1.0: dependencies: camel-case: 3.0.0 @@ -11540,6 +12370,8 @@ snapshots: upper-case: 1.1.3 upper-case-first: 1.1.2 + char-regex@1.0.2: {} + character-entities-legacy@1.1.4: {} character-entities@1.2.4: {} @@ -11570,6 +12402,10 @@ snapshots: clean-stack@2.2.0: {} + clean-stack@5.2.0: + dependencies: + escape-string-regexp: 5.0.0 + cli-boxes@2.2.1: {} cli-cursor@3.1.0: @@ -11583,12 +12419,33 @@ snapshots: xycolors: 0.1.2 yargs: 17.7.2 + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-width@3.0.0: {} client-only@0.0.1: {} + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -11648,6 +12505,11 @@ snapshots: commander@2.20.3: {} + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + compress-commons@6.0.2: dependencies: crc-32: 1.2.2 @@ -11691,6 +12553,30 @@ snapshots: snake-case: 2.1.0 upper-case: 1.1.3 + conventional-changelog-angular@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@8.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-writer@8.0.0: + dependencies: + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.6.3 + + conventional-commits-filter@5.0.0: {} + + conventional-commits-parser@6.0.0: + dependencies: + meow: 13.2.0 + + convert-hrtime@5.0.0: {} + convert-source-map@2.0.0: {} cookie-es@1.2.2: {} @@ -11723,6 +12609,15 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@9.0.0(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + cpu-features@0.0.10: dependencies: buildcheck: 0.0.6 @@ -11768,6 +12663,10 @@ snapshots: crypto-random-string@2.0.0: {} + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + css.escape@1.5.1: {} cssesc@3.0.0: {} @@ -11992,6 +12891,10 @@ snapshots: drizzle-orm: 0.38.2(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.1)(better-sqlite3@11.7.0)(mysql2@3.11.5)(react@19.0.0) zod: 3.24.1 + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + eastasianwidth@0.2.0: {} effect@3.9.2: {} @@ -12002,6 +12905,8 @@ snapshots: emoji-regex@9.2.2: {} + emojilib@2.4.0: {} + emojis-list@3.0.0: {} enabled@2.0.0: {} @@ -12048,6 +12953,19 @@ snapshots: entities@4.5.0: {} + env-ci@11.1.0: + dependencies: + execa: 8.0.1 + java-properties: 1.0.2 + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -12287,6 +13205,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -12498,6 +13418,33 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + execa@9.5.2: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.2.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + expand-template@2.0.3: {} expect-type@1.1.0: {} @@ -12554,10 +13501,18 @@ snapshots: fflate@0.8.2: {} + figures@2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -12568,11 +13523,22 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.0: {} + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + find-versions@6.0.0: + dependencies: + semver-regex: 4.0.5 + super-regex: 1.0.0 + flag-icons@7.2.3: {} flat-cache@4.0.1: @@ -12603,6 +13569,11 @@ snapshots: format@0.2.2: {} + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + fs-constants@1.0.0: {} fs-extra@10.1.0: @@ -12631,6 +13602,8 @@ snapshots: function-bind@1.1.2: {} + function-timeout@1.0.2: {} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 @@ -12676,6 +13649,15 @@ snapshots: get-stream@6.0.1: {} + get-stream@7.0.1: {} + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -12697,6 +13679,15 @@ snapshots: git-hooks-list@3.1.0: {} + git-log-parser@1.2.1: + dependencies: + argv-formatter: 1.0.0 + spawn-error-forwarder: 1.0.0 + split2: 1.0.0 + stream-combiner2: 1.1.1 + through2: 2.0.5 + traverse: 0.6.8 + github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -12773,6 +13764,15 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + globrex@0.1.2: {} gopd@1.0.1: @@ -12863,6 +13863,16 @@ snapshots: hono@4.6.1: {} + hook-std@3.0.0: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hosted-git-info@8.0.2: + dependencies: + lru-cache: 10.4.3 + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 @@ -12902,6 +13912,10 @@ snapshots: human-signals@2.1.0: {} + human-signals@5.0.0: {} + + human-signals@8.0.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -12923,12 +13937,25 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-from-esm@1.3.4: + dependencies: + debug: 4.3.7 + import-meta-resolve: 4.1.0 + transitivePeerDependencies: + - supports-color + import-lazy@2.1.0: {} + import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} + indent-string@5.0.0: {} + + index-to-position@0.1.2: {} + inflation@2.1.0: {} inflight@1.0.6: @@ -12989,6 +14016,11 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.8.0 tslib: 2.7.0 + into-stream@7.0.0: + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -13026,6 +14058,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: {} is-async-function@2.0.0: @@ -13129,6 +14163,10 @@ snapshots: is-stream@2.0.1: {} + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -13145,6 +14183,8 @@ snapshots: is-unicode-supported@0.1.0: {} + is-unicode-supported@2.1.0: {} + is-upper-case@1.1.2: dependencies: upper-case: 1.1.3 @@ -13179,6 +14219,14 @@ snapshots: transitivePeerDependencies: - encoding + issue-parser@7.0.1: + dependencies: + lodash.capitalize: 4.2.1 + lodash.escaperegexp: 4.1.2 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.uniqby: 4.7.0 + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -13226,6 +14274,8 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + java-properties@1.0.2: {} + jest-worker@27.5.1: dependencies: '@types/node': 22.10.2 @@ -13291,6 +14341,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -13356,12 +14408,21 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lines-and-columns@1.2.4: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 linkifyjs@4.1.3: {} + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -13370,22 +14431,39 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash-es@4.17.21: {} + + lodash.capitalize@4.2.1: {} + lodash.clonedeep@4.5.0: {} lodash.debounce@4.0.8: {} lodash.defaults@4.2.0: {} + lodash.escaperegexp@4.1.2: {} + lodash.get@4.4.2: {} lodash.isarguments@3.1.0: {} + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + lodash.merge@4.6.2: {} + lodash.uniqby@4.7.0: {} + lodash@4.17.21: {} log-symbols@3.0.0: @@ -13500,10 +14578,25 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + marked-terminal@7.2.1(marked@12.0.2): + dependencies: + ansi-escapes: 7.0.0 + ansi-regex: 6.1.0 + chalk: 5.3.0 + cli-highlight: 2.1.11 + cli-table3: 0.6.5 + marked: 12.0.2 + node-emoji: 2.2.0 + supports-hyperlinks: 3.1.0 + + marked@12.0.2: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} + meow@13.2.0: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -13521,8 +14614,12 @@ snapshots: mime@3.0.0: {} + mime@4.0.4: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + mimic-response@3.1.0: {} min-document@2.19.0: @@ -13610,6 +14707,12 @@ snapshots: seq-queue: 0.0.5 sqlstring: 2.3.3 + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + named-placeholders@1.1.3: dependencies: lru-cache: 7.18.3 @@ -13633,6 +14736,8 @@ snapshots: neotraverse@0.6.18: {} + nerf-dart@1.0.0: {} + netmask@2.0.2: {} next-auth@5.0.0-beta.25(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): @@ -13705,6 +14810,13 @@ snapshots: node-domexception@1.0.0: {} + node-emoji@2.2.0: + dependencies: + '@sindresorhus/is': 4.6.0 + char-regex: 1.0.2 + emojilib: 2.4.0 + skin-tone: 2.0.0 + node-fetch-commonjs@3.3.2: dependencies: node-domexception: 1.0.0 @@ -13744,12 +14856,31 @@ snapshots: dependencies: abbrev: 1.1.1 + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + normalize-url@8.0.1: {} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + npm@10.9.2: {} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -13834,6 +14965,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + openapi-path-templating@1.6.0: dependencies: apg-lite: 1.0.4 @@ -13882,10 +15017,26 @@ snapshots: os-tmpdir@1.0.2: {} + p-each-series@3.0.0: {} + + p-filter@4.1.0: + dependencies: + p-map: 7.0.3 + + p-is-promise@3.0.0: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -13894,6 +15045,14 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-map@7.0.3: {} + + p-reduce@2.1.0: {} + + p-reduce@3.0.0: {} + + p-try@1.0.0: {} + pac-proxy-agent@7.0.2: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -13933,8 +15092,36 @@ snapshots: is-decimal: 1.0.4 is-hexadecimal: 1.0.4 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 0.1.2 + type-fest: 4.28.0 + parse-ms@3.0.0: {} + parse-ms@4.0.0: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -13948,12 +15135,16 @@ snapshots: dependencies: no-case: 2.3.2 + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -13968,6 +15159,8 @@ snapshots: path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} pathval@2.0.0: {} @@ -13980,6 +15173,8 @@ snapshots: picomatch@4.0.2: {} + pify@3.0.0: {} + piscina@4.6.1: optionalDependencies: nice-napi: 1.0.2 @@ -13988,6 +15183,11 @@ snapshots: dependencies: '@babel/runtime': 7.25.6 + pkg-conf@2.1.0: + dependencies: + find-up: 2.1.0 + load-json-file: 4.0.0 + playwright-core@1.49.0: {} playwright@1.49.0: @@ -14088,6 +15288,10 @@ snapshots: dependencies: parse-ms: 3.0.0 + pretty-ms@9.2.0: + dependencies: + parse-ms: 4.0.0 + pretty-print-error@1.1.2(patch_hash=4arrfgbz7em6s4gqywse7esg4u): dependencies: kleur: 4.1.5 @@ -14461,6 +15665,20 @@ snapshots: react@19.0.0: {} + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.28.0 + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.1.0 + type-fest: 4.28.0 + unicorn-magic: 0.1.0 + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -14570,6 +15788,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.8: @@ -14710,12 +15930,53 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + semantic-release@24.2.0(typescript@5.7.2): + dependencies: + '@semantic-release/commit-analyzer': 13.0.0(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/error': 4.0.0 + '@semantic-release/github': 11.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/npm': 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) + '@semantic-release/release-notes-generator': 14.0.2(semantic-release@24.2.0(typescript@5.7.2)) + aggregate-error: 5.0.0 + cosmiconfig: 9.0.0(typescript@5.7.2) + debug: 4.3.7 + env-ci: 11.1.0 + execa: 9.5.2 + figures: 6.1.0 + find-versions: 6.0.0 + get-stream: 6.0.1 + git-log-parser: 1.2.1 + hook-std: 3.0.0 + hosted-git-info: 8.0.2 + import-from-esm: 1.3.4 + lodash-es: 4.17.21 + marked: 12.0.2 + marked-terminal: 7.2.1(marked@12.0.2) + micromatch: 4.0.8 + p-each-series: 3.0.0 + p-reduce: 3.0.0 + read-package-up: 11.0.0 + resolve-from: 5.0.0 + semver: 7.6.3 + semver-diff: 4.0.0 + signale: 1.4.0 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + - typescript + semver-diff@3.1.1: dependencies: semver: 6.3.1 + semver-diff@4.0.0: + dependencies: + semver: 7.6.3 + semver-parser@4.1.7: {} + semver-regex@4.0.5: {} + semver@6.3.1: {} semver@7.6.2: {} @@ -14785,6 +16046,12 @@ snapshots: signal-exit@4.1.0: {} + signale@1.4.0: + dependencies: + chalk: 2.4.2 + figures: 2.0.0 + pkg-conf: 2.1.0 + simple-concat@1.0.1: {} simple-get@4.0.1: @@ -14805,8 +16072,14 @@ snapshots: sisteransi@1.0.5: {} + skin-tone@2.0.0: + dependencies: + unicode-emoji-modifier-base: 1.0.0 + slash@3.0.0: {} + slash@5.1.0: {} + smart-buffer@4.2.0: {} snake-case@2.1.0: @@ -14891,8 +16164,28 @@ snapshots: space-separated-tokens@1.1.5: {} + spawn-error-forwarder@1.0.0: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + split-ca@1.0.1: {} + split2@1.0.0: + dependencies: + through2: 2.0.5 + sprintf-js@1.0.3: {} sprintf-js@1.1.3: {} @@ -14922,6 +16215,11 @@ snapshots: std-env@3.8.0: {} + stream-combiner2@1.1.1: + dependencies: + duplexer2: 0.1.4 + readable-stream: 2.3.8 + streamsearch@1.1.0: {} streamx@2.20.1: @@ -15011,6 +16309,10 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + + strip-final-newline@4.0.0: {} + strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -15030,6 +16332,11 @@ snapshots: dependencies: postcss: 8.4.47 + super-regex@1.0.0: + dependencies: + function-timeout: 1.0.2 + time-span: 5.1.0 + superjson@2.2.2: dependencies: copy-anything: 3.0.5 @@ -15046,6 +16353,11 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} swagger-client@3.31.0: @@ -15174,6 +16486,15 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + temp-dir@3.0.0: {} + + tempy@3.1.0: + dependencies: + is-stream: 3.0.0 + temp-dir: 3.0.0 + type-fest: 2.19.0 + unique-string: 3.0.0 + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -15222,8 +16543,25 @@ snapshots: text-hex@1.0.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + through@2.3.8: {} + time-span@5.1.0: + dependencies: + convert-hrtime: 5.0.0 + tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -15291,6 +16629,8 @@ snapshots: dependencies: punycode: 2.3.1 + traverse@0.6.8: {} + tree-kill@1.2.2: {} tree-sitter-json@0.20.2: @@ -15414,6 +16754,10 @@ snapshots: type-fest@0.21.3: {} + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + type-fest@4.28.0: {} type-is@1.6.18: @@ -15509,10 +16853,20 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 + unicode-emoji-modifier-base@1.0.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + universal-github-app-jwt@2.2.0: {} universal-user-agent@7.0.2: {} @@ -15572,6 +16926,8 @@ snapshots: dependencies: punycode: 2.3.1 + url-join@5.0.0: {} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 @@ -15663,6 +17019,11 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + validate-npm-package-name@5.0.1: {} vary@1.1.2: {} @@ -15990,8 +17351,20 @@ snapshots: yaml@2.5.1: {} + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -16006,6 +17379,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors@2.1.1: {} + zenscroll@4.0.2: {} zip-stream@6.0.1: diff --git a/tooling/semver/package.json b/tooling/semver/package.json deleted file mode 100644 index 160e32039..000000000 --- a/tooling/semver/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@alparr/semver", - "private": true, - "version": "0.1.0", - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/changelog", - "@semantic-release/github", - "@semantic-release/npm", - "@semantic-release/git" - ] -} diff --git a/tooling/semver/release.config.cjs b/tooling/semver/release.config.cjs deleted file mode 100644 index 5b2b41cbd..000000000 --- a/tooling/semver/release.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @type {import('semantic-release').GlobalConfig} - */ -module.exports = { - branches: ["main"], - prepare: [ - "@semantic-release/changelog", - "@semantic-release/npm", - { - path: "@semantic-release/git", - assets: ["package.json", "package-lock.json", "CHANGELOG.md"], - message: - "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", - }, - ], -}; From 93abe8f6a2bfe012b6c03c7994e5334f22b6e5e8 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 19:55:01 +0100 Subject: [PATCH 031/262] fix: change docker concurrency group to allow multiple deployments to different branches (#1687) --- .github/workflows/deployment-docker-image.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index f0edd9cb4..12a9d5fda 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -29,7 +29,8 @@ env: IMAGE_NAME: ${{ github.repository }} TURBO_TELEMETRY_DISABLED: 1 -concurrency: production +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} jobs: release: From 0f029b384d1699ea8ee784651b97b88fd64613c6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 20:04:20 +0100 Subject: [PATCH 032/262] fix: change permission for github action to contents write (#1689) --- .github/workflows/deployment-docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 12a9d5fda..e7df590f6 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -20,7 +20,7 @@ on: description: Push Docker Image permissions: - contents: read + contents: write packages: write env: From daf7ea56c5ce05803efc475ad64c5abb6a0784ea Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 20:11:48 +0100 Subject: [PATCH 033/262] fix: add persists credentials false to checkout of release pipeline (#1691) --- .github/workflows/deployment-docker-image.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index e7df590f6..68669115e 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -58,6 +58,8 @@ jobs: app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} - uses: actions/checkout@v4 if: env.SKIP_RELEASE == 'false' + with: + persist-credentials: false - uses: actions/setup-node@v4 if: env.SKIP_RELEASE == 'false' with: From 4543a5fd2c7e1add41c3a7b1eb14c70188deff45 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:13:35 +0000 Subject: [PATCH 034/262] chore(release): 1.0.0-beta.1 [skip ci] --- CHANGELOG.md | 1064 ++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 1065 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..951f6e0f2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,1064 @@ +## 1.0.0-beta.1 (2024-12-17) + +### ⚠ BREAKING CHANGES + +* **deps:** update tanstack-query monorepo (#126) + +### Features + +* [#1047](https://github.com/homarr-labs/homarr/issues/1047) add overseerr search ([#1411](https://github.com/homarr-labs/homarr/issues/1411)) ([aa50399](https://github.com/homarr-labs/homarr/commit/aa503992af37bc683f934b36faebd31fba9d8720)) +* [#1243](https://github.com/homarr-labs/homarr/issues/1243) add api routes ([#1286](https://github.com/homarr-labs/homarr/issues/1286)) ([d76b4d0](https://github.com/homarr-labs/homarr/commit/d76b4d0ec185b627eee5e000ca16b78899c950a7)) +* [#1254](https://github.com/homarr-labs/homarr/issues/1254) display group owner ([#1406](https://github.com/homarr-labs/homarr/issues/1406)) ([34506b6](https://github.com/homarr-labs/homarr/commit/34506b6339945d3ee8d6afc84b7f1da8ff9153b0)) +* [#1408](https://github.com/homarr-labs/homarr/issues/1408) add local icon repository ([#1413](https://github.com/homarr-labs/homarr/issues/1413)) ([f31ccf2](https://github.com/homarr-labs/homarr/commit/f31ccf2d6aa9eb0e81e8759527195b7754eb7df3)) +* [#1408](https://github.com/homarr-labs/homarr/issues/1408) improve icon picker design ([#1412](https://github.com/homarr-labs/homarr/issues/1412)) ([441cbbe](https://github.com/homarr-labs/homarr/commit/441cbbe71775e37bf19f44ad2ba4065e839fbfa8)) +* [#420](https://github.com/homarr-labs/homarr/issues/420) reimplement icon picker ([#421](https://github.com/homarr-labs/homarr/issues/421)) ([60a35e2](https://github.com/homarr-labs/homarr/commit/60a35e258363e26df68f96290fd9359f577f1498)) +* [#511](https://github.com/homarr-labs/homarr/issues/511) log user logged in ([#1405](https://github.com/homarr-labs/homarr/issues/1405)) ([b294bf6](https://github.com/homarr-labs/homarr/commit/b294bf68cf4eceaf00ba94fb842f75af05a2c50d)) +* add 404 page ([#145](https://github.com/homarr-labs/homarr/issues/145)) ([60dec6e](https://github.com/homarr-labs/homarr/commit/60dec6e3be68a7f14ffae1f527c671e5d90e7f04)) +* add about page ([#388](https://github.com/homarr-labs/homarr/issues/388)) ([42a5a1a](https://github.com/homarr-labs/homarr/commit/42a5a1a56368cc1dadc61f403bd9a3f696716904)) +* add actual user for trpc wss-dev-server ([#261](https://github.com/homarr-labs/homarr/issues/261)) ([058a8c4](https://github.com/homarr-labs/homarr/commit/058a8c4776d2cd73653f9c40525847576e7b0a2b)), closes [#233](https://github.com/homarr-labs/homarr/issues/233) +* add analytics ([#528](https://github.com/homarr-labs/homarr/issues/528)) ([7e64d39](https://github.com/homarr-labs/homarr/commit/7e64d39693438cc52f37c8aab4fb9b04c851e4b9)) +* add api keys ([#991](https://github.com/homarr-labs/homarr/issues/991)) ([b14f82b](https://github.com/homarr-labs/homarr/commit/b14f82b4bb7be6e68ecaa9db0e1957e39f90823b)) +* add app actions ([#322](https://github.com/homarr-labs/homarr/issues/322)) ([8988880](https://github.com/homarr-labs/homarr/commit/89888804393720c10aab9f03f33d54d039d32a2b)) +* add app widget ([#206](https://github.com/homarr-labs/homarr/issues/206)) ([c4ff968](https://github.com/homarr-labs/homarr/commit/c4ff968cbca9250a8b33b5632e9267ecd0a7863b)) +* Add apps crud ([#174](https://github.com/homarr-labs/homarr/issues/174)) ([8d5984c](https://github.com/homarr-labs/homarr/commit/8d5984c58a6ec6ee04cce49d51ab9aee53577bf9)) +* add async suffix eslint rule ([#485](https://github.com/homarr-labs/homarr/issues/485)) ([dcaff1d](https://github.com/homarr-labs/homarr/commit/dcaff1d91c7789dd1003313e73172b605cd420c5)) +* add board ([#15](https://github.com/homarr-labs/homarr/issues/15)) ([9d52087](https://github.com/homarr-labs/homarr/commit/9d520874f4feb71587d365a82a75e2de93720b4e)) +* add board access settings ([#249](https://github.com/homarr-labs/homarr/issues/249)) ([361700b](https://github.com/homarr-labs/homarr/commit/361700b2394bc616607fdaa25bb7847998f3179f)) +* add boards management page ([#55](https://github.com/homarr-labs/homarr/issues/55)) ([5ef79ed](https://github.com/homarr-labs/homarr/commit/5ef79edc1aac1f675d613255a02741da4d836f81)) +* add bookmark widget ([#964](https://github.com/homarr-labs/homarr/issues/964)) ([49c0ebe](https://github.com/homarr-labs/homarr/commit/49c0ebea6dad6f586fc61073f815a928db4b435b)) +* add calendar widget ([#663](https://github.com/homarr-labs/homarr/issues/663)) ([dba97a3](https://github.com/homarr-labs/homarr/commit/dba97a3bd6d4b29c9079c9ee6ec98aa974614add)) +* add change password form ([#199](https://github.com/homarr-labs/homarr/issues/199)) ([beb7def](https://github.com/homarr-labs/homarr/commit/beb7defd32561ca074b48b4aa72631fdb59ddbdc)) +* add collapse to login screen with cli command for password reset ([#963](https://github.com/homarr-labs/homarr/issues/963)) ([bc886d9](https://github.com/homarr-labs/homarr/commit/bc886d94767cd2898529c0c17ff669bad4a19fad)) +* add colorscheme to user in db ([#987](https://github.com/homarr-labs/homarr/issues/987)) ([b080e0d](https://github.com/homarr-labs/homarr/commit/b080e0de714235756affc4c68854ec6a01269836)) +* add column count and is public options to board creation modal ([#930](https://github.com/homarr-labs/homarr/issues/930)) ([fcb72e6](https://github.com/homarr-labs/homarr/commit/fcb72e67167d3549f4f5b35706cabb0ca155eb8e)) +* add context specific search and actions ([#1570](https://github.com/homarr-labs/homarr/issues/1570)) ([c840ff8](https://github.com/homarr-labs/homarr/commit/c840ff85bcda7b45703e25204c93f1a9531d52dd)) +* add contributors to about page ([#445](https://github.com/homarr-labs/homarr/issues/445)) ([3cda718](https://github.com/homarr-labs/homarr/commit/3cda718474dc5641d4c2c8680ec5369ad5b85cc8)) +* add crawling settings ([#959](https://github.com/homarr-labs/homarr/issues/959)) ([19cd41a](https://github.com/homarr-labs/homarr/commit/19cd41a8e52585963ffe210186daadb1513b4dca)) +* add create board modal ([#131](https://github.com/homarr-labs/homarr/issues/131)) ([e3e38e7](https://github.com/homarr-labs/homarr/commit/e3e38e7f4496989a761657d9e79c317e26738c46)) +* add credentials authentication ([#1](https://github.com/homarr-labs/homarr/issues/1)) ([3cedb7f](https://github.com/homarr-labs/homarr/commit/3cedb7fba5aade5e176002453300779d6348a0b4)) +* add crud for integrations ([#11](https://github.com/homarr-labs/homarr/issues/11)) ([367beb6](https://github.com/homarr-labs/homarr/commit/367beb6759b54caaa8d3a2c723d5202626811976)) +* add custom css for board and custom classes in advanced options for items ([#512](https://github.com/homarr-labs/homarr/issues/512)) ([26b1c4a](https://github.com/homarr-labs/homarr/commit/26b1c4a3199c59e1b5eb3529da74180a455fa09f)) +* add dashdot integration ([#1541](https://github.com/homarr-labs/homarr/issues/1541)) ([84e5002](https://github.com/homarr-labs/homarr/commit/84e500279d5cc2db696365da46cf405c7a9fd06f)) +* add docker actions ([#752](https://github.com/homarr-labs/homarr/issues/752)) ([95101e3](https://github.com/homarr-labs/homarr/commit/95101e34ed0cc5134a7cb15fd0ab56c5f4b5a14e)) +* add docker container table ([#520](https://github.com/homarr-labs/homarr/issues/520)) ([dd2937a](https://github.com/homarr-labs/homarr/commit/dd2937a0d6106ce241cc5d8f25fc581c717604f1)) +* add duplication action for items ([#926](https://github.com/homarr-labs/homarr/issues/926)) ([81946e5](https://github.com/homarr-labs/homarr/commit/81946e50a9f643826f6c75ce2de54f92b74819bc)) +* add dynamic breadcrumb ([#706](https://github.com/homarr-labs/homarr/issues/706)) ([4e1bbf2](https://github.com/homarr-labs/homarr/commit/4e1bbf2ae64e951c62bb3a86787cecc1e2d22da9)) +* add dynamic section ([#842](https://github.com/homarr-labs/homarr/issues/842)) ([9ce172e](https://github.com/homarr-labs/homarr/commit/9ce172e78a142be71cfae8fdb581987fec9b78f0)) +* add edit user page ([#173](https://github.com/homarr-labs/homarr/issues/173)) ([41b99f1](https://github.com/homarr-labs/homarr/commit/41b99f191c6559bca49c7c3c3a13553c7698b781)) +* add env variable to disable db migrations on startup ([#1179](https://github.com/homarr-labs/homarr/issues/1179)) ([a30be7b](https://github.com/homarr-labs/homarr/commit/a30be7bc1e3beea0171c81ce9ec406ecc3c65e74)) +* add error page for docker tools page ([#1655](https://github.com/homarr-labs/homarr/issues/1655)) ([6031191](https://github.com/homarr-labs/homarr/commit/60311918ce31ec9ae84cadbc450fc5732f173536)) +* Add ErrorDisplay component ([245c2f4](https://github.com/homarr-labs/homarr/commit/245c2f483c36e197da4e8ff2a2fe1d58e2916786)) +* add everyone group ([#1322](https://github.com/homarr-labs/homarr/issues/1322)) ([2f1c800](https://github.com/homarr-labs/homarr/commit/2f1c8008447175697dfd3a814316665ed039713f)) +* add first day of week user setting ([#1249](https://github.com/homarr-labs/homarr/issues/1249)) ([ab1744c](https://github.com/homarr-labs/homarr/commit/ab1744ce20fd0df8c21361e3df0d65c9ab63c014)) +* add healthchecks ([#1187](https://github.com/homarr-labs/homarr/issues/1187)) ([08c6303](https://github.com/homarr-labs/homarr/commit/08c6303fa64a45580ef9ae41a7b1c0ea13266ecd)) +* add hero banner ([#463](https://github.com/homarr-labs/homarr/issues/463)) ([87fe03d](https://github.com/homarr-labs/homarr/commit/87fe03dd009be451981f99910d8f88129ecde9d1)) +* add home board for users ([#505](https://github.com/homarr-labs/homarr/issues/505)) ([7e339c0](https://github.com/homarr-labs/homarr/commit/7e339c09c86cafef56ea3bf915c8665b9e6e0c95)) +* add homeassistant integration ([#578](https://github.com/homarr-labs/homarr/issues/578)) ([2e782ae](https://github.com/homarr-labs/homarr/commit/2e782ae4428cc27024c29d58530fde86a65c87bd)) +* add hotkeys ([#986](https://github.com/homarr-labs/homarr/issues/986)) ([7521ef0](https://github.com/homarr-labs/homarr/commit/7521ef0519033fc4ddd51f03f46281417aa05b76)) +* add i18n translated form errors ([#509](https://github.com/homarr-labs/homarr/issues/509)) ([dfed804](https://github.com/homarr-labs/homarr/commit/dfed804f65003f715ed0bf699de39b4c8c63d63b)) +* add iframe widget ([#291](https://github.com/homarr-labs/homarr/issues/291)) ([8f48971](https://github.com/homarr-labs/homarr/commit/8f4897186c827f327d0823b619cd3ca4df859229)) +* add import for config files from oldmarr ([#1019](https://github.com/homarr-labs/homarr/issues/1019)) ([5404ceb](https://github.com/homarr-labs/homarr/commit/5404cebf5b04c5a93249c5674607640f70b798d3)) +* add improved search ([#1051](https://github.com/homarr-labs/homarr/issues/1051)) ([ce1ef3c](https://github.com/homarr-labs/homarr/commit/ce1ef3cbe761cbed9843eb4881758a30ac934fc1)) +* add integration access check to middlewares ([#756](https://github.com/homarr-labs/homarr/issues/756)) ([46943b1](https://github.com/homarr-labs/homarr/commit/46943b147ae08be3d79cce73243eaca4cba2959f)) +* add integration access settings ([#725](https://github.com/homarr-labs/homarr/issues/725)) ([408cdeb](https://github.com/homarr-labs/homarr/commit/408cdeb5c32735a9f78343818bb6f91eb1c8daee)) +* add jellyfin integration ([#672](https://github.com/homarr-labs/homarr/issues/672)) ([bb8640b](https://github.com/homarr-labs/homarr/commit/bb8640b1621f6a3809465c0187f99a8bcae473ed)), closes [#655](https://github.com/homarr-labs/homarr/issues/655) +* add job on start option for icons updater ([#442](https://github.com/homarr-labs/homarr/issues/442)) ([7b31684](https://github.com/homarr-labs/homarr/commit/7b31684c84aeaade6f370337821bea2d2bb9efee)) +* add ldap and oidc sso ([#500](https://github.com/homarr-labs/homarr/issues/500)) ([dc75ffb](https://github.com/homarr-labs/homarr/commit/dc75ffb9e65a6ea9479fae36558a5915578a83a6)) +* add lidarr integration ([#1433](https://github.com/homarr-labs/homarr/issues/1433)) ([ed74604](https://github.com/homarr-labs/homarr/commit/ed74604a547528a69d0572fe45e6482524ef1837)) +* add login and logout ([#436](https://github.com/homarr-labs/homarr/issues/436)) ([51aaab2](https://github.com/homarr-labs/homarr/commit/51aaab2f23f6a5a20fb5fc42bf8f9f79e017643e)) +* add logout redirect url ([#954](https://github.com/homarr-labs/homarr/issues/954)) ([13e0996](https://github.com/homarr-labs/homarr/commit/13e09968d928bc5e255dd3f93eca3d3e42f1b144)) +* add management pages ([#12](https://github.com/homarr-labs/homarr/issues/12)) ([2809e01](https://github.com/homarr-labs/homarr/commit/2809e01b03bf939aaecdce8007ece9322688061a)) +* add manifest ([#1309](https://github.com/homarr-labs/homarr/issues/1309)) ([727f104](https://github.com/homarr-labs/homarr/commit/727f10448f55d7dc7b9d4a227b34d7351816918d)) +* add media management ([#1337](https://github.com/homarr-labs/homarr/issues/1337)) ([db198c6](https://github.com/homarr-labs/homarr/commit/db198c6dab64b1dd299e6ed15a29ecb42bc409b6)) +* add media requests widget ([#774](https://github.com/homarr-labs/homarr/issues/774)) ([acbb834](https://github.com/homarr-labs/homarr/commit/acbb834889ae5a9161e609bff6a20d1e1a6258f3)) +* add member sync between groups of ldap and homarr ([#1149](https://github.com/homarr-labs/homarr/issues/1149)) ([6133309](https://github.com/homarr-labs/homarr/commit/61333094dff53cb4dea79f8dfffd3f9d6ee0ce1b)) +* add million-lint ([#607](https://github.com/homarr-labs/homarr/issues/607)) ([94984ac](https://github.com/homarr-labs/homarr/commit/94984ac11ba158563e8653d42d7c1f0b79bff0ea)) +* add more group permissions ([#1453](https://github.com/homarr-labs/homarr/issues/1453)) ([0ee343b](https://github.com/homarr-labs/homarr/commit/0ee343b99ecbb44140df8c3c59971108f13b3dce)) +* add mysql support ([#212](https://github.com/homarr-labs/homarr/issues/212)) ([24ec13c](https://github.com/homarr-labs/homarr/commit/24ec13c2ab76f73d4e18f1f4cc9ea369439b105d)) +* add nestjs app ([#172](https://github.com/homarr-labs/homarr/issues/172)) ([9440d04](https://github.com/homarr-labs/homarr/commit/9440d04261f6597c021fbb7a4eb6ee441bc8d41c)) +* add nestjs replacement, remove nestjs ([#285](https://github.com/homarr-labs/homarr/issues/285)) ([1936596](https://github.com/homarr-labs/homarr/commit/1936596c048552f1730a02b1e5c03aed6f9d0fb6)) +* add next-international translations ([#2](https://github.com/homarr-labs/homarr/issues/2)) ([a082f70](https://github.com/homarr-labs/homarr/commit/a082f704704bea127014216baeb914e9c8fe09f6)) +* add nginx proxy ([#1073](https://github.com/homarr-labs/homarr/issues/1073)) ([cd46198](https://github.com/homarr-labs/homarr/commit/cd4619845b83dd7d5bcd039b7ddeaf023eb42a84)) +* add not found pages for boards ([#1671](https://github.com/homarr-labs/homarr/issues/1671)) ([8e4d67c](https://github.com/homarr-labs/homarr/commit/8e4d67c3eb49f7ccbd7e87efa75dfe1e4665bf3f)) +* add notebook widget ([#294](https://github.com/homarr-labs/homarr/issues/294)) ([6b1879c](https://github.com/homarr-labs/homarr/commit/6b1879cbb1d5129b8960a5dec9880f4951c0222e)) +* add notes for creation of apps and integrations in widget edit modal ([#1297](https://github.com/homarr-labs/homarr/issues/1297)) ([e99fd64](https://github.com/homarr-labs/homarr/commit/e99fd648822f61b4ad7b3793875df69348a3e0c8)) +* add onboarding with oldmarr import ([#1606](https://github.com/homarr-labs/homarr/issues/1606)) ([6de74d9](https://github.com/homarr-labs/homarr/commit/6de74d952560275faf546c2720f71dddbe1fe399)) +* add password input field ([#160](https://github.com/homarr-labs/homarr/issues/160)) ([c6c8778](https://github.com/homarr-labs/homarr/commit/c6c87783979b1053fd6068920c412c20547bab69)) +* add password requirements ([#988](https://github.com/homarr-labs/homarr/issues/988)) ([2d155fa](https://github.com/homarr-labs/homarr/commit/2d155fa0c48d63fe376d52e2c5403c8ec1130db6)) +* add permission section to create user page ([#1524](https://github.com/homarr-labs/homarr/issues/1524)) ([1fc48f9](https://github.com/homarr-labs/homarr/commit/1fc48f9db05935bc3298f9251b564ed539c48312)) +* add pi hole summary integration ([#521](https://github.com/homarr-labs/homarr/issues/521)) ([d57b771](https://github.com/homarr-labs/homarr/commit/d57b771a177511b878c0eada1d3002b52acdc6fb)) +* add prettier packagejson plugin ([#1577](https://github.com/homarr-labs/homarr/issues/1577)) ([a53a2cd](https://github.com/homarr-labs/homarr/commit/a53a2cdd34a46d6442c030192b449a855b69fca3)) +* add preview to icon picker ([#914](https://github.com/homarr-labs/homarr/issues/914)) ([ca1ecdf](https://github.com/homarr-labs/homarr/commit/ca1ecdf84811c58e4dff372fab42e64ab1791f06)) +* add readarr integration ([#1446](https://github.com/homarr-labs/homarr/issues/1446)) ([563c5d8](https://github.com/homarr-labs/homarr/commit/563c5d8f3c0dc5b7dcedadf7fa22c690c131a5c8)) +* add real time logger page ([#276](https://github.com/homarr-labs/homarr/issues/276)) ([c82915c](https://github.com/homarr-labs/homarr/commit/c82915c6dcaef8edffc67b82c97ba87e4597852a)) +* add redis ([#242](https://github.com/homarr-labs/homarr/issues/242)) ([1825e56](https://github.com/homarr-labs/homarr/commit/1825e563493a443039a5d0a8fa6d0b7ce3ef08b0)) +* add redis cache channel ([e05deef](https://github.com/homarr-labs/homarr/commit/e05deef6e28c7bbddda154d3d23f5325e85f3571)) +* add refresh button to docker containers table ([#913](https://github.com/homarr-labs/homarr/issues/913)) ([b53a2b6](https://github.com/homarr-labs/homarr/commit/b53a2b6b78f73f86ecff24cbf40b91e0f4ca55b0)) +* add rss widget ([#760](https://github.com/homarr-labs/homarr/issues/760)) ([15d9327](https://github.com/homarr-labs/homarr/commit/15d9327d465d1c522d9182027adaf27727a95b4e)) +* add server settings ([#487](https://github.com/homarr-labs/homarr/issues/487)) ([9191617](https://github.com/homarr-labs/homarr/commit/919161798ee6c5c2070632920c9dfc3699ab1f93)) +* add server settings for default board, default color scheme and default locale ([#1373](https://github.com/homarr-labs/homarr/issues/1373)) ([326b769](https://github.com/homarr-labs/homarr/commit/326b769c23f6619c7d6edd0cecedccdf6d641dde)) +* add session expiry ([#951](https://github.com/homarr-labs/homarr/issues/951)) ([6dafbaa](https://github.com/homarr-labs/homarr/commit/6dafbaae48f17ff519723fe33fc89034b10e8f1b)) +* add simple app ping ([#580](https://github.com/homarr-labs/homarr/issues/580)) ([d7ecdf5](https://github.com/homarr-labs/homarr/commit/d7ecdf55672e05e90424bed964644091b1af6499)) +* Add Simple-Icons and Selfh.st collections ([#1118](https://github.com/homarr-labs/homarr/issues/1118)) ([9fb6e67](https://github.com/homarr-labs/homarr/commit/9fb6e67ed33264f877ba819240e00d8fc8dbb984)) +* add support for all languages from old homarr ([#1394](https://github.com/homarr-labs/homarr/issues/1394)) ([0ff7c89](https://github.com/homarr-labs/homarr/commit/0ff7c8903b3c23ee286a0e3d68287927e03ff3e0)) +* add support for app url variables ([#915](https://github.com/homarr-labs/homarr/issues/915)) ([c4c4d41](https://github.com/homarr-labs/homarr/commit/c4c4d41e4d7c37d498ba25c91a734a9d7f66f233)) +* add support for multiple integration kind options ([#127](https://github.com/homarr-labs/homarr/issues/127)) ([f1aa422](https://github.com/homarr-labs/homarr/commit/f1aa42261446bcc4bd16b47ed0c1d5cd279a2e48)) +* add support for should hide option i widget edit modal ([#78](https://github.com/homarr-labs/homarr/issues/78)) ([16442bc](https://github.com/homarr-labs/homarr/commit/16442bc379c1d418080947fbd86a4bb14639e90e)) +* add tasks page ([#692](https://github.com/homarr-labs/homarr/issues/692)) ([08d571a](https://github.com/homarr-labs/homarr/commit/08d571ad74c0c97313664b31bf2d1ce83d91629b)) +* add tdarr integration ([#1657](https://github.com/homarr-labs/homarr/issues/1657)) ([032509e](https://github.com/homarr-labs/homarr/commit/032509e4623d7bab3a000a308cb21fc487c45487)) +* add trpc websocket ([#205](https://github.com/homarr-labs/homarr/issues/205)) ([4f375cb](https://github.com/homarr-labs/homarr/commit/4f375cbe6d1b82322e0e8eaeea9db60be083c84e)) +* add undici fetch interceptor ([#687](https://github.com/homarr-labs/homarr/issues/687)) ([508369c](https://github.com/homarr-labs/homarr/commit/508369cb0bb61dadbc2c0b06f03e08581bc7d8ae)) +* add update indicator ([#1626](https://github.com/homarr-labs/homarr/issues/1626)) ([dd9d8b5](https://github.com/homarr-labs/homarr/commit/dd9d8b52610aefe4dbf19f20117ea51264525bcb)) +* add user avatar menu ([#80](https://github.com/homarr-labs/homarr/issues/80)) ([08fa338](https://github.com/homarr-labs/homarr/commit/08fa338abbdff3bb3f7cfc96bc328ecb4a49c584)) +* add user groups ([#376](https://github.com/homarr-labs/homarr/issues/376)) ([036925b](https://github.com/homarr-labs/homarr/commit/036925bf78ec50afe8455efdc270ee4e503a0e03)) +* add user invite management ([#338](https://github.com/homarr-labs/homarr/issues/338)) ([621f6c8](https://github.com/homarr-labs/homarr/commit/621f6c81ae8689f6efc9ac141e8bcbf7fe35eb81)) +* add user invite registration ([#477](https://github.com/homarr-labs/homarr/issues/477)) ([94af21a](https://github.com/homarr-labs/homarr/commit/94af21abbfb36b1804d86d89155af720055de588)) +* add user management ([#134](https://github.com/homarr-labs/homarr/issues/134)) ([b4749e7](https://github.com/homarr-labs/homarr/commit/b4749e7091649815f2918b81d3c79b0216ece5d2)) +* add user setting for home board ([#956](https://github.com/homarr-labs/homarr/issues/956)) ([f327837](https://github.com/homarr-labs/homarr/commit/f327837d82149c563b07e1d42850356930f20e50)) +* add username validation to prevent duplicate ([781247d](https://github.com/homarr-labs/homarr/commit/781247de5141f4b0532801194ac904763db7da39)) +* add validation to widget edit modal inputs ([#879](https://github.com/homarr-labs/homarr/issues/879)) ([9cb6200](https://github.com/homarr-labs/homarr/commit/9cb6200895a0d44e87f59cdaf19432fb8312f8bf)) +* add video widget ([#287](https://github.com/homarr-labs/homarr/issues/287)) ([82e9887](https://github.com/homarr-labs/homarr/commit/82e9887f36a370594f258d8e6f60cda57593b2b7)) +* Add VOLUME instruction to `Dockerfile` ([#527](https://github.com/homarr-labs/homarr/issues/527)) ([5a9e8ed](https://github.com/homarr-labs/homarr/commit/5a9e8edf70b91933afbd0b4564fda3ab25fdbdd5)) +* add weather widget ([#286](https://github.com/homarr-labs/homarr/issues/286)) ([80d2d48](https://github.com/homarr-labs/homarr/commit/80d2d485b862f6c95fa1eb81ff96cb45d9b147b1)) +* add web search engines ([#290](https://github.com/homarr-labs/homarr/issues/290)) ([35ca732](https://github.com/homarr-labs/homarr/commit/35ca732744752b54b6318e17319d9b8ac950fda8)) +* Add widget integration option ([#14](https://github.com/homarr-labs/homarr/issues/14)) ([1740450](https://github.com/homarr-labs/homarr/commit/1740450648fc5c3915cd71b493a8523305f33703)) +* add widget preview pages ([#9](https://github.com/homarr-labs/homarr/issues/9)) ([7828975](https://github.com/homarr-labs/homarr/commit/782897527f489889f8b6f46ec577a298a0714953)) +* add widget server loader ([#16](https://github.com/homarr-labs/homarr/issues/16)) ([975f912](https://github.com/homarr-labs/homarr/commit/975f9123dd4d509e2b777d8af8d74f38ebc59aad)) +* add winston logger ([#143](https://github.com/homarr-labs/homarr/issues/143)) ([3d50f81](https://github.com/homarr-labs/homarr/commit/3d50f8165f0d27e9fe7b517cffa5d1950eca7ab8)) +* add winston logger ([#77](https://github.com/homarr-labs/homarr/issues/77)) ([34875df](https://github.com/homarr-labs/homarr/commit/34875dfd154f9e9e3a8ce5c5bc4d14e757b4b14d)) +* AdGuard Home integration ([#929](https://github.com/homarr-labs/homarr/issues/929)) ([4471260](https://github.com/homarr-labs/homarr/commit/44712608b7e0dfcbaf5d36c40792b04f2edec8d7)) +* allow no secrets for integration ([#856](https://github.com/homarr-labs/homarr/issues/856)) ([508fcb9](https://github.com/homarr-labs/homarr/commit/508fcb9861d56f84d027fc8c456d8841486fdf72)) +* App tile scalability ([#645](https://github.com/homarr-labs/homarr/issues/645)) ([28927cf](https://github.com/homarr-labs/homarr/commit/28927cfa2802c6335487638b5ce4d7133f2e4423)) +* approve before automerge ([3df6dcf](https://github.com/homarr-labs/homarr/commit/3df6dcfbe7b1b499dbd6ddf536ae509286afe21b)) +* board access group permissions ([#422](https://github.com/homarr-labs/homarr/issues/422)) ([b1e065f](https://github.com/homarr-labs/homarr/commit/b1e065f1da0fc0c4992d0de8f6ed87a9adef1d24)) +* board settings ([#137](https://github.com/homarr-labs/homarr/issues/137)) ([bb02163](https://github.com/homarr-labs/homarr/commit/bb02163e25e64c13e4f36df21fa90ff33483cac6)) +* cannot change username to the current one ([0ae8a75](https://github.com/homarr-labs/homarr/commit/0ae8a75a5ef38c85ca869cadbed9542c2993a3df)) +* change visibility in item options based on selected integration kinds ([#949](https://github.com/homarr-labs/homarr/issues/949)) ([25452ff](https://github.com/homarr-labs/homarr/commit/25452ff063383397af6b5e41984657f9eb68e801)) +* Clock widget and dayjs locale standard ([#79](https://github.com/homarr-labs/homarr/issues/79)) ([edcba9c](https://github.com/homarr-labs/homarr/commit/edcba9ceb62880196dac902e0a91b1dbdd0c45f1)) +* Clock widget scalability ([#644](https://github.com/homarr-labs/homarr/issues/644)) ([bac09d8](https://github.com/homarr-labs/homarr/commit/bac09d8be59eea7f59713fead9e5310b34cfa8aa)) +* date format on weather widget ([#1443](https://github.com/homarr-labs/homarr/issues/1443)) ([c51c5db](https://github.com/homarr-labs/homarr/commit/c51c5db3d73db8656f4d55921b5b664b8c27134e)) +* DNS Hole summary Scalability ([#646](https://github.com/homarr-labs/homarr/issues/646)) ([0710425](https://github.com/homarr-labs/homarr/commit/0710425e787aec1bcd90d3ba8dae71c8c97959ae)) +* dnshole controls widget ([#867](https://github.com/homarr-labs/homarr/issues/867)) ([65c6854](https://github.com/homarr-labs/homarr/commit/65c6854e4426350b196b1888c952d961c03c2b23)) +* DnsHole feature parity with oldmarr ([#1145](https://github.com/homarr-labs/homarr/issues/1145)) ([36915d9](https://github.com/homarr-labs/homarr/commit/36915d95fe45964f0291fb8c9cbc46ffecdf2681)) +* **docker:** add encryption key generation for integration secrets ([#1202](https://github.com/homarr-labs/homarr/issues/1202)) ([52b45d8](https://github.com/homarr-labs/homarr/commit/52b45d835db99b5e6b950a2adfb6e21665c8ccff)) +* downloads widget ([#844](https://github.com/homarr-labs/homarr/issues/844)) ([2535192](https://github.com/homarr-labs/homarr/commit/2535192b2cfc1c4acc42b31a59f90989236ea2c2)) +* implement board access control ([#349](https://github.com/homarr-labs/homarr/issues/349)) ([7ab9dc2](https://github.com/homarr-labs/homarr/commit/7ab9dc250184947b1f1a071a0cb7bce63ce95c96)) +* implement openapi ([#482](https://github.com/homarr-labs/homarr/issues/482)) ([f0cd45c](https://github.com/homarr-labs/homarr/commit/f0cd45c81385720f68693f8d3481466fc147cd61)) +* improve metadata ([#1308](https://github.com/homarr-labs/homarr/issues/1308)) ([0df7cb5](https://github.com/homarr-labs/homarr/commit/0df7cb5c25441700616d268fac5e64068542d080)) +* improve user init setup ([#643](https://github.com/homarr-labs/homarr/issues/643)) ([3a3a825](https://github.com/homarr-labs/homarr/commit/3a3a8251bdb65f07e109af83b639efabbd1404a5)) +* indexer manager widget ([#1057](https://github.com/homarr-labs/homarr/issues/1057)) ([08d4472](https://github.com/homarr-labs/homarr/commit/08d4472d8b612e11a8b4e5f09952a788e7bcdf8a)), closes [#1055](https://github.com/homarr-labs/homarr/issues/1055) +* integrate crowdin [#1402](https://github.com/homarr-labs/homarr/issues/1402) ([#1599](https://github.com/homarr-labs/homarr/issues/1599)) ([096f034](https://github.com/homarr-labs/homarr/commit/096f03432cfca75bc2740f65d7d6cb6fed4c4eaa)) +* language selector ([#484](https://github.com/homarr-labs/homarr/issues/484)) ([31c2694](https://github.com/homarr-labs/homarr/commit/31c26941857b4eac8e69ccb68bc4c00cd1073806)) +* log elapsed cron job time ([#742](https://github.com/homarr-labs/homarr/issues/742)) ([1cf119c](https://github.com/homarr-labs/homarr/commit/1cf119c76827c22dcac9f2417b6f65b64cd43e26)) +* log sql queries ([#444](https://github.com/homarr-labs/homarr/issues/444)) ([dc0184a](https://github.com/homarr-labs/homarr/commit/dc0184af071446e299407a2b6347852d52bdd17f)) +* make notifications optional ([e438bac](https://github.com/homarr-labs/homarr/commit/e438bac0f5dd7d487aae054802b5255612749252)) +* OMV integration & health monitoring widget ([#1142](https://github.com/homarr-labs/homarr/issues/1142)) ([0f56dc1](https://github.com/homarr-labs/homarr/commit/0f56dc1ecd03d6d6fe2305de85650f2b105e2169)) +* plex integration ([#1342](https://github.com/homarr-labs/homarr/issues/1342)) ([cf9b058](https://github.com/homarr-labs/homarr/commit/cf9b0581a486b3d6b1207e8a612c9fe4665c6d49)) +* populate integration name for new integrations automatically ([#1296](https://github.com/homarr-labs/homarr/issues/1296)) ([a0cc31d](https://github.com/homarr-labs/homarr/commit/a0cc31da700defc9a4f5c4210962571cbfe2b362)) +* pretty-print-error to print errors in console ([#1596](https://github.com/homarr-labs/homarr/issues/1596)) ([71f4f8c](https://github.com/homarr-labs/homarr/commit/71f4f8c4c85eb70533bed3ed86b6655e99cc2bb7)) +* Prowlarr integration ([#965](https://github.com/homarr-labs/homarr/issues/965)) ([6ff3640](https://github.com/homarr-labs/homarr/commit/6ff36405ba26ab27387094182885a99bf1ecb30d)) +* radarr integration ([#1053](https://github.com/homarr-labs/homarr/issues/1053)) ([e88854c](https://github.com/homarr-labs/homarr/commit/e88854c0e5b14c356f520c616b369d118ea3ddf7)) +* radarr release type to calendar widget ([#1256](https://github.com/homarr-labs/homarr/issues/1256)) ([98b62a9](https://github.com/homarr-labs/homarr/commit/98b62a9f919ef18f891e115f3dec31c7f1e49a44)) +* read all packages on about page ([#391](https://github.com/homarr-labs/homarr/issues/391)) ([16e42d6](https://github.com/homarr-labs/homarr/commit/16e42d654dbf8cf54757e49cc1c73ea1fa69d8a7)) +* remove manual flag to pushing image ([9013d5d](https://github.com/homarr-labs/homarr/commit/9013d5dbf01a7c60e5a427cfcebea7a332deb5d2)) +* replace home page with home board ([#1530](https://github.com/homarr-labs/homarr/issues/1530)) ([9fb14df](https://github.com/homarr-labs/homarr/commit/9fb14df2103db720cb6e5333b8afed5c1e730de6)) +* reset password cli ([#903](https://github.com/homarr-labs/homarr/issues/903)) ([7fa5e70](https://github.com/homarr-labs/homarr/commit/7fa5e70d5b5e4e6cded08f343f5db0f42e8be324)) +* restrict non credential provider interactions ([#871](https://github.com/homarr-labs/homarr/issues/871)) ([6f7327b](https://github.com/homarr-labs/homarr/commit/6f7327b77478c567b478c2c61b0a09400e426678)) +* RTL option to RSS widget ([#1247](https://github.com/homarr-labs/homarr/issues/1247)) ([9a7e845](https://github.com/homarr-labs/homarr/commit/9a7e8450106aa5f61db9e3360221bd8ac168daf6)) +* show creator on board page ([#440](https://github.com/homarr-labs/homarr/issues/440)) ([5d30301](https://github.com/homarr-labs/homarr/commit/5d30301b95a8b1e6129d97a6a66cbfb417407caf)) +* **spotlight:** add support for custom search-engines ([#1200](https://github.com/homarr-labs/homarr/issues/1200)) ([4c9471e](https://github.com/homarr-labs/homarr/commit/4c9471e6086c354ec4383f22a7b8020c5aa8974d)) +* support arm64 ([#1022](https://github.com/homarr-labs/homarr/issues/1022)) ([0c65727](https://github.com/homarr-labs/homarr/commit/0c657276a53aa77d6cc37435e61907574320e324)) +* test integration connection ([#669](https://github.com/homarr-labs/homarr/issues/669)) ([f92aeba](https://github.com/homarr-labs/homarr/commit/f92aeba403ec22e2a3219550b51191ae82bac000)) +* use consistent line ending ([#1407](https://github.com/homarr-labs/homarr/issues/1407)) ([0c067c4](https://github.com/homarr-labs/homarr/commit/0c067c4e6f36d741edf7c88de847585fefd54b64)) +* use different tag name ([ff847f0](https://github.com/homarr-labs/homarr/commit/ff847f091054c38015f45dfd1ee88e06116f53ad)) +* use gh app for merging ([82caec4](https://github.com/homarr-labs/homarr/commit/82caec402a4f33d0217b9d5e02140d4857dbb0ce)) +* use password input ([#163](https://github.com/homarr-labs/homarr/issues/163)) ([2a83df3](https://github.com/homarr-labs/homarr/commit/2a83df348555de884a9419ecf6e7ecdc76272deb)) +* user preferences ([#470](https://github.com/homarr-labs/homarr/issues/470)) ([db01301](https://github.com/homarr-labs/homarr/commit/db013018453ba6d67a229d5b9852e85e61a6760d)) +* user setting ping icons ([#1277](https://github.com/homarr-labs/homarr/issues/1277)) ([3486876](https://github.com/homarr-labs/homarr/commit/348687670d18062254e8089572f824f33a6f0894)) +* weather widget scalable ([#574](https://github.com/homarr-labs/homarr/issues/574)) ([cfd8b32](https://github.com/homarr-labs/homarr/commit/cfd8b328b40352c4f517853b6f019042ddf57549)) + +### Bug Fixes + +* actions user has no permission to are shown in spotlight ([#1452](https://github.com/homarr-labs/homarr/issues/1452)) ([04895da](https://github.com/homarr-labs/homarr/commit/04895da08a72864a55d6bb09524588ba0d9a06c1)) +* add beforeunload logic for board in edit mode ([#1531](https://github.com/homarr-labs/homarr/issues/1531)) ([225356c](https://github.com/homarr-labs/homarr/commit/225356cc4f49a8a8178f9d7dffc3283bc641b3d0)) +* add missing tags ([f23831b](https://github.com/homarr-labs/homarr/commit/f23831be5ec257775ca9ce116a50f025cac65c2d)) +* add persists credentials false to checkout of release pipeline ([#1691](https://github.com/homarr-labs/homarr/issues/1691)) ([daf7ea5](https://github.com/homarr-labs/homarr/commit/daf7ea56c5ce05803efc475ad64c5abb6a0784ea)) +* add rtl compliance for symbols [#366](https://github.com/homarr-labs/homarr/issues/366) ([#406](https://github.com/homarr-labs/homarr/issues/406)) ([0278e3a](https://github.com/homarr-labs/homarr/commit/0278e3a854455a48c53ab394d4c4e65734f535ca)) +* add sharp ([#241](https://github.com/homarr-labs/homarr/issues/241)) ([0440af3](https://github.com/homarr-labs/homarr/commit/0440af3566ce7e57eaedd6921c16143943647bd4)) +* add subscription to health monitoring widget ([#1210](https://github.com/homarr-labs/homarr/issues/1210)) ([ce67fcd](https://github.com/homarr-labs/homarr/commit/ce67fcd57cd56fe68105c269a9f2377bbc89e61b)) +* adding volume /appdata removes created directories ([#1445](https://github.com/homarr-labs/homarr/issues/1445)) ([fe4dfc4](https://github.com/homarr-labs/homarr/commit/fe4dfc484bcc5da8d3901d042adc5d3cf3ea9fbc)) +* alert that certain fields in user settings are disabled is always shown ([#928](https://github.com/homarr-labs/homarr/issues/928)) ([9258c39](https://github.com/homarr-labs/homarr/commit/9258c397e0689bf46969614f3c634b5af20a2d8c)) +* Allow username to be capitalized on basic credentials login ([#1585](https://github.com/homarr-labs/homarr/issues/1585)) ([a1a6dc9](https://github.com/homarr-labs/homarr/commit/a1a6dc9d6e345ff102d69164d4bf2d7020db0ea4)) +* api keys authentication does not work [#1511](https://github.com/homarr-labs/homarr/issues/1511) ([#1512](https://github.com/homarr-labs/homarr/issues/1512)) ([72eda1f](https://github.com/homarr-labs/homarr/commit/72eda1f225cece3d317c66b4b98a481328962d63)) +* auth broken cause of consistent table column rename ([#1532](https://github.com/homarr-labs/homarr/issues/1532)) ([4a94d60](https://github.com/homarr-labs/homarr/commit/4a94d602c0cce7796cde7c08a5670e045452c2c5)) +* auto-merge crowdin pr not working ([#1664](https://github.com/homarr-labs/homarr/issues/1664)) ([f330c7e](https://github.com/homarr-labs/homarr/commit/f330c7e4f1a8e097e2f594c47061f98c7c9e0034)) +* auto-merge for crowdin download pull request not working ([#1661](https://github.com/homarr-labs/homarr/issues/1661)) ([5bdc669](https://github.com/homarr-labs/homarr/commit/5bdc669e07c788f3b47009a4f5c3c2c785dda111)) +* base branch for semver ([a8748fa](https://github.com/homarr-labs/homarr/commit/a8748fa439c481d7238a32b99184e9fce667a709)) +* cache is not exportet from react ([#417](https://github.com/homarr-labs/homarr/issues/417)) ([fba767b](https://github.com/homarr-labs/homarr/commit/fba767bde3d17c09d563ccea352cd8e4171e84f8)) +* change docker concurrency group to allow multiple deployments to different branches ([#1687](https://github.com/homarr-labs/homarr/issues/1687)) ([93abe8f](https://github.com/homarr-labs/homarr/commit/93abe8f6a2bfe012b6c03c7994e5334f22b6e5e8)) +* change node-version for composite setup action to 22, remove unnecessary installation of node from docker deployment ([#1429](https://github.com/homarr-labs/homarr/issues/1429)) ([319fb47](https://github.com/homarr-labs/homarr/commit/319fb477444bae5cd4c847af9ebf9e35359fbb03)) +* change permission for github action to contents write ([#1689](https://github.com/homarr-labs/homarr/issues/1689)) ([0f029b3](https://github.com/homarr-labs/homarr/commit/0f029b384d1699ea8ee784651b97b88fd64613c6)) +* color scheme manager should use cookie and not session value ([#1329](https://github.com/homarr-labs/homarr/issues/1329)) ([799d6c5](https://github.com/homarr-labs/homarr/commit/799d6c5d4a59c65d3e2f902843dfc86910b8496f)) +* confirm not selected by default in confirm modal ([#1232](https://github.com/homarr-labs/homarr/issues/1232)) ([ac07504](https://github.com/homarr-labs/homarr/commit/ac0750452cd4788cba48d3af720240e063080fba)) +* container image always being on AMD64 arch ([#1173](https://github.com/homarr-labs/homarr/issues/1173)) ([65f2611](https://github.com/homarr-labs/homarr/commit/65f26117fc491958922cd863801cc049479766af)) +* controller is already closed trpc subscription observable error ([#743](https://github.com/homarr-labs/homarr/issues/743)) ([41dba7b](https://github.com/homarr-labs/homarr/commit/41dba7b516880098ae923d45f2065875cb6c70da)) +* correctly set pr description ([#778](https://github.com/homarr-labs/homarr/issues/778)) ([f58c38a](https://github.com/homarr-labs/homarr/commit/f58c38a1aa654acc474b492610452a9c38d20f42)) +* crash with no user in session ([547f75d](https://github.com/homarr-labs/homarr/commit/547f75d19cb08cd0eac6978cb9a6eb107a563edd)) +* create board submit button inverted ([0ee8c5a](https://github.com/homarr-labs/homarr/commit/0ee8c5ad91dfe70ef27af3fe9a47918bab23a665)) +* create user async is called twice ([7fa120c](https://github.com/homarr-labs/homarr/commit/7fa120c47490ab3e80fb8db0921d9afa3e12cfee)) +* credentials auth not working ([#1284](https://github.com/homarr-labs/homarr/issues/1284)) ([511c9a4](https://github.com/homarr-labs/homarr/commit/511c9a4dbbcaa3846bcd5a3dfe1827793e398ff4)) +* credentials login not working cause of cookie secure flag not possible for http ([#1421](https://github.com/homarr-labs/homarr/issues/1421)) ([cf5bcab](https://github.com/homarr-labs/homarr/commit/cf5bcab732924ef5b7a3eabf2d0a8760a59d6cb6)) +* db port validation for env variable wrong ([#1137](https://github.com/homarr-labs/homarr/issues/1137)) ([d01ddd6](https://github.com/homarr-labs/homarr/commit/d01ddd61b6fe3583412c7a553cfba8d32ae797a7)) +* default branch for tag compare ([#597](https://github.com/homarr-labs/homarr/issues/597)) ([7cc2736](https://github.com/homarr-labs/homarr/commit/7cc2736d68baaa5730e598b6c8e2cd55fa73711d)) +* defaultTitle invalid attribute on div ([#350](https://github.com/homarr-labs/homarr/issues/350)) ([4970c3a](https://github.com/homarr-labs/homarr/commit/4970c3a1b2545feb3bc20cc6605f8f16a28a8220)) +* deployment pipeline for docker not working ([#860](https://github.com/homarr-labs/homarr/issues/860)) ([90ef982](https://github.com/homarr-labs/homarr/commit/90ef982066b528e891bc3796256b2725ec1addf3)) +* **deps:** update dependency @auth/core to ^0.25.0 ([#29](https://github.com/homarr-labs/homarr/issues/29)) ([8bcbc45](https://github.com/homarr-labs/homarr/commit/8bcbc45943358d580712e0990ba2bb3c2c62d057)) +* **deps:** update dependency @auth/core to ^0.26.3 ([#54](https://github.com/homarr-labs/homarr/issues/54)) ([5cbd02b](https://github.com/homarr-labs/homarr/commit/5cbd02b142da68f067ef9831c6b47f117fbdc8e4)) +* **deps:** update dependency @auth/core to ^0.27.0 ([#89](https://github.com/homarr-labs/homarr/issues/89)) ([6c5e475](https://github.com/homarr-labs/homarr/commit/6c5e4752eaf7a07f9e80951541108643efb0faae)) +* **deps:** update dependency @auth/core to ^0.28.0 ([#169](https://github.com/homarr-labs/homarr/issues/169)) ([aa19139](https://github.com/homarr-labs/homarr/commit/aa19139cf7c4bb4ea6b57c3ca274fff533c2bb2a)) +* **deps:** update dependency @auth/core to ^0.28.1 ([#266](https://github.com/homarr-labs/homarr/issues/266)) ([c72f4bb](https://github.com/homarr-labs/homarr/commit/c72f4bb80de55c6a7dd94e142ce3b27c9073d33e)) +* **deps:** update dependency @auth/core to ^0.28.2 ([#292](https://github.com/homarr-labs/homarr/issues/292)) ([ba16ba1](https://github.com/homarr-labs/homarr/commit/ba16ba138209e843f1ee7304ebe1af138b6995fa)) +* **deps:** update dependency @auth/core to ^0.29.0 ([#327](https://github.com/homarr-labs/homarr/issues/327)) ([719d1cd](https://github.com/homarr-labs/homarr/commit/719d1cd845a3d6565c01d4f1846e9192038c1ce2)) +* **deps:** update dependency @auth/core to ^0.30.0 ([#358](https://github.com/homarr-labs/homarr/issues/358)) ([f6c0f3a](https://github.com/homarr-labs/homarr/commit/f6c0f3ab78f68cffc1ad2305c19f22b725b7a037)) +* **deps:** update dependency @auth/core to ^0.31.0 ([#473](https://github.com/homarr-labs/homarr/issues/473)) ([95ddd03](https://github.com/homarr-labs/homarr/commit/95ddd03763532658c620c50c698c14ed7cd01894)) +* **deps:** update dependency @auth/core to ^0.32.0 ([#603](https://github.com/homarr-labs/homarr/issues/603)) ([dc3b007](https://github.com/homarr-labs/homarr/commit/dc3b00736eabc4a65febb6ae9a8fd9779edb1cdf)) +* **deps:** update dependency @auth/core to ^0.33.0 ([#693](https://github.com/homarr-labs/homarr/issues/693)) ([171fe40](https://github.com/homarr-labs/homarr/commit/171fe40fd59ee1b21bf825a59b0f1792f627262f)) +* **deps:** update dependency @auth/core to ^0.34.0 ([#700](https://github.com/homarr-labs/homarr/issues/700)) ([9087f4b](https://github.com/homarr-labs/homarr/commit/9087f4bfdf263490b6d0e318e1af957dba493f09)) +* **deps:** update dependency @auth/core to ^0.34.1 ([#702](https://github.com/homarr-labs/homarr/issues/702)) ([05702be](https://github.com/homarr-labs/homarr/commit/05702bede88f86ef9014b8f7efa49b8d8a3ceca4)) +* **deps:** update dependency @auth/core to ^0.34.2 ([#876](https://github.com/homarr-labs/homarr/issues/876)) ([9181f11](https://github.com/homarr-labs/homarr/commit/9181f11b137f6327b558fabf6fe8b79de7ff345b)) +* **deps:** update dependency @auth/core to ^0.35.0 ([#1129](https://github.com/homarr-labs/homarr/issues/1129)) ([f9cc34c](https://github.com/homarr-labs/homarr/commit/f9cc34c12f1c8c3334f34a72322852a1e9e8e007)) +* **deps:** update dependency @auth/core to ^0.35.1 ([#1176](https://github.com/homarr-labs/homarr/issues/1176)) ([16e7f93](https://github.com/homarr-labs/homarr/commit/16e7f938bd2604cc2067466b56725ebe9f9743f9)) +* **deps:** update dependency @auth/core to ^0.35.2 ([#1180](https://github.com/homarr-labs/homarr/issues/1180)) ([f495383](https://github.com/homarr-labs/homarr/commit/f495383bcf2a725d82628067c19e763c84c8bdc1)) +* **deps:** update dependency @auth/core to ^0.35.3 ([#1193](https://github.com/homarr-labs/homarr/issues/1193)) ([1994a59](https://github.com/homarr-labs/homarr/commit/1994a5938d5cbb33a1e6cae0676d9350c9424f82)) +* **deps:** update dependency @auth/core to ^0.36.0 ([#1250](https://github.com/homarr-labs/homarr/issues/1250)) ([d0d2a82](https://github.com/homarr-labs/homarr/commit/d0d2a82a68f9155564d92ce925ac7d8cd80f42ee)) +* **deps:** update dependency @auth/core to ^0.37.0 ([#1272](https://github.com/homarr-labs/homarr/issues/1272)) ([8bcba35](https://github.com/homarr-labs/homarr/commit/8bcba350d58564b03cb2ff3296f8ddf2c77d0dae)) +* **deps:** update dependency @auth/core to ^0.37.1 ([#1323](https://github.com/homarr-labs/homarr/issues/1323)) ([dac2b50](https://github.com/homarr-labs/homarr/commit/dac2b5063bb892cdc5079a9957eb9199b6d62738)) +* **deps:** update dependency @auth/core to ^0.37.2 ([#1338](https://github.com/homarr-labs/homarr/issues/1338)) ([aa2d2f8](https://github.com/homarr-labs/homarr/commit/aa2d2f8c4b1b50e07cb68fb1bd76d6561fedb716)) +* **deps:** update dependency @auth/core to ^0.37.3 ([#1416](https://github.com/homarr-labs/homarr/issues/1416)) ([7a07f57](https://github.com/homarr-labs/homarr/commit/7a07f57d0c34fb2c5e98680b351254ab32e9a593)) +* **deps:** update dependency @auth/core to ^0.37.4 ([#1492](https://github.com/homarr-labs/homarr/issues/1492)) ([d4f0aa7](https://github.com/homarr-labs/homarr/commit/d4f0aa761d95cb2b7f72787b95b0033faba072c3)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.5.0 ([#30](https://github.com/homarr-labs/homarr/issues/30)) ([191d773](https://github.com/homarr-labs/homarr/commit/191d773aaf55209d67be841e4f24f24e6439ca85)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.6.3 ([#52](https://github.com/homarr-labs/homarr/issues/52)) ([6797cca](https://github.com/homarr-labs/homarr/commit/6797cca25945da5944966622c0cba5a9e0a263fa)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.7.0 ([#90](https://github.com/homarr-labs/homarr/issues/90)) ([1139352](https://github.com/homarr-labs/homarr/commit/11393525d9bfc192818c1ef2d80c3d41f56fcca3)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.8.0 ([#170](https://github.com/homarr-labs/homarr/issues/170)) ([50fd4c1](https://github.com/homarr-labs/homarr/commit/50fd4c17adfac217d7908d612fe10ee97171edac)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.8.1 ([#267](https://github.com/homarr-labs/homarr/issues/267)) ([98a8eaa](https://github.com/homarr-labs/homarr/commit/98a8eaac0950e53864cb87ee722f353df6c56c56)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.8.2 ([#293](https://github.com/homarr-labs/homarr/issues/293)) ([fbc69f6](https://github.com/homarr-labs/homarr/commit/fbc69f6078ddae657646247db77c425773ab5170)) +* **deps:** update dependency @auth/drizzle-adapter to ^0.9.0 ([#328](https://github.com/homarr-labs/homarr/issues/328)) ([7fb0dec](https://github.com/homarr-labs/homarr/commit/7fb0decd5bde0855a191c69f52f426d104bf7151)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.1.0 ([#474](https://github.com/homarr-labs/homarr/issues/474)) ([82d41ab](https://github.com/homarr-labs/homarr/commit/82d41abf460556ce62f04a700d47208201bdd595)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.2.0 ([#604](https://github.com/homarr-labs/homarr/issues/604)) ([2e044ac](https://github.com/homarr-labs/homarr/commit/2e044ac871fb451160b0619ee430eba3f962c668)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.3.0 ([#694](https://github.com/homarr-labs/homarr/issues/694)) ([4291bde](https://github.com/homarr-labs/homarr/commit/4291bde94f6017c92d44dce50cb795d46f54f9c6)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.4.1 ([#701](https://github.com/homarr-labs/homarr/issues/701)) ([324a643](https://github.com/homarr-labs/homarr/commit/324a643fd1abad4b98bcd14934e4bd23f04e8260)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.4.2 ([#877](https://github.com/homarr-labs/homarr/issues/877)) ([37309e0](https://github.com/homarr-labs/homarr/commit/37309e07279ad46cb3e9e4a29033966d5a34d00a)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.5.0 ([#1130](https://github.com/homarr-labs/homarr/issues/1130)) ([929054d](https://github.com/homarr-labs/homarr/commit/929054d5bddd9863671227c2bc71e07ff4b197be)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.5.1 ([#1177](https://github.com/homarr-labs/homarr/issues/1177)) ([4e431b4](https://github.com/homarr-labs/homarr/commit/4e431b4f8971f18387f84553d1e644980733b383)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.5.2 ([#1181](https://github.com/homarr-labs/homarr/issues/1181)) ([17d6229](https://github.com/homarr-labs/homarr/commit/17d6229a0fadb56f2522256a03e15cca3fb7948e)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.5.3 ([#1194](https://github.com/homarr-labs/homarr/issues/1194)) ([adb59b2](https://github.com/homarr-labs/homarr/commit/adb59b292bd5b6df50c60eac17b2a77d3d28696c)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.6.0 ([#1251](https://github.com/homarr-labs/homarr/issues/1251)) ([9c5ca6f](https://github.com/homarr-labs/homarr/commit/9c5ca6f9069f8b6089212638009d098b3d76298c)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.6.1 ([#1258](https://github.com/homarr-labs/homarr/issues/1258)) ([dea6254](https://github.com/homarr-labs/homarr/commit/dea62547e0f51b6607eef5d278202081e6100509)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.7.0 ([#1273](https://github.com/homarr-labs/homarr/issues/1273)) ([a44ead0](https://github.com/homarr-labs/homarr/commit/a44ead09a39ff3d83d646622f29b4c236d078dc4)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.7.1 ([#1324](https://github.com/homarr-labs/homarr/issues/1324)) ([b1393fa](https://github.com/homarr-labs/homarr/commit/b1393fa59b35d84968fd5d6ecddb29e3c22b4aa3)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.7.2 ([#1339](https://github.com/homarr-labs/homarr/issues/1339)) ([c5cc21a](https://github.com/homarr-labs/homarr/commit/c5cc21a4b0537d2396ba8fe79eaeff0a008a5e75)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.7.3 ([#1417](https://github.com/homarr-labs/homarr/issues/1417)) ([b45eeb9](https://github.com/homarr-labs/homarr/commit/b45eeb95e94b1288bb97b45b1dd6eca3728cde72)) +* **deps:** update dependency @auth/drizzle-adapter to ^1.7.4 ([#1493](https://github.com/homarr-labs/homarr/issues/1493)) ([e9a74a0](https://github.com/homarr-labs/homarr/commit/e9a74a01b900f083143b93c8df73fcaa98009ea0)) +* **deps:** update dependency @auth/drizzle-adapter to v1 ([#359](https://github.com/homarr-labs/homarr/issues/359)) ([ea528ea](https://github.com/homarr-labs/homarr/commit/ea528ea076fec672d7ee57a23ee66244d987f103)) +* **deps:** update dependency @ctrl/deluge to v7 ([#1468](https://github.com/homarr-labs/homarr/issues/1468)) ([70f9dc5](https://github.com/homarr-labs/homarr/commit/70f9dc54606d2518afdd5cef84f6623cfdfa8fd3)) +* **deps:** update dependency @ctrl/qbittorrent to ^9.1.0 ([#1466](https://github.com/homarr-labs/homarr/issues/1466)) ([27931be](https://github.com/homarr-labs/homarr/commit/27931be9825a0ee1a4942abb560127c4e2286aa4)) +* **deps:** update dependency @ctrl/transmission to ^7.1.0 ([#1467](https://github.com/homarr-labs/homarr/issues/1467)) ([f220bb6](https://github.com/homarr-labs/homarr/commit/f220bb62445219f9d010e9a28bcb78789a63d368)) +* **deps:** update dependency @ctrl/transmission to v7 ([#1103](https://github.com/homarr-labs/homarr/issues/1103)) ([5986160](https://github.com/homarr-labs/homarr/commit/59861602652a5717e74a342059cd403151d8a6fd)) +* **deps:** update dependency @dnd-kit/core to ^6.2.0 ([#1534](https://github.com/homarr-labs/homarr/issues/1534)) ([5a3d974](https://github.com/homarr-labs/homarr/commit/5a3d9745d985cccca69f9bbfdf0d0ee922de8cbc)) +* **deps:** update dependency @dnd-kit/core to ^6.3.0 ([#1608](https://github.com/homarr-labs/homarr/issues/1608)) ([6c7cdb3](https://github.com/homarr-labs/homarr/commit/6c7cdb3adb6178888e4e3a5e328433f19803cd29)) +* **deps:** update dependency @dnd-kit/core to ^6.3.1 ([#1613](https://github.com/homarr-labs/homarr/issues/1613)) ([79d52b6](https://github.com/homarr-labs/homarr/commit/79d52b690533973e8ff00a1b4920c3f2cbcd417b)) +* **deps:** update dependency @dnd-kit/sortable to v10 ([#1609](https://github.com/homarr-labs/homarr/issues/1609)) ([1037a74](https://github.com/homarr-labs/homarr/commit/1037a747ea0c6e59fc2efb6562c49d4a3bca7465)) +* **deps:** update dependency @dnd-kit/sortable to v9 ([#1535](https://github.com/homarr-labs/homarr/issues/1535)) ([b68977c](https://github.com/homarr-labs/homarr/commit/b68977c52c84ae9742fd52b554d4838409ab76a6)) +* **deps:** update dependency @drizzle-team/brocli to ^0.10.0 ([#937](https://github.com/homarr-labs/homarr/issues/937)) ([a80b49a](https://github.com/homarr-labs/homarr/commit/a80b49a03e8174a1c4ae7e7abc8c9d32939946b6)) +* **deps:** update dependency @drizzle-team/brocli to ^0.10.1 ([#974](https://github.com/homarr-labs/homarr/issues/974)) ([ba3f173](https://github.com/homarr-labs/homarr/commit/ba3f1739f4be88b84f7c782936fc5c91bfa49fae)) +* **deps:** update dependency @drizzle-team/brocli to ^0.10.2 ([#1380](https://github.com/homarr-labs/homarr/issues/1380)) ([8d2d151](https://github.com/homarr-labs/homarr/commit/8d2d151787b4596e2af79e00345fc1ba40884535)) +* **deps:** update dependency @drizzle-team/brocli to ^0.11.0 ([#1427](https://github.com/homarr-labs/homarr/issues/1427)) ([e332a6f](https://github.com/homarr-labs/homarr/commit/e332a6fcbe719defc29f0ba7ada88fb3434784d9)) +* **deps:** update dependency @homarr/gridstack to v1.0.2 ([#542](https://github.com/homarr-labs/homarr/issues/542)) ([1569862](https://github.com/homarr-labs/homarr/commit/1569862baf77b3a8475c4aacc6f7ae5774be09cd)) +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.2.0 ([#227](https://github.com/homarr-labs/homarr/issues/227)) ([179ceae](https://github.com/homarr-labs/homarr/commit/179ceaebf05f53c434e245d1eb7b95a5be3c4d96)) +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.2.1 ([#243](https://github.com/homarr-labs/homarr/issues/243)) ([c5428ef](https://github.com/homarr-labs/homarr/commit/c5428efd60fa5217c7191bc3404cac420e9539be)) +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.3.0 ([#718](https://github.com/homarr-labs/homarr/issues/718)) ([7a14c25](https://github.com/homarr-labs/homarr/commit/7a14c255be48b9b8e92f7918f6af68a211e2666e)) +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.3.1 ([#784](https://github.com/homarr-labs/homarr/issues/784)) ([0a4ff4b](https://github.com/homarr-labs/homarr/commit/0a4ff4b883a40970e4d4b733aa096929ae6ec11a)) +* **deps:** update dependency @ianvs/prettier-plugin-sort-imports to ^4.4.0 ([#1441](https://github.com/homarr-labs/homarr/issues/1441)) ([7cd3156](https://github.com/homarr-labs/homarr/commit/7cd3156bd627b983ebe7eba4ace82535b8a5e913)) +* **deps:** update dependency @jellyfin/sdk to ^0.11.0 ([#1384](https://github.com/homarr-labs/homarr/issues/1384)) ([7a4c9a9](https://github.com/homarr-labs/homarr/commit/7a4c9a9b2e72247577a61285546b0f74f5055d53)) +* **deps:** update dependency @million/lint to v1.0.0 ([#1212](https://github.com/homarr-labs/homarr/issues/1212)) ([b3f6645](https://github.com/homarr-labs/homarr/commit/b3f6645783bc4132480669113dfddac0939c5aeb)) +* **deps:** update dependency @million/lint to v1.0.10 ([#1293](https://github.com/homarr-labs/homarr/issues/1293)) ([ed52b26](https://github.com/homarr-labs/homarr/commit/ed52b26f6d6938d653527af94f341c3b5a69e093)) +* **deps:** update dependency @million/lint to v1.0.11 ([#1294](https://github.com/homarr-labs/homarr/issues/1294)) ([c707b4b](https://github.com/homarr-labs/homarr/commit/c707b4b10ff38e6cf299a503bd8176313d47f3ff)) +* **deps:** update dependency @million/lint to v1.0.12 ([#1459](https://github.com/homarr-labs/homarr/issues/1459)) ([ce32b48](https://github.com/homarr-labs/homarr/commit/ce32b4839d5074a38922c8bff389524d3e4619f4)) +* **deps:** update dependency @million/lint to v1.0.13 ([#1557](https://github.com/homarr-labs/homarr/issues/1557)) ([f2268c8](https://github.com/homarr-labs/homarr/commit/f2268c8041955c39206b1b8373278f170f76eae0)) +* **deps:** update dependency @million/lint to v1.0.14 ([#1647](https://github.com/homarr-labs/homarr/issues/1647)) ([4c7058b](https://github.com/homarr-labs/homarr/commit/4c7058b159858f3873aaf5dd95d5581696b3f30f)) +* **deps:** update dependency @million/lint to v1.0.7 ([#1225](https://github.com/homarr-labs/homarr/issues/1225)) ([770a0d6](https://github.com/homarr-labs/homarr/commit/770a0d63f9bab2f06e859bebe525ab9b222a5351)) +* **deps:** update dependency @million/lint to v1.0.8 ([#1231](https://github.com/homarr-labs/homarr/issues/1231)) ([547287d](https://github.com/homarr-labs/homarr/commit/547287dba1d37858f5406011bcbed20cbce08c9a)) +* **deps:** update dependency @million/lint to v1.0.9 ([#1255](https://github.com/homarr-labs/homarr/issues/1255)) ([1d281c0](https://github.com/homarr-labs/homarr/commit/1d281c0cc947612b21f65a1beca41e37a81403b0)) +* **deps:** update dependency @t3-oss/env-nextjs to ^0.10.1 ([#375](https://github.com/homarr-labs/homarr/issues/375)) ([73a72dc](https://github.com/homarr-labs/homarr/commit/73a72dc6755ee39fb1282ddde347a84d6aa8419f)) +* **deps:** update dependency @t3-oss/env-nextjs to ^0.11.0 ([#851](https://github.com/homarr-labs/homarr/issues/851)) ([88e5ac2](https://github.com/homarr-labs/homarr/commit/88e5ac2f71ed21e9a99969210b293e51d34b5106)) +* **deps:** update dependency @t3-oss/env-nextjs to ^0.11.1 ([#1029](https://github.com/homarr-labs/homarr/issues/1029)) ([e193c1c](https://github.com/homarr-labs/homarr/commit/e193c1c6f52c3a3e0072262227af82481d71b088)) +* **deps:** update dependency @t3-oss/env-nextjs to ^0.8.0 ([#31](https://github.com/homarr-labs/homarr/issues/31)) ([f8a3aae](https://github.com/homarr-labs/homarr/commit/f8a3aae1163d1b5d645e7e9fe0228846a856d4e6)) +* **deps:** update dependency @t3-oss/env-nextjs to ^0.9.2 ([#69](https://github.com/homarr-labs/homarr/issues/69)) ([11d1568](https://github.com/homarr-labs/homarr/commit/11d15687149f2bf55aba1999f368436b15b4a9ce)) +* **deps:** update dependency @tabler/icons-react to ^2.47.0 ([#32](https://github.com/homarr-labs/homarr/issues/32)) ([6a892e0](https://github.com/homarr-labs/homarr/commit/6a892e02c8aadcbfb192a65b56543ee27a3dc966)) +* **deps:** update dependency @tabler/icons-react to ^3.0.3 ([#229](https://github.com/homarr-labs/homarr/issues/229)) ([64354e4](https://github.com/homarr-labs/homarr/commit/64354e4b43ce4c7e9e2f1c816e2af8e3c15d905b)) +* **deps:** update dependency @tabler/icons-react to ^3.1.0 ([#236](https://github.com/homarr-labs/homarr/issues/236)) ([333aaf3](https://github.com/homarr-labs/homarr/commit/333aaf34dc85d24b9f7cf6451d65f566369ffa21)) +* **deps:** update dependency @tabler/icons-react to ^3.10.0 ([#769](https://github.com/homarr-labs/homarr/issues/769)) ([bf70143](https://github.com/homarr-labs/homarr/commit/bf70143ccab2ef6a35d739279af91c51e0be72e4)) +* **deps:** update dependency @tabler/icons-react to ^3.11.0 ([#818](https://github.com/homarr-labs/homarr/issues/818)) ([30669d2](https://github.com/homarr-labs/homarr/commit/30669d23e32974cbea3881fe2a0712985f59394d)) +* **deps:** update dependency @tabler/icons-react to ^3.12.0 ([#944](https://github.com/homarr-labs/homarr/issues/944)) ([21c0e4b](https://github.com/homarr-labs/homarr/commit/21c0e4b35471071cd73472a116f42550a4b7a509)) +* **deps:** update dependency @tabler/icons-react to ^3.13.0 ([#1034](https://github.com/homarr-labs/homarr/issues/1034)) ([2ea0d04](https://github.com/homarr-labs/homarr/commit/2ea0d04c71087bf56fd85c36955ba62ccf78e94b)) +* **deps:** update dependency @tabler/icons-react to ^3.14.0 ([#1039](https://github.com/homarr-labs/homarr/issues/1039)) ([961fca0](https://github.com/homarr-labs/homarr/commit/961fca0f647e569ee87a787d58e36c3c5f4fdedb)) +* **deps:** update dependency @tabler/icons-react to ^3.15.0 ([#1085](https://github.com/homarr-labs/homarr/issues/1085)) ([7b6301e](https://github.com/homarr-labs/homarr/commit/7b6301e498d608099f462b30177e8067bb0647b3)) +* **deps:** update dependency @tabler/icons-react to ^3.16.0 ([#1096](https://github.com/homarr-labs/homarr/issues/1096)) ([18c1da4](https://github.com/homarr-labs/homarr/commit/18c1da4a6296aadda9e9ecd88f112c1302b3e3ee)) +* **deps:** update dependency @tabler/icons-react to ^3.17.0 ([#1126](https://github.com/homarr-labs/homarr/issues/1126)) ([6685f4c](https://github.com/homarr-labs/homarr/commit/6685f4c8060867ec32e28c8ddfa351791feeaa53)) +* **deps:** update dependency @tabler/icons-react to ^3.18.0 ([#1188](https://github.com/homarr-labs/homarr/issues/1188)) ([1bce7a3](https://github.com/homarr-labs/homarr/commit/1bce7a300d616ad05dcf191a859af2bb665a41dd)) +* **deps:** update dependency @tabler/icons-react to ^3.19.0 ([#1197](https://github.com/homarr-labs/homarr/issues/1197)) ([8aaa4f5](https://github.com/homarr-labs/homarr/commit/8aaa4f5856ccac86ddd0e1e5ce3fc0178fda9597)) +* **deps:** update dependency @tabler/icons-react to ^3.2.0 ([#342](https://github.com/homarr-labs/homarr/issues/342)) ([c40533e](https://github.com/homarr-labs/homarr/commit/c40533e758ee60709a42b54e41345583cab40e51)) +* **deps:** update dependency @tabler/icons-react to ^3.20.0 ([#1359](https://github.com/homarr-labs/homarr/issues/1359)) ([30d4464](https://github.com/homarr-labs/homarr/commit/30d4464067583632bd9549b703dd886cac61a3f2)) +* **deps:** update dependency @tabler/icons-react to ^3.21.0 ([#1382](https://github.com/homarr-labs/homarr/issues/1382)) ([958c62c](https://github.com/homarr-labs/homarr/commit/958c62c92689ccdb466f7760dd053ca5f51099dc)) +* **deps:** update dependency @tabler/icons-react to ^3.22.0 ([#1471](https://github.com/homarr-labs/homarr/issues/1471)) ([a1fddaa](https://github.com/homarr-labs/homarr/commit/a1fddaa6a61fdcbc892e704bea8a0a0b73ab1e1e)) +* **deps:** update dependency @tabler/icons-react to ^3.23.0 ([#1566](https://github.com/homarr-labs/homarr/issues/1566)) ([fd42bde](https://github.com/homarr-labs/homarr/commit/fd42bde76ddf46f51f787cab832636f33187b006)) +* **deps:** update dependency @tabler/icons-react to ^3.24.0 ([#1587](https://github.com/homarr-labs/homarr/issues/1587)) ([23cc465](https://github.com/homarr-labs/homarr/commit/23cc4659c4cd14e7f95253e56fddd3a010d908c1)) +* **deps:** update dependency @tabler/icons-react to ^3.26.0 ([#1667](https://github.com/homarr-labs/homarr/issues/1667)) ([8c596bf](https://github.com/homarr-labs/homarr/commit/8c596bf5fa9119bd22375f2fc8408ebac8eb0bcb)) +* **deps:** update dependency @tabler/icons-react to ^3.3.0 ([#405](https://github.com/homarr-labs/homarr/issues/405)) ([46bb3ee](https://github.com/homarr-labs/homarr/commit/46bb3ee0c98f1a0c24ef1111d5ffd86b0446c9f1)) +* **deps:** update dependency @tabler/icons-react to ^3.4.0 ([#501](https://github.com/homarr-labs/homarr/issues/501)) ([3fe1a19](https://github.com/homarr-labs/homarr/commit/3fe1a19e378810c86f4526d218758becd71bbe9f)) +* **deps:** update dependency @tabler/icons-react to ^3.5.0 ([#532](https://github.com/homarr-labs/homarr/issues/532)) ([63f7431](https://github.com/homarr-labs/homarr/commit/63f743175edbc2d46c6eb0cb7f7a41e8007cd038)) +* **deps:** update dependency @tabler/icons-react to ^3.6.0 ([#664](https://github.com/homarr-labs/homarr/issues/664)) ([e4c6864](https://github.com/homarr-labs/homarr/commit/e4c6864a94fc0dc0449249043b2cf8037783c99f)) +* **deps:** update dependency @tabler/icons-react to ^3.7.0 ([#715](https://github.com/homarr-labs/homarr/issues/715)) ([6a3a846](https://github.com/homarr-labs/homarr/commit/6a3a8465e701aa4449d9993151ebace0f71542b2)) +* **deps:** update dependency @tabler/icons-react to ^3.8.0 ([#737](https://github.com/homarr-labs/homarr/issues/737)) ([e12531c](https://github.com/homarr-labs/homarr/commit/e12531ccccfdfafd21c6cb62533b1c4752a13e80)) +* **deps:** update dependency @tabler/icons-react to ^3.9.0 ([#745](https://github.com/homarr-labs/homarr/issues/745)) ([75e5a6c](https://github.com/homarr-labs/homarr/commit/75e5a6c42ff41b72b1d86fcac61f7d8c89ac337d)) +* **deps:** update dependency @tabler/icons-react to v3 ([#215](https://github.com/homarr-labs/homarr/issues/215)) ([1c222ed](https://github.com/homarr-labs/homarr/commit/1c222ed89cd53dccc41445631f777424705a444a)) +* **deps:** update dependency @tanstack/react-query-devtools to ^5.21.0 ([#101](https://github.com/homarr-labs/homarr/issues/101)) ([4ea1d14](https://github.com/homarr-labs/homarr/commit/4ea1d14966aebf7477fdfebce0e1bf3833ac70c2)) +* **deps:** update dependency @tanstack/react-query-devtools to ^5.21.5 ([#130](https://github.com/homarr-labs/homarr/issues/130)) ([dbf02c6](https://github.com/homarr-labs/homarr/commit/dbf02c62641e541682a39ebd5bba4a4cc87d94ab)) +* **deps:** update dependency @tanstack/react-query-devtools to ^5.54.0 ([#1060](https://github.com/homarr-labs/homarr/issues/1060)) ([6ea4a74](https://github.com/homarr-labs/homarr/commit/6ea4a74675b271573e25fb88d8ecd62f9f83be12)) +* **deps:** update dependency @tanstack/react-query-devtools to ^5.58.0 ([#1175](https://github.com/homarr-labs/homarr/issues/1175)) ([e2414f5](https://github.com/homarr-labs/homarr/commit/e2414f5e9f6cca92e43a7c8e551cd84d73925db6)) +* **deps:** update dependency @tanstack/react-query-next-experimental to v5.41.0 ([#639](https://github.com/homarr-labs/homarr/issues/639)) ([38c32cb](https://github.com/homarr-labs/homarr/commit/38c32cbece6e400482d1fd69c7b6bcf971224848)) +* **deps:** update dependency @tanstack/react-query-next-experimental to v5.46.0 ([#699](https://github.com/homarr-labs/homarr/issues/699)) ([8d7a7bc](https://github.com/homarr-labs/homarr/commit/8d7a7bc9b1d8051be6a879cecb405934e508fc21)) +* **deps:** update dependency @trpc/client to v11.0.0-next-beta.318 ([#234](https://github.com/homarr-labs/homarr/issues/234)) ([ab55a13](https://github.com/homarr-labs/homarr/commit/ab55a1357dec7bbd8b9ce68d635f89078954d091)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.330 ([#288](https://github.com/homarr-labs/homarr/issues/288)) ([d8d25d5](https://github.com/homarr-labs/homarr/commit/d8d25d50379aa4b4514e61418a8bdf0430063256)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.332 ([#308](https://github.com/homarr-labs/homarr/issues/308)) ([50c1624](https://github.com/homarr-labs/homarr/commit/50c162444c45c954755fcca22bed6e3d1443f950)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.334 ([#334](https://github.com/homarr-labs/homarr/issues/334)) ([ed5e5d1](https://github.com/homarr-labs/homarr/commit/ed5e5d1edcbd5d0d8cefa9664ebe0f3d08ae1499)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.345 ([#351](https://github.com/homarr-labs/homarr/issues/351)) ([0ba6455](https://github.com/homarr-labs/homarr/commit/0ba64559829f2257d3ce59493e9ed9d012f88bce)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.354 ([#368](https://github.com/homarr-labs/homarr/issues/368)) ([d88b6de](https://github.com/homarr-labs/homarr/commit/d88b6def759bf8a4980aa67e7fa652be7def8c95)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.359 ([#394](https://github.com/homarr-labs/homarr/issues/394)) ([47accae](https://github.com/homarr-labs/homarr/commit/47accae90d7d56c5aa1ea33d74350addd2038a10)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.361 ([#404](https://github.com/homarr-labs/homarr/issues/404)) ([6dff7c4](https://github.com/homarr-labs/homarr/commit/6dff7c48e2622a1e0df1c3f8ab86450a0899d395)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.362 ([#407](https://github.com/homarr-labs/homarr/issues/407)) ([0020680](https://github.com/homarr-labs/homarr/commit/0020680ca097b82ade46fc7e82c83d0da60d6e1c)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.364 ([#409](https://github.com/homarr-labs/homarr/issues/409)) ([7bc7bd6](https://github.com/homarr-labs/homarr/commit/7bc7bd6bf9dbdeaeb6b62d35cb7fb3db6074245f)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.366 ([#454](https://github.com/homarr-labs/homarr/issues/454)) ([1172d84](https://github.com/homarr-labs/homarr/commit/1172d842235cf8e01279dc2ee44360b0773b3b20)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.373 ([#493](https://github.com/homarr-labs/homarr/issues/493)) ([1abf441](https://github.com/homarr-labs/homarr/commit/1abf441cdba8a8f3a32600c197d1e414fb41f655)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.374 ([#522](https://github.com/homarr-labs/homarr/issues/522)) ([eb0db3e](https://github.com/homarr-labs/homarr/commit/eb0db3ec4efc7d07bdb24dac6299d61b3164f666)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.377 ([#553](https://github.com/homarr-labs/homarr/issues/553)) ([abdf9bc](https://github.com/homarr-labs/homarr/commit/abdf9bc122cddb7b97ec48a8aacca27b382c02a3)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.382 ([#568](https://github.com/homarr-labs/homarr/issues/568)) ([e448eeb](https://github.com/homarr-labs/homarr/commit/e448eeb0a62a91aeab31547055cc7b94b5de9bcb)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.383 ([#608](https://github.com/homarr-labs/homarr/issues/608)) ([869efbc](https://github.com/homarr-labs/homarr/commit/869efbc6388bcd48b49d6f2b27f7e2609855ceab)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.390 ([#609](https://github.com/homarr-labs/homarr/issues/609)) ([812b8d8](https://github.com/homarr-labs/homarr/commit/812b8d8306672b99d2bfe5f0284bc92a585f8284)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.394 ([#626](https://github.com/homarr-labs/homarr/issues/626)) ([5bf1ddd](https://github.com/homarr-labs/homarr/commit/5bf1ddde4b509373a641f29c480b60598ada7bd9)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.396 ([#634](https://github.com/homarr-labs/homarr/issues/634)) ([475f472](https://github.com/homarr-labs/homarr/commit/475f472cb0885bf70133e08f3bde08830476ce39)) +* **deps:** update dependency @trpc/client to v11.0.0-rc.401 ([#648](https://github.com/homarr-labs/homarr/issues/648)) ([84851db](https://github.com/homarr-labs/homarr/commit/84851db333a08ecc7d7255e0a2300e45d50a446b)) +* **deps:** update dependency @typescript-eslint/eslint-plugin to ^7.4.0 ([#271](https://github.com/homarr-labs/homarr/issues/271)) ([dd7f04e](https://github.com/homarr-labs/homarr/commit/dd7f04e3955644dcac7acf4446b454aaaa7ee387)) +* **deps:** update dependency @typescript-eslint/parser to ^7.4.0 ([#270](https://github.com/homarr-labs/homarr/issues/270)) ([c4a4452](https://github.com/homarr-labs/homarr/commit/c4a445283901128a738af553f54a912a48661f1d)) +* **deps:** update dependency @umami/node to ^0.4.0 ([#1000](https://github.com/homarr-labs/homarr/issues/1000)) ([72aed22](https://github.com/homarr-labs/homarr/commit/72aed221254b3bcfdaad3f26b2984ddbf7e4e152)) +* **deps:** update dependency better-sqlite3 to ^10.1.0 ([#584](https://github.com/homarr-labs/homarr/issues/584)) ([6d46e91](https://github.com/homarr-labs/homarr/commit/6d46e91a7cbbe6a892453c040da8b7b841d9ad2c)) +* **deps:** update dependency better-sqlite3 to ^11.1.1 ([#720](https://github.com/homarr-labs/homarr/issues/720)) ([c8d4461](https://github.com/homarr-labs/homarr/commit/c8d4461ab82b57c4719fcc805d75caac7db381ee)) +* **deps:** update dependency better-sqlite3 to ^11.1.2 ([#736](https://github.com/homarr-labs/homarr/issues/736)) ([6aecd1a](https://github.com/homarr-labs/homarr/commit/6aecd1a713575374b49253e074e4c1d52db58b77)) +* **deps:** update dependency better-sqlite3 to ^11.2.0 ([#1004](https://github.com/homarr-labs/homarr/issues/1004)) ([4e6437a](https://github.com/homarr-labs/homarr/commit/4e6437a180e3c25e6265803f2179d9caf119b64d)) +* **deps:** update dependency better-sqlite3 to ^11.2.1 ([#1006](https://github.com/homarr-labs/homarr/issues/1006)) ([051d57b](https://github.com/homarr-labs/homarr/commit/051d57bb399cea562f89b52a179d77c6bc90a3fc)) +* **deps:** update dependency better-sqlite3 to ^11.3.0 ([#1092](https://github.com/homarr-labs/homarr/issues/1092)) ([ed0c613](https://github.com/homarr-labs/homarr/commit/ed0c6136e61c46a9b90c5bbd1a85abbf4dfb68f5)) +* **deps:** update dependency better-sqlite3 to ^11.4.0 ([#1320](https://github.com/homarr-labs/homarr/issues/1320)) ([601af7a](https://github.com/homarr-labs/homarr/commit/601af7acd811a822a7d61d03094a61192e6947ed)) +* **deps:** update dependency better-sqlite3 to ^11.5.0 ([#1350](https://github.com/homarr-labs/homarr/issues/1350)) ([d599390](https://github.com/homarr-labs/homarr/commit/d599390512a169e15a4f9a1bff5f45eaf2e18834)) +* **deps:** update dependency better-sqlite3 to ^11.6.0 ([#1548](https://github.com/homarr-labs/homarr/issues/1548)) ([93aedd9](https://github.com/homarr-labs/homarr/commit/93aedd994f405a1e60913086900015c94a364962)) +* **deps:** update dependency better-sqlite3 to ^11.7.0 ([#1628](https://github.com/homarr-labs/homarr/issues/1628)) ([753e0ec](https://github.com/homarr-labs/homarr/commit/753e0ecad2f57ca1fa2202a9678ea7c2f1e67c5b)) +* **deps:** update dependency better-sqlite3 to ^9.4.0 ([#33](https://github.com/homarr-labs/homarr/issues/33)) ([00db901](https://github.com/homarr-labs/homarr/commit/00db9018339ae31f07edcd89a023f569aec0dbe5)) +* **deps:** update dependency better-sqlite3 to ^9.4.1 ([#83](https://github.com/homarr-labs/homarr/issues/83)) ([34f06e8](https://github.com/homarr-labs/homarr/commit/34f06e817db014e101e16543cdfc518485990a0d)) +* **deps:** update dependency better-sqlite3 to ^9.4.3 ([#118](https://github.com/homarr-labs/homarr/issues/118)) ([baa541a](https://github.com/homarr-labs/homarr/commit/baa541afa9c2f91bd56ec99bb24fc6cdb585991b)) +* **deps:** update dependency better-sqlite3 to ^9.4.5 ([#302](https://github.com/homarr-labs/homarr/issues/302)) ([7bff8e5](https://github.com/homarr-labs/homarr/commit/7bff8e5148875b72a5218e6856d10249f435b53b)) +* **deps:** update dependency better-sqlite3 to ^9.5.0 ([#335](https://github.com/homarr-labs/homarr/issues/335)) ([48a4b8b](https://github.com/homarr-labs/homarr/commit/48a4b8ba7e6b535fd1828713a0c4fadcbff89ec8)) +* **deps:** update dependency better-sqlite3 to ^9.6.0 ([#386](https://github.com/homarr-labs/homarr/issues/386)) ([45ffbad](https://github.com/homarr-labs/homarr/commit/45ffbadeece8a82dcb1e202e5934335a5d2d8832)) +* **deps:** update dependency better-sqlite3 to v10 ([#479](https://github.com/homarr-labs/homarr/issues/479)) ([f0da1d8](https://github.com/homarr-labs/homarr/commit/f0da1d81a6cd8b425919ffb9460b5f6bbb82ae2a)) +* **deps:** update dependency better-sqlite3 to v11 ([#587](https://github.com/homarr-labs/homarr/issues/587)) ([96150f8](https://github.com/homarr-labs/homarr/commit/96150f802d1c75ed6a10bf05a5f19c259ead581b)) +* **deps:** update dependency chroma-js to ^2.5.0 ([#890](https://github.com/homarr-labs/homarr/issues/890)) ([79cabe6](https://github.com/homarr-labs/homarr/commit/79cabe65801de1c180691f3413ef01939ede14be)) +* **deps:** update dependency chroma-js to ^2.6.0 ([#891](https://github.com/homarr-labs/homarr/issues/891)) ([15171dd](https://github.com/homarr-labs/homarr/commit/15171dd5afd12cbdc459442d2cab0164128381cb)) +* **deps:** update dependency chroma-js to ^3.1.0 ([#1081](https://github.com/homarr-labs/homarr/issues/1081)) ([4f42143](https://github.com/homarr-labs/homarr/commit/4f421433c2fa3918771f9138e45c3b526a6a9396)) +* **deps:** update dependency chroma-js to ^3.1.1 ([#1082](https://github.com/homarr-labs/homarr/issues/1082)) ([6bf0a53](https://github.com/homarr-labs/homarr/commit/6bf0a53d21a47542cceeec93eb90828206f2e81d)) +* **deps:** update dependency chroma-js to ^3.1.2 ([#1289](https://github.com/homarr-labs/homarr/issues/1289)) ([1bc470a](https://github.com/homarr-labs/homarr/commit/1bc470a39feae570a76dc210946ffc18b9bef6ea)) +* **deps:** update dependency chroma-js to v3 ([#992](https://github.com/homarr-labs/homarr/issues/992)) ([3eb9096](https://github.com/homarr-labs/homarr/commit/3eb90968ac8e5de059b3e14c0736433b005f5409)) +* **deps:** update dependency dayjs to ^1.11.11 ([#393](https://github.com/homarr-labs/homarr/issues/393)) ([03c2993](https://github.com/homarr-labs/homarr/commit/03c2993611e992cb24a142f050bdcd763c7813e2)) +* **deps:** update dependency dayjs to ^1.11.12 ([#832](https://github.com/homarr-labs/homarr/issues/832)) ([5c92f6a](https://github.com/homarr-labs/homarr/commit/5c92f6a3cc1febf9d96e394f54d2f5f94d9ab52e)) +* **deps:** update dependency dayjs to ^1.11.13 ([#1001](https://github.com/homarr-labs/homarr/issues/1001)) ([27d08ba](https://github.com/homarr-labs/homarr/commit/27d08baa2d6f82f521dc46a359ce3d24f1ac857a)) +* **deps:** update dependency dotenv to ^16.4.6 ([#1588](https://github.com/homarr-labs/homarr/issues/1588)) ([716a2ab](https://github.com/homarr-labs/homarr/commit/716a2ab9d1f949748a39858daa330e9df32597fa)) +* **deps:** update dependency dotenv to ^16.4.7 ([#1597](https://github.com/homarr-labs/homarr/issues/1597)) ([31cc1ab](https://github.com/homarr-labs/homarr/commit/31cc1abb51c8867f8f9934815f24de5e190f3142)) +* **deps:** update dependency drizzle-kit to ^0.20.16 ([#362](https://github.com/homarr-labs/homarr/issues/362)) ([f58d0dd](https://github.com/homarr-labs/homarr/commit/f58d0ddd94633468872ccd93f908e39f0ccc9337)) +* **deps:** update dependency drizzle-kit to ^0.20.17 ([#367](https://github.com/homarr-labs/homarr/issues/367)) ([04a3131](https://github.com/homarr-labs/homarr/commit/04a313186f63c4810fdc4f062a94aedf77bf526b)) +* **deps:** update dependency drizzle-kit to ^0.20.18 ([#449](https://github.com/homarr-labs/homarr/issues/449)) ([5eb1d71](https://github.com/homarr-labs/homarr/commit/5eb1d716ded4fb1529e35afa0741646874b74a43)) +* **deps:** update dependency drizzle-kit to ^0.21.1 ([#462](https://github.com/homarr-labs/homarr/issues/462)) ([1ce6fb0](https://github.com/homarr-labs/homarr/commit/1ce6fb0d0fd3f2770ea2a2f3dec7104b03e2e4ff)) +* **deps:** update dependency drizzle-kit to ^0.21.2 ([#495](https://github.com/homarr-labs/homarr/issues/495)) ([8166fdb](https://github.com/homarr-labs/homarr/commit/8166fdb8e22842125933e93325c27fd561f5df02)) +* **deps:** update dependency drizzle-kit to ^0.21.4 ([#535](https://github.com/homarr-labs/homarr/issues/535)) ([56b6d76](https://github.com/homarr-labs/homarr/commit/56b6d76f43e7cfaac080d029a68a55eb243970e7)) +* **deps:** update dependency drizzle-kit to ^0.22.0 ([#588](https://github.com/homarr-labs/homarr/issues/588)) ([d16281b](https://github.com/homarr-labs/homarr/commit/d16281bea7f71bb6ed3292bc47ed3b2d0103e814)) +* **deps:** update dependency drizzle-kit to ^0.22.1 ([#590](https://github.com/homarr-labs/homarr/issues/590)) ([51fb7cb](https://github.com/homarr-labs/homarr/commit/51fb7cb402e45ee9f9bebbc153ec1f37fc4d4158)) +* **deps:** update dependency drizzle-kit to ^0.22.2 ([#618](https://github.com/homarr-labs/homarr/issues/618)) ([f5aaf89](https://github.com/homarr-labs/homarr/commit/f5aaf89a3db6e10f2ac07d3ac29300ec81575e61)) +* **deps:** update dependency drizzle-kit to ^0.22.4 ([#625](https://github.com/homarr-labs/homarr/issues/625)) ([dda34e7](https://github.com/homarr-labs/homarr/commit/dda34e7764ace4f20ec9742289987dc43ee2573c)) +* **deps:** update dependency drizzle-kit to ^0.22.5 ([#631](https://github.com/homarr-labs/homarr/issues/631)) ([2462726](https://github.com/homarr-labs/homarr/commit/246272669e2cef242a7ddda2d6bbafe5313ca3ec)) +* **deps:** update dependency drizzle-kit to ^0.22.6 ([#636](https://github.com/homarr-labs/homarr/issues/636)) ([66ddb45](https://github.com/homarr-labs/homarr/commit/66ddb4597530479eac3d1e417d1fabac39ad6d8c)) +* **deps:** update dependency drizzle-kit to ^0.22.7 ([#652](https://github.com/homarr-labs/homarr/issues/652)) ([d985fbe](https://github.com/homarr-labs/homarr/commit/d985fbe69a0c1f57d574bd547567a3cd486174b4)) +* **deps:** update dependency drizzle-kit to ^0.22.8 ([#729](https://github.com/homarr-labs/homarr/issues/729)) ([be100b6](https://github.com/homarr-labs/homarr/commit/be100b610eabb3acbbbe0827dc07e012962c8ad8)) +* **deps:** update dependency drizzle-kit to ^0.23.0 ([#775](https://github.com/homarr-labs/homarr/issues/775)) ([f2c70a4](https://github.com/homarr-labs/homarr/commit/f2c70a4d0b6b827b54a7b12f53c01b1094548c2e)) +* **deps:** update dependency drizzle-kit to ^0.23.1 ([#888](https://github.com/homarr-labs/homarr/issues/888)) ([5f89d93](https://github.com/homarr-labs/homarr/commit/5f89d93db64c5033053da239b6e94c2731958924)) +* **deps:** update dependency drizzle-kit to ^0.23.2 ([#918](https://github.com/homarr-labs/homarr/issues/918)) ([d378ddb](https://github.com/homarr-labs/homarr/commit/d378ddb42bd43971d88b43cb90e24d83d69d9812)) +* **deps:** update dependency drizzle-kit to ^0.24.0 ([#939](https://github.com/homarr-labs/homarr/issues/939)) ([940a489](https://github.com/homarr-labs/homarr/commit/940a4890e26a0c080fb084e6026c0438d9df6914)) +* **deps:** update dependency drizzle-kit to ^0.24.1 ([#1012](https://github.com/homarr-labs/homarr/issues/1012)) ([cd0af7e](https://github.com/homarr-labs/homarr/commit/cd0af7e8f18d0e1b21f28bafd12aaf8bb06009c9)) +* **deps:** update dependency drizzle-kit to ^0.24.2 ([#1033](https://github.com/homarr-labs/homarr/issues/1033)) ([78b45c4](https://github.com/homarr-labs/homarr/commit/78b45c4a5bae9839990b12127fda9c7e15d07b25)) +* **deps:** update dependency drizzle-kit to ^0.25.0 ([#1261](https://github.com/homarr-labs/homarr/issues/1261)) ([635fadf](https://github.com/homarr-labs/homarr/commit/635fadfce9842f6e8bdc2e4757256e8bd27ae868)) +* **deps:** update dependency drizzle-kit to ^0.26.0 ([#1301](https://github.com/homarr-labs/homarr/issues/1301)) ([f2f31b5](https://github.com/homarr-labs/homarr/commit/f2f31b5ee08f1c50ccc125e0ace470c360984350)) +* **deps:** update dependency drizzle-kit to ^0.26.1 ([#1303](https://github.com/homarr-labs/homarr/issues/1303)) ([f50f46d](https://github.com/homarr-labs/homarr/commit/f50f46d4b7b32bbd89073433316f461cd475e367)) +* **deps:** update dependency drizzle-kit to ^0.26.2 ([#1305](https://github.com/homarr-labs/homarr/issues/1305)) ([da13d63](https://github.com/homarr-labs/homarr/commit/da13d6396967419466729b4abd5a839b14a17977)) +* **deps:** update dependency drizzle-kit to ^0.27.0 ([#1389](https://github.com/homarr-labs/homarr/issues/1389)) ([d3f9696](https://github.com/homarr-labs/homarr/commit/d3f9696127d21d75c16b52ed5a661909db54f705)) +* **deps:** update dependency drizzle-kit to ^0.27.1 ([#1395](https://github.com/homarr-labs/homarr/issues/1395)) ([3bfdc2d](https://github.com/homarr-labs/homarr/commit/3bfdc2ded499a465ce5cb078adc83ee71377bb5e)) +* **deps:** update dependency drizzle-kit to ^0.27.2 ([#1437](https://github.com/homarr-labs/homarr/issues/1437)) ([10cebff](https://github.com/homarr-labs/homarr/commit/10cebff4edb1ad9ff61f1a0ff27b6f360db7e05f)) +* **deps:** update dependency drizzle-kit to ^0.28.0 ([#1439](https://github.com/homarr-labs/homarr/issues/1439)) ([c6a1aee](https://github.com/homarr-labs/homarr/commit/c6a1aeef4d2e2939e262912eaa10018b5c1c4d60)) +* **deps:** update dependency drizzle-kit to ^0.28.1 ([#1480](https://github.com/homarr-labs/homarr/issues/1480)) ([acc440b](https://github.com/homarr-labs/homarr/commit/acc440bb8975fee8ce37e9290fbd4b993b6fddc6)) +* **deps:** update dependency drizzle-kit to ^0.29.0 ([#1591](https://github.com/homarr-labs/homarr/issues/1591)) ([a8e045b](https://github.com/homarr-labs/homarr/commit/a8e045b2239202d469c802b00cc4e4528932b8ee)) +* **deps:** update dependency drizzle-kit to ^0.29.1 ([#1603](https://github.com/homarr-labs/homarr/issues/1603)) ([2e23b3d](https://github.com/homarr-labs/homarr/commit/2e23b3dad84ff3eaa57ec26805b75fb271e12027)) +* **deps:** update dependency drizzle-kit to ^0.30.0 ([#1630](https://github.com/homarr-labs/homarr/issues/1630)) ([46ce061](https://github.com/homarr-labs/homarr/commit/46ce06155b4df45f3676998a813f3a7cecdba085)) +* **deps:** update dependency drizzle-kit to ^0.30.1 ([#1651](https://github.com/homarr-labs/homarr/issues/1651)) ([6418dfe](https://github.com/homarr-labs/homarr/commit/6418dfed382c88cdfe3ea0078ee18c5ae04ec721)) +* **deps:** update dependency drizzle-orm to ^0.29.4 ([#150](https://github.com/homarr-labs/homarr/issues/150)) ([4cf505f](https://github.com/homarr-labs/homarr/commit/4cf505f0c50faa74e699a29fd98eab88b20c14e1)) +* **deps:** update dependency drizzle-orm to ^0.29.5 ([#203](https://github.com/homarr-labs/homarr/issues/203)) ([4f41765](https://github.com/homarr-labs/homarr/commit/4f41765f1039daa2dcd8e9e0e26b3569539697f7)) +* **deps:** update dependency drizzle-orm to ^0.30.1 ([#210](https://github.com/homarr-labs/homarr/issues/210)) ([e34161f](https://github.com/homarr-labs/homarr/commit/e34161f33ecc7c58df4c26f383cf827fd663884b)) +* **deps:** update dependency drizzle-orm to ^0.30.10 ([#413](https://github.com/homarr-labs/homarr/issues/413)) ([14d941e](https://github.com/homarr-labs/homarr/commit/14d941e57ad70573954b276816d28e7d341df673)) +* **deps:** update dependency drizzle-orm to ^0.30.2 ([#232](https://github.com/homarr-labs/homarr/issues/232)) ([9046517](https://github.com/homarr-labs/homarr/commit/90465175f9cec9f95e14541e5c94e5eeadfc90a6)) +* **deps:** update dependency drizzle-orm to ^0.30.4 ([#250](https://github.com/homarr-labs/homarr/issues/250)) ([cdc4870](https://github.com/homarr-labs/homarr/commit/cdc4870925944317ff7f5f7ad8fee80433cd4e05)) +* **deps:** update dependency drizzle-orm to ^0.30.6 ([#282](https://github.com/homarr-labs/homarr/issues/282)) ([6ef58be](https://github.com/homarr-labs/homarr/commit/6ef58beead0137128cefe65d8119317572304b35)) +* **deps:** update dependency drizzle-orm to ^0.30.7 ([#303](https://github.com/homarr-labs/homarr/issues/303)) ([362257c](https://github.com/homarr-labs/homarr/commit/362257cf2b6b60027485f59df080bcdb83c3a85e)) +* **deps:** update dependency drizzle-orm to ^0.30.8 ([#339](https://github.com/homarr-labs/homarr/issues/339)) ([f50550b](https://github.com/homarr-labs/homarr/commit/f50550b3e135375e44b77ddc958f8ba3cf17d214)) +* **deps:** update dependency drizzle-orm to ^0.30.9 ([#370](https://github.com/homarr-labs/homarr/issues/370)) ([f5002c3](https://github.com/homarr-labs/homarr/commit/f5002c3265a9318770d9e6d41aa3583e84fc40d9)) +* **deps:** update dependency drizzle-orm to ^0.31.0 ([#589](https://github.com/homarr-labs/homarr/issues/589)) ([3b39e87](https://github.com/homarr-labs/homarr/commit/3b39e87212acedb8904584a3b3d55fbfd1434fd3)) +* **deps:** update dependency drizzle-orm to ^0.31.1 ([#619](https://github.com/homarr-labs/homarr/issues/619)) ([710197b](https://github.com/homarr-labs/homarr/commit/710197b3a02e06be6a60df71a180fd31b913858a)) +* **deps:** update dependency drizzle-orm to ^0.31.2 ([#632](https://github.com/homarr-labs/homarr/issues/632)) ([efd958d](https://github.com/homarr-labs/homarr/commit/efd958d6cbf5ec5dd0951ca33e87489aa5ec5c16)) +* **deps:** update dependency drizzle-orm to ^0.31.3 ([#758](https://github.com/homarr-labs/homarr/issues/758)) ([0a3d1e9](https://github.com/homarr-labs/homarr/commit/0a3d1e9e5e6682b438b5f3782bdaa305068e0cb7)) +* **deps:** update dependency drizzle-orm to ^0.31.4 ([#759](https://github.com/homarr-labs/homarr/issues/759)) ([8d42ca8](https://github.com/homarr-labs/homarr/commit/8d42ca8b5e63071ceaaf731198ee4633e77d96ac)) +* **deps:** update dependency drizzle-orm to ^0.32.0 ([#776](https://github.com/homarr-labs/homarr/issues/776)) ([3da5734](https://github.com/homarr-labs/homarr/commit/3da5734571de98ceaf2a915a56c177b564beedab)) +* **deps:** update dependency drizzle-orm to ^0.32.1 ([#859](https://github.com/homarr-labs/homarr/issues/859)) ([868b7b8](https://github.com/homarr-labs/homarr/commit/868b7b890e7affbb79935dc78eaac463d660e413)) +* **deps:** update dependency drizzle-orm to ^0.32.2 ([#919](https://github.com/homarr-labs/homarr/issues/919)) ([3f35163](https://github.com/homarr-labs/homarr/commit/3f35163481c85f434a60438ea7425a75b4b2285d)) +* **deps:** update dependency drizzle-orm to ^0.33.0 ([#938](https://github.com/homarr-labs/homarr/issues/938)) ([c399d83](https://github.com/homarr-labs/homarr/commit/c399d832e58edce29b5bc657ff10970c50123a85)) +* **deps:** update dependency drizzle-orm to ^0.34.0 ([#1262](https://github.com/homarr-labs/homarr/issues/1262)) ([23ee229](https://github.com/homarr-labs/homarr/commit/23ee229906b3dab7f7b93e93f76c11aa4ca89392)) +* **deps:** update dependency drizzle-orm to ^0.34.1 ([#1268](https://github.com/homarr-labs/homarr/issues/1268)) ([14d1ce8](https://github.com/homarr-labs/homarr/commit/14d1ce842a011dbe84259ba3509d9edfcdf573e0)) +* **deps:** update dependency drizzle-orm to ^0.35.0 ([#1302](https://github.com/homarr-labs/homarr/issues/1302)) ([c6daccb](https://github.com/homarr-labs/homarr/commit/c6daccbdf0b6a531274c0ab86779ec3f946ebf38)) +* **deps:** update dependency drizzle-orm to ^0.35.1 ([#1306](https://github.com/homarr-labs/homarr/issues/1306)) ([c053a37](https://github.com/homarr-labs/homarr/commit/c053a373b48ed6cc2f877c581e03264288bbe751)) +* **deps:** update dependency drizzle-orm to ^0.35.2 ([#1321](https://github.com/homarr-labs/homarr/issues/1321)) ([c8b1bb8](https://github.com/homarr-labs/homarr/commit/c8b1bb8d62e5c608e37cd28a85c0e7fc12eaf102)) +* **deps:** update dependency drizzle-orm to ^0.35.3 ([#1348](https://github.com/homarr-labs/homarr/issues/1348)) ([85a5ebd](https://github.com/homarr-labs/homarr/commit/85a5ebd288807373f38552d09392be184c3a8caf)) +* **deps:** update dependency drizzle-orm to ^0.36.0 ([#1390](https://github.com/homarr-labs/homarr/issues/1390)) ([3c3dbf5](https://github.com/homarr-labs/homarr/commit/3c3dbf51dc2e702a5eb302dac88986d61aba5881)) +* **deps:** update dependency drizzle-orm to ^0.36.1 ([#1440](https://github.com/homarr-labs/homarr/issues/1440)) ([7966476](https://github.com/homarr-labs/homarr/commit/7966476cad956b20940fd4d7d9df004dd886f7ff)) +* **deps:** update dependency drizzle-orm to ^0.36.2 ([#1481](https://github.com/homarr-labs/homarr/issues/1481)) ([9bc5856](https://github.com/homarr-labs/homarr/commit/9bc585648c8926123c718a3c922ad25c2cd7b897)) +* **deps:** update dependency drizzle-orm to ^0.36.3 ([#1487](https://github.com/homarr-labs/homarr/issues/1487)) ([2fb014f](https://github.com/homarr-labs/homarr/commit/2fb014f2df295cc16a01cc613db6d04fc483793c)) +* **deps:** update dependency drizzle-orm to ^0.36.4 ([#1522](https://github.com/homarr-labs/homarr/issues/1522)) ([50c9683](https://github.com/homarr-labs/homarr/commit/50c96833a697b09cadb8a7c64b2340e2c7b4d292)) +* **deps:** update dependency drizzle-orm to ^0.37.0 ([#1592](https://github.com/homarr-labs/homarr/issues/1592)) ([16cf818](https://github.com/homarr-labs/homarr/commit/16cf818449cd10f14e5235d5afdefaf0f8f01336)) +* **deps:** update dependency drizzle-orm to ^0.38.0 ([#1631](https://github.com/homarr-labs/homarr/issues/1631)) ([2825c9b](https://github.com/homarr-labs/homarr/commit/2825c9bf45c52cf7ec0785774038d9c01ac80cf9)) +* **deps:** update dependency drizzle-orm to ^0.38.1 ([#1646](https://github.com/homarr-labs/homarr/issues/1646)) ([7d0a224](https://github.com/homarr-labs/homarr/commit/7d0a224a3fe70c941ecea6dce9e376c395d8c5bb)) +* **deps:** update dependency drizzle-orm to ^0.38.2 ([#1652](https://github.com/homarr-labs/homarr/issues/1652)) ([da63d8e](https://github.com/homarr-labs/homarr/commit/da63d8ebf4b56caa34896d3b41d4784cd333123c)) +* **deps:** update dependency drizzle-zod to ^0.6.0 ([#1629](https://github.com/homarr-labs/homarr/issues/1629)) ([51c87c1](https://github.com/homarr-labs/homarr/commit/51c87c1a33ca5fc2e583e27c33dd8828ac134e41)) +* **deps:** update dependency eslint-config-turbo to ^1.12.2 ([#34](https://github.com/homarr-labs/homarr/issues/34)) ([837e390](https://github.com/homarr-labs/homarr/commit/837e3900fa905e3d96d1b7693a889eb99ac71c1f)) +* **deps:** update dependency eslint-config-turbo to ^2.0.13 ([#978](https://github.com/homarr-labs/homarr/issues/978)) ([497363b](https://github.com/homarr-labs/homarr/commit/497363b4912a1b0d42abd9414b7ff827223220a0)) +* **deps:** update dependency eslint-config-turbo to ^2.0.14 ([#984](https://github.com/homarr-labs/homarr/issues/984)) ([5e7ee1b](https://github.com/homarr-labs/homarr/commit/5e7ee1b657cb55826518841e1dcb25cce4050bad)) +* **deps:** update dependency eslint-plugin-import to ^2.29.1 ([#23](https://github.com/homarr-labs/homarr/issues/23)) ([f3bb990](https://github.com/homarr-labs/homarr/commit/f3bb990c4dcd40f367cf59a120cf8f6fd2658309)) +* **deps:** update dependency eslint-plugin-import to ^2.30.0 ([#1061](https://github.com/homarr-labs/homarr/issues/1061)) ([0f34bf8](https://github.com/homarr-labs/homarr/commit/0f34bf85a8476b73140c2b6b8baad87fa924ebdb)) +* **deps:** update dependency eslint-plugin-import to ^2.31.0 ([#1226](https://github.com/homarr-labs/homarr/issues/1226)) ([9d20362](https://github.com/homarr-labs/homarr/commit/9d20362cf1323c57e7ed7dc9ba4e234c51ccc1d0)) +* **deps:** update dependency eslint-plugin-jsx-a11y to ^6.10.0 ([#1066](https://github.com/homarr-labs/homarr/issues/1066)) ([bef5832](https://github.com/homarr-labs/homarr/commit/bef5832470012ff8eeddd2e95822800f4c349491)) +* **deps:** update dependency eslint-plugin-jsx-a11y to ^6.10.1 ([#1343](https://github.com/homarr-labs/homarr/issues/1343)) ([564096e](https://github.com/homarr-labs/homarr/commit/564096e463b25c243c7f2adb2c9b059c940365fe)) +* **deps:** update dependency eslint-plugin-jsx-a11y to ^6.10.2 ([#1374](https://github.com/homarr-labs/homarr/issues/1374)) ([3127182](https://github.com/homarr-labs/homarr/commit/3127182f5c16a6c792557c9f458b7e20511cdf8f)) +* **deps:** update dependency eslint-plugin-jsx-a11y to ^6.9.0 ([#695](https://github.com/homarr-labs/homarr/issues/695)) ([d78b581](https://github.com/homarr-labs/homarr/commit/d78b581104009d92a835d99978e935059682b7e2)) +* **deps:** update dependency eslint-plugin-react to ^7.34.0 ([#189](https://github.com/homarr-labs/homarr/issues/189)) ([4cd897d](https://github.com/homarr-labs/homarr/commit/4cd897d521ba11a69cc5f7960746dfbb5d10bd44)) +* **deps:** update dependency eslint-plugin-react to ^7.34.1 ([#240](https://github.com/homarr-labs/homarr/issues/240)) ([404f294](https://github.com/homarr-labs/homarr/commit/404f2945dc0db083ad4adb941f436b7cbd04ce6d)) +* **deps:** update dependency eslint-plugin-react to ^7.34.2 ([#567](https://github.com/homarr-labs/homarr/issues/567)) ([9e499bd](https://github.com/homarr-labs/homarr/commit/9e499bd30ba5a8d22f15ef7e4e467090268125e7)) +* **deps:** update dependency eslint-plugin-react to ^7.34.3 ([#688](https://github.com/homarr-labs/homarr/issues/688)) ([fdcf3a8](https://github.com/homarr-labs/homarr/commit/fdcf3a89c929de9d441898f31bfeb141613fe9ff)) +* **deps:** update dependency eslint-plugin-react to ^7.34.4 ([#809](https://github.com/homarr-labs/homarr/issues/809)) ([fd64201](https://github.com/homarr-labs/homarr/commit/fd642011ba8bd11e03de46e35de387da819d5c98)) +* **deps:** update dependency eslint-plugin-react to ^7.35.0 ([#835](https://github.com/homarr-labs/homarr/issues/835)) ([37a8a0f](https://github.com/homarr-labs/homarr/commit/37a8a0fe5aebe813ba9be05643b1333485e20d5f)) +* **deps:** update dependency eslint-plugin-react to ^7.35.1 ([#1059](https://github.com/homarr-labs/homarr/issues/1059)) ([4c52cc3](https://github.com/homarr-labs/homarr/commit/4c52cc338e0bca1d9a80d23a3b409526109206b5)) +* **deps:** update dependency eslint-plugin-react to ^7.35.2 ([#1062](https://github.com/homarr-labs/homarr/issues/1062)) ([1249fb9](https://github.com/homarr-labs/homarr/commit/1249fb96122597f2d40cc5719d687354b7c1411c)) +* **deps:** update dependency eslint-plugin-react to ^7.36.0 ([#1111](https://github.com/homarr-labs/homarr/issues/1111)) ([cd43253](https://github.com/homarr-labs/homarr/commit/cd43253061c4162d1c1835b3cbb843250d0d5b51)) +* **deps:** update dependency eslint-plugin-react to ^7.36.1 ([#1115](https://github.com/homarr-labs/homarr/issues/1115)) ([2351617](https://github.com/homarr-labs/homarr/commit/2351617177d334467e26c08c378da4994f21f581)) +* **deps:** update dependency eslint-plugin-react to ^7.37.0 ([#1189](https://github.com/homarr-labs/homarr/issues/1189)) ([2245e7a](https://github.com/homarr-labs/homarr/commit/2245e7aae8fa75730706d2e73c30870ac6d0ec77)) +* **deps:** update dependency eslint-plugin-react to ^7.37.1 ([#1213](https://github.com/homarr-labs/homarr/issues/1213)) ([4a8ed13](https://github.com/homarr-labs/homarr/commit/4a8ed13a87ff44aed89754fbc171db0641cf78d8)) +* **deps:** update dependency eslint-plugin-react to ^7.37.2 ([#1354](https://github.com/homarr-labs/homarr/issues/1354)) ([1a2f0ad](https://github.com/homarr-labs/homarr/commit/1a2f0adfc8d22eade925409aac63ccb9d8885c08)) +* **deps:** update dependency eslint-plugin-react-hooks to ^5.1.0 ([#1614](https://github.com/homarr-labs/homarr/issues/1614)) ([6d6840f](https://github.com/homarr-labs/homarr/commit/6d6840f85e5f38b2f7ec990cf7402de86ea84166)) +* **deps:** update dependency eslint-plugin-react-hooks to v5 ([#1280](https://github.com/homarr-labs/homarr/issues/1280)) ([a87c937](https://github.com/homarr-labs/homarr/commit/a87c937b69550160cc10e9991256c032245fcbfc)) +* **deps:** update dependency flag-icons to ^7.2.2 ([#533](https://github.com/homarr-labs/homarr/issues/533)) ([f45fa50](https://github.com/homarr-labs/homarr/commit/f45fa500248d810aadb05cf2ad8ecd247bcae60b)) +* **deps:** update dependency flag-icons to ^7.2.3 ([#575](https://github.com/homarr-labs/homarr/issues/575)) ([fe43e74](https://github.com/homarr-labs/homarr/commit/fe43e74c5399942c6cb099352fc1098fe1261fc4)) +* **deps:** update dependency glob to ^10.3.14 ([#461](https://github.com/homarr-labs/homarr/issues/461)) ([8bd08d3](https://github.com/homarr-labs/homarr/commit/8bd08d39ca106b225aee123278b1387d037feedc)) +* **deps:** update dependency glob to ^10.3.15 ([#478](https://github.com/homarr-labs/homarr/issues/478)) ([333b124](https://github.com/homarr-labs/homarr/commit/333b124f678818b346816bbd29f6bc78f20e175d)) +* **deps:** update dependency glob to ^10.4.1 ([#531](https://github.com/homarr-labs/homarr/issues/531)) ([a0322bf](https://github.com/homarr-labs/homarr/commit/a0322bfd994c9fae57f7d8f7e219d0ac70d7868c)) +* **deps:** update dependency glob to ^10.4.2 ([#689](https://github.com/homarr-labs/homarr/issues/689)) ([0bfc0c5](https://github.com/homarr-labs/homarr/commit/0bfc0c5d2543677b7efe6fcec1af7c72e178af1b)) +* **deps:** update dependency glob to ^10.4.3 ([#751](https://github.com/homarr-labs/homarr/issues/751)) ([61cbb74](https://github.com/homarr-labs/homarr/commit/61cbb74d14b93ee9e52a2170a4ff01c93dcd09c1)) +* **deps:** update dependency glob to ^10.4.4 ([#765](https://github.com/homarr-labs/homarr/issues/765)) ([74b017d](https://github.com/homarr-labs/homarr/commit/74b017d9f4b39b9d6de0d76f180fcf5c6f145215)) +* **deps:** update dependency glob to ^10.4.5 ([#768](https://github.com/homarr-labs/homarr/issues/768)) ([4cee3df](https://github.com/homarr-labs/homarr/commit/4cee3dfbe00cd984e31a732e88bc581606ab37e9)) +* **deps:** update dependency glob to v10.4.1 ([#544](https://github.com/homarr-labs/homarr/issues/544)) ([7b46d92](https://github.com/homarr-labs/homarr/commit/7b46d92d4f992584c813cc2d7e99813f53a8b72e)) +* **deps:** update dependency glob to v11 ([#766](https://github.com/homarr-labs/homarr/issues/766)) ([0169501](https://github.com/homarr-labs/homarr/commit/0169501676aa8d1170ee44aa0bb8134d994d472e)) +* **deps:** update dependency ioredis to v5.4.1 ([#357](https://github.com/homarr-labs/homarr/issues/357)) ([20f44d3](https://github.com/homarr-labs/homarr/commit/20f44d3494ffbe76994e6d541d31ced2cfd8abd3)) +* **deps:** update dependency jotai to ^2.10.0 ([#1155](https://github.com/homarr-labs/homarr/issues/1155)) ([dd9080f](https://github.com/homarr-labs/homarr/commit/dd9080f781b782a1a112c53f1af1e987fde22e32)) +* **deps:** update dependency jotai to ^2.10.1 ([#1295](https://github.com/homarr-labs/homarr/issues/1295)) ([ba81e5e](https://github.com/homarr-labs/homarr/commit/ba81e5e35a046e8dda1c2660beff1e1644d4d32a)) +* **deps:** update dependency jotai to ^2.10.2 ([#1464](https://github.com/homarr-labs/homarr/issues/1464)) ([75d764b](https://github.com/homarr-labs/homarr/commit/75d764bca83e41bc932a4aed5244bf6922d2d070)) +* **deps:** update dependency jotai to ^2.10.3 ([#1509](https://github.com/homarr-labs/homarr/issues/1509)) ([ae61377](https://github.com/homarr-labs/homarr/commit/ae6137710f51c3f53127a779793ce2d1566e7e0d)) +* **deps:** update dependency jotai to ^2.10.4 ([#1672](https://github.com/homarr-labs/homarr/issues/1672)) ([b7b5da6](https://github.com/homarr-labs/homarr/commit/b7b5da654bee37f1aceda2718bb92646fc4f472e)) +* **deps:** update dependency jotai to ^2.6.4 ([#24](https://github.com/homarr-labs/homarr/issues/24)) ([a7d5c36](https://github.com/homarr-labs/homarr/commit/a7d5c36aa798ea9cf03579b752fa3640fb4f79cf)) +* **deps:** update dependency jotai to ^2.6.5 ([#106](https://github.com/homarr-labs/homarr/issues/106)) ([fc8d907](https://github.com/homarr-labs/homarr/commit/fc8d9071aa91afdb00b17b1de13a61241aa93705)) +* **deps:** update dependency jotai to ^2.7.0 ([#162](https://github.com/homarr-labs/homarr/issues/162)) ([af203e1](https://github.com/homarr-labs/homarr/commit/af203e19e76450e990384443e9d9de1e1df7748f)) +* **deps:** update dependency jotai to ^2.7.1 ([#238](https://github.com/homarr-labs/homarr/issues/238)) ([75ab823](https://github.com/homarr-labs/homarr/commit/75ab8230196272e2c713b948a614b3ac0ce62f09)) +* **deps:** update dependency jotai to ^2.7.2 ([#284](https://github.com/homarr-labs/homarr/issues/284)) ([d06528f](https://github.com/homarr-labs/homarr/commit/d06528f3119e18ddf09ab210fa2dd7ed1570bd5f)) +* **deps:** update dependency jotai to ^2.8.0 ([#326](https://github.com/homarr-labs/homarr/issues/326)) ([27c858d](https://github.com/homarr-labs/homarr/commit/27c858dc815f8d450310a219d2ec44093f33b293)) +* **deps:** update dependency jotai to ^2.8.1 ([#534](https://github.com/homarr-labs/homarr/issues/534)) ([c668d0a](https://github.com/homarr-labs/homarr/commit/c668d0a76502ce082990e7e64b7e7c801f33134f)) +* **deps:** update dependency jotai to ^2.8.2 ([#561](https://github.com/homarr-labs/homarr/issues/561)) ([6f47adf](https://github.com/homarr-labs/homarr/commit/6f47adff8abfdd1e94207a73fa6638e9aa11d396)) +* **deps:** update dependency jotai to ^2.8.3 ([#615](https://github.com/homarr-labs/homarr/issues/615)) ([d993e8d](https://github.com/homarr-labs/homarr/commit/d993e8d81136f8fb42a27b082d41b00bd5c2668a)) +* **deps:** update dependency jotai to ^2.8.4 ([#721](https://github.com/homarr-labs/homarr/issues/721)) ([e46bfd9](https://github.com/homarr-labs/homarr/commit/e46bfd9146929421434ce847352ce8b7a08106f7)) +* **deps:** update dependency jotai to ^2.9.0 ([#767](https://github.com/homarr-labs/homarr/issues/767)) ([5e3dc1e](https://github.com/homarr-labs/homarr/commit/5e3dc1e44dbe229870637c58188c6b6057092a95)) +* **deps:** update dependency jotai to ^2.9.1 ([#858](https://github.com/homarr-labs/homarr/issues/858)) ([fc5f02b](https://github.com/homarr-labs/homarr/commit/fc5f02b022786e7ec75c900d33c2386c71a77e53)) +* **deps:** update dependency jotai to ^2.9.2 ([#933](https://github.com/homarr-labs/homarr/issues/933)) ([c2bf677](https://github.com/homarr-labs/homarr/commit/c2bf6779c0664720a180192813ed4bfab02bf0e1)) +* **deps:** update dependency jotai to ^2.9.3 ([#969](https://github.com/homarr-labs/homarr/issues/969)) ([9d62fb4](https://github.com/homarr-labs/homarr/commit/9d62fb42c470d09c8891bdb8997af75926f3d03d)) +* **deps:** update dependency ldapts to v7.1.0 ([#839](https://github.com/homarr-labs/homarr/issues/839)) ([c33086d](https://github.com/homarr-labs/homarr/commit/c33086d8b55be9ba605c1f2c7429e44bd6ddada1)) +* **deps:** update dependency ldapts to v7.1.1 ([#1038](https://github.com/homarr-labs/homarr/issues/1038)) ([b507bf2](https://github.com/homarr-labs/homarr/commit/b507bf2ae67120ab7089297d53ce41c26314ca30)) +* **deps:** update dependency ldapts to v7.2.0 ([#1097](https://github.com/homarr-labs/homarr/issues/1097)) ([9d5007c](https://github.com/homarr-labs/homarr/commit/9d5007c05cb3216c9acbb1233326be1cd8d1cbb8)) +* **deps:** update dependency ldapts to v7.2.1 ([#1211](https://github.com/homarr-labs/homarr/issues/1211)) ([1b0d927](https://github.com/homarr-labs/homarr/commit/1b0d927e8866376f2f6851f78f9ef5ab67eb5ad2)) +* **deps:** update dependency ldapts to v7.2.2 ([#1574](https://github.com/homarr-labs/homarr/issues/1574)) ([d5f7621](https://github.com/homarr-labs/homarr/commit/d5f76218cd314769fb312e60de824acc1f90914e)) +* **deps:** update dependency mantine-modal-manager to ^7.5.2 ([#72](https://github.com/homarr-labs/homarr/issues/72)) ([f704bad](https://github.com/homarr-labs/homarr/commit/f704bad36e103fc349b0303d9f79440d076c1e88)) +* **deps:** update dependency mantine-modal-manager to ^7.5.3 ([#132](https://github.com/homarr-labs/homarr/issues/132)) ([4565f38](https://github.com/homarr-labs/homarr/commit/4565f38bef6e940c2856b7213dae92cfff659a7b)) +* **deps:** update dependency mantine-modal-manager to ^7.6.1 ([#171](https://github.com/homarr-labs/homarr/issues/171)) ([acf9d18](https://github.com/homarr-labs/homarr/commit/acf9d1803f7112520a87fe854ef65d7f67dd5cb9)) +* **deps:** update dependency mantine-modal-manager to ^7.6.2 ([#222](https://github.com/homarr-labs/homarr/issues/222)) ([b63b2c8](https://github.com/homarr-labs/homarr/commit/b63b2c8e9021d8e789789471a061f1f40320a135)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.0 ([#149](https://github.com/homarr-labs/homarr/issues/149)) ([f211ffb](https://github.com/homarr-labs/homarr/commit/f211ffbf78d9039fc5e68a8219cef134ad3a5fa5)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.1 ([#277](https://github.com/homarr-labs/homarr/issues/277)) ([e1b62ec](https://github.com/homarr-labs/homarr/commit/e1b62ecd5300b54523e9c9672b53b9ac49a3996e)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.2 ([#466](https://github.com/homarr-labs/homarr/issues/466)) ([627f895](https://github.com/homarr-labs/homarr/commit/627f8957e546a37520f0122b62664704f9d286c3)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.3 ([#488](https://github.com/homarr-labs/homarr/issues/488)) ([8b84695](https://github.com/homarr-labs/homarr/commit/8b84695079220228e99317d9cd12d613e6af4043)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.4 ([#593](https://github.com/homarr-labs/homarr/issues/593)) ([fef070c](https://github.com/homarr-labs/homarr/commit/fef070c42cbff79e8301fdbe5623482d2ed01521)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.5 ([#661](https://github.com/homarr-labs/homarr/issues/661)) ([37ebcfe](https://github.com/homarr-labs/homarr/commit/37ebcfe318540e6941ea62a40a001aaed19e0abf)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.6 ([#837](https://github.com/homarr-labs/homarr/issues/837)) ([5da74ca](https://github.com/homarr-labs/homarr/commit/5da74ca7e057632b9f693061c3855e1fb348c5bb)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.7 ([#1287](https://github.com/homarr-labs/homarr/issues/1287)) ([6f97741](https://github.com/homarr-labs/homarr/commit/6f97741862ad2d25d852858e509f78d0ff0a7e01)) +* **deps:** update dependency mysql2 to ^3.9.3 ([#273](https://github.com/homarr-labs/homarr/issues/273)) ([b0bba14](https://github.com/homarr-labs/homarr/commit/b0bba1418b802b238eb8724987ce6bbb1a27f195)) +* **deps:** update dependency mysql2 to v3.10.0 ([#585](https://github.com/homarr-labs/homarr/issues/585)) ([ff84c2b](https://github.com/homarr-labs/homarr/commit/ff84c2bdb77db1e825fd3a6c7be303f2c450edbe)) +* **deps:** update dependency mysql2 to v3.10.1 ([#665](https://github.com/homarr-labs/homarr/issues/665)) ([10acb2b](https://github.com/homarr-labs/homarr/commit/10acb2bc7645048c8265a78075eef6ac6f0b1fe0)) +* **deps:** update dependency mysql2 to v3.10.2 ([#731](https://github.com/homarr-labs/homarr/issues/731)) ([663eb0b](https://github.com/homarr-labs/homarr/commit/663eb0bf5b986a71c36a36f86e5011835112d2b7)) +* **deps:** update dependency mysql2 to v3.10.3 ([#816](https://github.com/homarr-labs/homarr/issues/816)) ([636d3c6](https://github.com/homarr-labs/homarr/commit/636d3c670cc387a26112d58a33576cdcd1e5b5d2)) +* **deps:** update dependency mysql2 to v3.11.0 ([#874](https://github.com/homarr-labs/homarr/issues/874)) ([c973a3b](https://github.com/homarr-labs/homarr/commit/c973a3bfa540397b6882e0b4bdd5ce6c2a193e2f)) +* **deps:** update dependency mysql2 to v3.11.1 ([#1094](https://github.com/homarr-labs/homarr/issues/1094)) ([40af170](https://github.com/homarr-labs/homarr/commit/40af17083aba37c2e02f81f295c1192f70d0a691)) +* **deps:** update dependency mysql2 to v3.11.2 ([#1098](https://github.com/homarr-labs/homarr/issues/1098)) ([d2a30db](https://github.com/homarr-labs/homarr/commit/d2a30db3c1bd21decba0624c13635b092afabf4f)) +* **deps:** update dependency mysql2 to v3.11.3 ([#1132](https://github.com/homarr-labs/homarr/issues/1132)) ([6c39612](https://github.com/homarr-labs/homarr/commit/6c39612c0731c0728b62057eb240543ae4a1ec15)) +* **deps:** update dependency mysql2 to v3.11.4 ([#1430](https://github.com/homarr-labs/homarr/issues/1430)) ([7e1305c](https://github.com/homarr-labs/homarr/commit/7e1305c6a99e96900b447591ebeb48393186483d)) +* **deps:** update dependency mysql2 to v3.11.5 ([#1567](https://github.com/homarr-labs/homarr/issues/1567)) ([cebc925](https://github.com/homarr-labs/homarr/commit/cebc925b879d22a662be326c6b8b5048907dd92c)) +* **deps:** update dependency mysql2 to v3.9.6 ([#311](https://github.com/homarr-labs/homarr/issues/311)) ([a6d65fd](https://github.com/homarr-labs/homarr/commit/a6d65fda6b9ed31a08a420e51718dbd36f8da7ae)) +* **deps:** update dependency mysql2 to v3.9.7 ([#369](https://github.com/homarr-labs/homarr/issues/369)) ([51ea67f](https://github.com/homarr-labs/homarr/commit/51ea67fc883a6b2e2164f46a6a3e1e41a961a834)) +* **deps:** update dependency mysql2 to v3.9.8 ([#558](https://github.com/homarr-labs/homarr/issues/558)) ([3f364ca](https://github.com/homarr-labs/homarr/commit/3f364cacedb556cb58c8b15c1a81cecca7cb22e7)) +* **deps:** update dependency mysql2 to v3.9.9 ([#576](https://github.com/homarr-labs/homarr/issues/576)) ([612b8d8](https://github.com/homarr-labs/homarr/commit/612b8d8c6eff4adaec8e359b4733af31c69e10ae)) +* **deps:** update dependency next to ^14.1.1-canary.59 ([#121](https://github.com/homarr-labs/homarr/issues/121)) ([4f911c4](https://github.com/homarr-labs/homarr/commit/4f911c4f56be487726359eb00e7d34bff426b596)) +* **deps:** update dependency next to ^14.1.1-canary.61 ([#138](https://github.com/homarr-labs/homarr/issues/138)) ([6a02afb](https://github.com/homarr-labs/homarr/commit/6a02afbfe2daded6a86ee13423ae4fdeb7ed14a5)) +* **deps:** update dependency next to ^14.1.1-canary.62 ([#140](https://github.com/homarr-labs/homarr/issues/140)) ([fde634d](https://github.com/homarr-labs/homarr/commit/fde634d834c58501435ccab7409693fd9f5fecbc)) +* **deps:** update dependency next to ^14.1.1-canary.63 ([#146](https://github.com/homarr-labs/homarr/issues/146)) ([4d01136](https://github.com/homarr-labs/homarr/commit/4d011364bf61971392b541d6758585eb25f5c68c)) +* **deps:** update dependency next-auth to v5.0.0-beta.11 ([#91](https://github.com/homarr-labs/homarr/issues/91)) ([336dc38](https://github.com/homarr-labs/homarr/commit/336dc38b2d0f6932eaacee354640ffa5ec92729e)) +* **deps:** update dependency next-auth to v5.0.0-beta.13 ([#108](https://github.com/homarr-labs/homarr/issues/108)) ([64194c5](https://github.com/homarr-labs/homarr/commit/64194c51edbca639193d9865fc6d4c7e07a1b3bf)) +* **deps:** update dependency next-auth to v5.0.0-beta.15 ([#167](https://github.com/homarr-labs/homarr/issues/167)) ([70f34ef](https://github.com/homarr-labs/homarr/commit/70f34efd5385e641bf5f9f043cbd18e6e9bf2cce)) +* **deps:** update dependency next-auth to v5.0.0-beta.16 ([#268](https://github.com/homarr-labs/homarr/issues/268)) ([ba27871](https://github.com/homarr-labs/homarr/commit/ba278717650a20381912070624aa390594410578)) +* **deps:** update dependency next-auth to v5.0.0-beta.17 ([#383](https://github.com/homarr-labs/homarr/issues/383)) ([bfdc8d5](https://github.com/homarr-labs/homarr/commit/bfdc8d584b9abef5bf3b417ad8eba951404856ce)) +* **deps:** update dependency next-auth to v5.0.0-beta.19 ([#605](https://github.com/homarr-labs/homarr/issues/605)) ([20874cb](https://github.com/homarr-labs/homarr/commit/20874cb96d7b45ca33bd86e3670d81dc71688390)) +* **deps:** update dependency next-auth to v5.0.0-beta.20 ([#878](https://github.com/homarr-labs/homarr/issues/878)) ([a0c5545](https://github.com/homarr-labs/homarr/commit/a0c55459d1e3dbec93329ca9c99acf652683a08b)) +* **deps:** update dependency next-auth to v5.0.0-beta.21 ([#1131](https://github.com/homarr-labs/homarr/issues/1131)) ([5a73700](https://github.com/homarr-labs/homarr/commit/5a73700f571b6628161b55380fd08da93cede0a8)) +* **deps:** update dependency next-auth to v5.0.0-beta.22 ([#1195](https://github.com/homarr-labs/homarr/issues/1195)) ([c3e1ce3](https://github.com/homarr-labs/homarr/commit/c3e1ce30fa15ff7cee29d842a2f6c8688f9639ba)) +* **deps:** update dependency next-auth to v5.0.0-beta.23 ([#1325](https://github.com/homarr-labs/homarr/issues/1325)) ([c52fd97](https://github.com/homarr-labs/homarr/commit/c52fd972b7157d6132923cff5c2c350ca32d8229)) +* **deps:** update dependency next-auth to v5.0.0-beta.25 ([#1341](https://github.com/homarr-labs/homarr/issues/1341)) ([278107a](https://github.com/homarr-labs/homarr/commit/278107a1a4b6c5f6b391a25704314c613212fbab)) +* **deps:** update dependency next-auth to v5.0.0-beta.8 ([#60](https://github.com/homarr-labs/homarr/issues/60)) ([544a6d9](https://github.com/homarr-labs/homarr/commit/544a6d992691c6ba398b236fdd4f59111fa64e5a)) +* **deps:** update dependency next-auth to v5.0.0-beta.9 ([#68](https://github.com/homarr-labs/homarr/issues/68)) ([cc52c2b](https://github.com/homarr-labs/homarr/commit/cc52c2ba785e78f251bc6cfac637bc4285b77f0f)) +* **deps:** update dependency next-international to ^1.2.3 ([#35](https://github.com/homarr-labs/homarr/issues/35)) ([b8fe041](https://github.com/homarr-labs/homarr/commit/b8fe04144fea31a934a59094c52d7c6fc4cfffbb)) +* **deps:** update dependency next-international to ^1.2.4 ([#76](https://github.com/homarr-labs/homarr/issues/76)) ([60d5ebb](https://github.com/homarr-labs/homarr/commit/60d5ebbc11fd8a8f5494e303335e2bd46ec09a3d)) +* **deps:** update dependency next-intl to v3.23.5 ([#1376](https://github.com/homarr-labs/homarr/issues/1376)) ([a4ae38b](https://github.com/homarr-labs/homarr/commit/a4ae38b5e4bf09303e659f4eacac0c81ea3bea07)) +* **deps:** update dependency next-intl to v3.24.0 ([#1392](https://github.com/homarr-labs/homarr/issues/1392)) ([4e9b0af](https://github.com/homarr-labs/homarr/commit/4e9b0af54c2f3bc5a23b9cecfc570b74787af478)) +* **deps:** update dependency next-intl to v3.25.0 ([#1448](https://github.com/homarr-labs/homarr/issues/1448)) ([8722109](https://github.com/homarr-labs/homarr/commit/87221093d25df689472ed86184d528eb815e10d1)) +* **deps:** update dependency next-intl to v3.25.1 ([#1473](https://github.com/homarr-labs/homarr/issues/1473)) ([7a9e9a1](https://github.com/homarr-labs/homarr/commit/7a9e9a1e0de02a678787c2509e09c748d7a0042b)) +* **deps:** update dependency next-intl to v3.25.2 ([#1545](https://github.com/homarr-labs/homarr/issues/1545)) ([b6c28da](https://github.com/homarr-labs/homarr/commit/b6c28da32b0cdcfe181db8e698e9f28997cebc52)) +* **deps:** update dependency next-intl to v3.25.3 ([#1551](https://github.com/homarr-labs/homarr/issues/1551)) ([907c28c](https://github.com/homarr-labs/homarr/commit/907c28c945bc7e7ac2c600f7c7a04750ff7465d6)) +* **deps:** update dependency next-intl to v3.26.0 ([#1619](https://github.com/homarr-labs/homarr/issues/1619)) ([58008c1](https://github.com/homarr-labs/homarr/commit/58008c1e2fc9a20401f45288f3beedb80a466351)) +* **deps:** update dependency next-intl to v3.26.1 ([#1644](https://github.com/homarr-labs/homarr/issues/1644)) ([5194867](https://github.com/homarr-labs/homarr/commit/51948677fa1fd0b6ea7410cdbb6f6f77a1f87db0)) +* **deps:** update dependency node-cron to ^3.0.3 ([#309](https://github.com/homarr-labs/homarr/issues/309)) ([48f45d7](https://github.com/homarr-labs/homarr/commit/48f45d73775f0b872613e01edc3499a2a2f7c924)) +* **deps:** update dependency postcss-preset-mantine to ^1.13.0 ([#36](https://github.com/homarr-labs/homarr/issues/36)) ([d73e7a3](https://github.com/homarr-labs/homarr/commit/d73e7a3c3fc278e30f723a5d2b4bdedf667cc5ce)) +* **deps:** update dependency postcss-preset-mantine to ^1.14.4 ([#336](https://github.com/homarr-labs/homarr/issues/336)) ([49e45e8](https://github.com/homarr-labs/homarr/commit/49e45e8122147b2eeebc5ee025bdfd91e7cb4836)) +* **deps:** update dependency postcss-preset-mantine to ^1.15.0 ([#387](https://github.com/homarr-labs/homarr/issues/387)) ([84175e6](https://github.com/homarr-labs/homarr/commit/84175e6a7e4fb8ce3cbcb89ee4d713b6531d3ac0)) +* **deps:** update dependency postcss-preset-mantine to ^1.16.0 ([#827](https://github.com/homarr-labs/homarr/issues/827)) ([002d011](https://github.com/homarr-labs/homarr/commit/002d011b18ffa74f29d06a6bef3d08d6e997735d)) +* **deps:** update dependency postcss-preset-mantine to ^1.17.0 ([#843](https://github.com/homarr-labs/homarr/issues/843)) ([41e5760](https://github.com/homarr-labs/homarr/commit/41e576039f8400e671dd52362a6b2ba9ce605a9f)) +* **deps:** update dependency prettier to ^3.2.4 ([#37](https://github.com/homarr-labs/homarr/issues/37)) ([9aaec54](https://github.com/homarr-labs/homarr/commit/9aaec5495dfacbbf2a313d142e23394bf8c78d43)) +* **deps:** update dependency prettier to ^3.2.5 ([#53](https://github.com/homarr-labs/homarr/issues/53)) ([15f0801](https://github.com/homarr-labs/homarr/commit/15f08011a6c2e7fd7274bc28b9d559269cb03f7e)) +* **deps:** update dependency prettier to ^3.3.0 ([#594](https://github.com/homarr-labs/homarr/issues/594)) ([b1b839f](https://github.com/homarr-labs/homarr/commit/b1b839fcd866f0c157e14d59a47e0cdbeb1ff444)) +* **deps:** update dependency prettier to ^3.3.1 ([#623](https://github.com/homarr-labs/homarr/issues/623)) ([8f551aa](https://github.com/homarr-labs/homarr/commit/8f551aa4856065c3a7e1e7e763781863ed2db972)) +* **deps:** update dependency prettier to ^3.3.2 ([#656](https://github.com/homarr-labs/homarr/issues/656)) ([d69cda0](https://github.com/homarr-labs/homarr/commit/d69cda03136f29744b4935e28bdfc4dcb24424fb)) +* **deps:** update dependency prettier to ^3.3.3 ([#805](https://github.com/homarr-labs/homarr/issues/805)) ([66036b0](https://github.com/homarr-labs/homarr/commit/66036b08bcfecb5fb4e2e588bd74e935a387a34c)) +* **deps:** update dependency prettier to ^3.4.0 ([#1550](https://github.com/homarr-labs/homarr/issues/1550)) ([2e9b99d](https://github.com/homarr-labs/homarr/commit/2e9b99dff76e675a5e28ca22dddc467fe94a5f6d)) +* **deps:** update dependency prettier to ^3.4.1 ([#1554](https://github.com/homarr-labs/homarr/issues/1554)) ([27b8f65](https://github.com/homarr-labs/homarr/commit/27b8f65238eca00e6f51f681c4689199cae22728)) +* **deps:** update dependency prettier to ^3.4.2 ([#1602](https://github.com/homarr-labs/homarr/issues/1602)) ([bbec013](https://github.com/homarr-labs/homarr/commit/bbec01385f8ba609efe83712c61df4c0b483badb)) +* **deps:** update dependency react-error-boundary to ^4.1.0 ([#1304](https://github.com/homarr-labs/homarr/issues/1304)) ([9fa4bef](https://github.com/homarr-labs/homarr/commit/9fa4bef2a4a9edf68299f3095a60d4eaaf144f65)) +* **deps:** update dependency react-error-boundary to ^4.1.1 ([#1315](https://github.com/homarr-labs/homarr/issues/1315)) ([3b5082c](https://github.com/homarr-labs/homarr/commit/3b5082c107771ade24917da61b87321bfc40995d)) +* **deps:** update dependency react-error-boundary to ^4.1.2 ([#1334](https://github.com/homarr-labs/homarr/issues/1334)) ([98f1c33](https://github.com/homarr-labs/homarr/commit/98f1c333186c44f5f1e4bfc6452451edb990cbaa)) +* **deps:** update dependency react-simple-code-editor to ^0.14.0 ([#738](https://github.com/homarr-labs/homarr/issues/738)) ([d32075d](https://github.com/homarr-labs/homarr/commit/d32075d410af5111e4e33c09be7facdd0d44d196)) +* **deps:** update dependency react-simple-code-editor to ^0.14.1 ([#746](https://github.com/homarr-labs/homarr/issues/746)) ([9375738](https://github.com/homarr-labs/homarr/commit/9375738e0552357f53b52c1637732494f568f5a0)) +* **deps:** update dependency reflect-metadata to ^0.2.1 ([#182](https://github.com/homarr-labs/homarr/issues/182)) ([9ee96a1](https://github.com/homarr-labs/homarr/commit/9ee96a14628b3b450d45b07ad45863375b899cde)) +* **deps:** update dependency rimraf to v5 ([#186](https://github.com/homarr-labs/homarr/issues/186)) ([f4b93d1](https://github.com/homarr-labs/homarr/commit/f4b93d1eae4b28cb5929b30ea2a55c57bdac84be)) +* **deps:** update dependency rxjs to ^7.8.1 ([#181](https://github.com/homarr-labs/homarr/issues/181)) ([e1a98f7](https://github.com/homarr-labs/homarr/commit/e1a98f7fc05881c3b161f22463afbcf3b0b306b0)) +* **deps:** update dependency sass to ^1.71.0 ([#96](https://github.com/homarr-labs/homarr/issues/96)) ([9a60588](https://github.com/homarr-labs/homarr/commit/9a60588a031b262a06d4048804960bf7966ba1b5)) +* **deps:** update dependency sass to ^1.71.1 ([#148](https://github.com/homarr-labs/homarr/issues/148)) ([abc4a9a](https://github.com/homarr-labs/homarr/commit/abc4a9afbc7b61266907826da1f20077e98176f2)) +* **deps:** update dependency sass to ^1.72.0 ([#230](https://github.com/homarr-labs/homarr/issues/230)) ([4bab91f](https://github.com/homarr-labs/homarr/commit/4bab91f8deeb65678009edcbff31abe843269d44)) +* **deps:** update dependency sass to ^1.74.1 ([#306](https://github.com/homarr-labs/homarr/issues/306)) ([e68a2e5](https://github.com/homarr-labs/homarr/commit/e68a2e5813d857f1da8bd1ae15129fd323d98f52)) +* **deps:** update dependency sass to ^1.75.0 ([#347](https://github.com/homarr-labs/homarr/issues/347)) ([0cc5225](https://github.com/homarr-labs/homarr/commit/0cc5225e32b18cf02378836bc4142663c68aa82d)) +* **deps:** update dependency sass to ^1.76.0 ([#410](https://github.com/homarr-labs/homarr/issues/410)) ([e556bf3](https://github.com/homarr-labs/homarr/commit/e556bf3e6617df664897037cfe6d223e56a8262a)) +* **deps:** update dependency sass to ^1.77.0 ([#451](https://github.com/homarr-labs/homarr/issues/451)) ([3ae96d9](https://github.com/homarr-labs/homarr/commit/3ae96d94a20797f0b4ec5ff22e4649a0fd497748)) +* **deps:** update dependency sass to ^1.77.1 ([#469](https://github.com/homarr-labs/homarr/issues/469)) ([cb6f754](https://github.com/homarr-labs/homarr/commit/cb6f754492b737b70f3db614efd2dfaea49daca9)) +* **deps:** update dependency sass to ^1.77.2 ([#506](https://github.com/homarr-labs/homarr/issues/506)) ([7664b00](https://github.com/homarr-labs/homarr/commit/7664b00be00dd134c130bbb6ffb438155d333553)) +* **deps:** update dependency sass to ^1.77.3 ([#579](https://github.com/homarr-labs/homarr/issues/579)) ([169feca](https://github.com/homarr-labs/homarr/commit/169fecaba1645f0313e730de0e0caff0793cd4c4)) +* **deps:** update dependency sass to ^1.77.4 ([#586](https://github.com/homarr-labs/homarr/issues/586)) ([79d977c](https://github.com/homarr-labs/homarr/commit/79d977c0085e8fc600d1806a566ac17e763dfc48)) +* **deps:** update dependency sass to ^1.77.5 ([#659](https://github.com/homarr-labs/homarr/issues/659)) ([f5f6388](https://github.com/homarr-labs/homarr/commit/f5f63883612c320d4a73cb5bf9435b30c6071537)) +* **deps:** update dependency sass to ^1.77.6 ([#683](https://github.com/homarr-labs/homarr/issues/683)) ([4526fa6](https://github.com/homarr-labs/homarr/commit/4526fa6fc488aad0b54093e47e9064d771473d30)) +* **deps:** update dependency sass to ^1.77.7 ([#773](https://github.com/homarr-labs/homarr/issues/773)) ([dcb9cfa](https://github.com/homarr-labs/homarr/commit/dcb9cfaf295c3aeb30181ea5c7c7e404785e6763)) +* **deps:** update dependency sass to ^1.77.8 ([#783](https://github.com/homarr-labs/homarr/issues/783)) ([ec4b3a6](https://github.com/homarr-labs/homarr/commit/ec4b3a64081bd5d94d4e728dcd7562f708cf0c5f)) +* **deps:** update dependency sass to ^1.78.0 ([#1064](https://github.com/homarr-labs/homarr/issues/1064)) ([3d1b626](https://github.com/homarr-labs/homarr/commit/3d1b626baa736a6a41b4b35f32ef44d948b2f309)) +* **deps:** update dependency sass to ^1.79.0 ([#1147](https://github.com/homarr-labs/homarr/issues/1147)) ([f1d5dd0](https://github.com/homarr-labs/homarr/commit/f1d5dd03cbea8ea569d21f94b95e31d66cb03adc)) +* **deps:** update dependency sass to ^1.79.1 ([#1148](https://github.com/homarr-labs/homarr/issues/1148)) ([3cb1221](https://github.com/homarr-labs/homarr/commit/3cb1221038715ae8d771c3a6622f666ae9493aef)) +* **deps:** update dependency sass to ^1.79.2 ([#1153](https://github.com/homarr-labs/homarr/issues/1153)) ([a028251](https://github.com/homarr-labs/homarr/commit/a02825113a17aa3142ced5a726058bd6168beee1)) +* **deps:** update dependency sass to ^1.79.3 ([#1159](https://github.com/homarr-labs/homarr/issues/1159)) ([612a158](https://github.com/homarr-labs/homarr/commit/612a15810b671cedeb9fefd7902692a466394e3a)) +* **deps:** update dependency sass to ^1.79.4 ([#1198](https://github.com/homarr-labs/homarr/issues/1198)) ([9af01bb](https://github.com/homarr-labs/homarr/commit/9af01bb68006af39f009e4a0605cc0a7f42bcba5)) +* **deps:** update dependency sass to ^1.79.5 ([#1279](https://github.com/homarr-labs/homarr/issues/1279)) ([99ddd92](https://github.com/homarr-labs/homarr/commit/99ddd9214edb8841a1c969af9c1d1f91643e6df8)) +* **deps:** update dependency sass to ^1.79.6 ([#1312](https://github.com/homarr-labs/homarr/issues/1312)) ([0c134dd](https://github.com/homarr-labs/homarr/commit/0c134dde6e9b472cd5cd32dfebdc9146e4fb64db)) +* **deps:** update dependency sass to ^1.80.1 ([#1314](https://github.com/homarr-labs/homarr/issues/1314)) ([a44c907](https://github.com/homarr-labs/homarr/commit/a44c90774547d9ad6c4911c12f21ffa98b3694e5)) +* **deps:** update dependency sass to ^1.80.2 ([#1319](https://github.com/homarr-labs/homarr/issues/1319)) ([3781fe5](https://github.com/homarr-labs/homarr/commit/3781fe5cf876d36aacc7bb4f373ea7973e4e57f7)) +* **deps:** update dependency sass to ^1.80.3 ([#1331](https://github.com/homarr-labs/homarr/issues/1331)) ([e46bf5d](https://github.com/homarr-labs/homarr/commit/e46bf5d24811aa9c8e8092d6635e67f665123721)) +* **deps:** update dependency sass to ^1.80.4 ([#1366](https://github.com/homarr-labs/homarr/issues/1366)) ([2bac28a](https://github.com/homarr-labs/homarr/commit/2bac28a50a843bdf2bdefdc9bad4a07af2fa92b9)) +* **deps:** update dependency sass to ^1.80.5 ([#1388](https://github.com/homarr-labs/homarr/issues/1388)) ([74a8495](https://github.com/homarr-labs/homarr/commit/74a84959034ba1383716e06a7ce73d2f6397e40f)) +* **deps:** update dependency sass to ^1.80.6 ([#1399](https://github.com/homarr-labs/homarr/issues/1399)) ([d908b3f](https://github.com/homarr-labs/homarr/commit/d908b3f6769fe5add91e605f16dc6c5f89d96373)) +* **deps:** update dependency sass to ^1.80.7 ([#1472](https://github.com/homarr-labs/homarr/issues/1472)) ([9bd0e0f](https://github.com/homarr-labs/homarr/commit/9bd0e0f4ee49a3e6ed5245312c5fb77ff8dc48a8)) +* **deps:** update dependency sass to ^1.81.0 ([#1486](https://github.com/homarr-labs/homarr/issues/1486)) ([908d0bb](https://github.com/homarr-labs/homarr/commit/908d0bbc5066e3ee312c89025e3bd60c224094f3)) +* **deps:** update dependency sass to ^1.81.1 ([#1589](https://github.com/homarr-labs/homarr/issues/1589)) ([57bbd43](https://github.com/homarr-labs/homarr/commit/57bbd43c74d29272ac0fa3667965fd78decc4e6b)) +* **deps:** update dependency sass to ^1.82.0 ([#1600](https://github.com/homarr-labs/homarr/issues/1600)) ([825b1a3](https://github.com/homarr-labs/homarr/commit/825b1a3643266049ddf5a6cd53defa47e78d8cc8)) +* **deps:** update dependency sass to ^1.83.0 ([#1650](https://github.com/homarr-labs/homarr/issues/1650)) ([0bd8e2c](https://github.com/homarr-labs/homarr/commit/0bd8e2c08516fabd9bd6c3d4649abb4f47d7bc13)) +* **deps:** update dependency sharp to ^0.33.3 ([#260](https://github.com/homarr-labs/homarr/issues/260)) ([87808c1](https://github.com/homarr-labs/homarr/commit/87808c1349f520a4d2160a11ef49c11a91665ea9)) +* **deps:** update dependency superjson to v2.2.2 ([#1618](https://github.com/homarr-labs/homarr/issues/1618)) ([aaa3e7c](https://github.com/homarr-labs/homarr/commit/aaa3e7ce0c58f644db283e5c256779b5c4fb09bb)) +* **deps:** update dependency swagger-ui-react to ^5.17.14 ([#1031](https://github.com/homarr-labs/homarr/issues/1031)) ([6351bf7](https://github.com/homarr-labs/homarr/commit/6351bf78ff902948218b50d568e7d7425a27b2ad)) +* **deps:** update dependency swagger-ui-react to ^5.18.0 ([#1428](https://github.com/homarr-labs/homarr/issues/1428)) ([4643c0f](https://github.com/homarr-labs/homarr/commit/4643c0f004425f54d96871755aec1e0a6cfa30b2)) +* **deps:** update dependency swagger-ui-react to ^5.18.1 ([#1432](https://github.com/homarr-labs/homarr/issues/1432)) ([0809d5a](https://github.com/homarr-labs/homarr/commit/0809d5aa747e4937ca1890ee04972b99e87f26bc)) +* **deps:** update dependency swagger-ui-react to ^5.18.2 ([#1442](https://github.com/homarr-labs/homarr/issues/1442)) ([2357435](https://github.com/homarr-labs/homarr/commit/23574359f0ed180d512810773b48bd046139ae66)) +* **deps:** update dependency tldts to ^6.1.38 ([#931](https://github.com/homarr-labs/homarr/issues/931)) ([a2be781](https://github.com/homarr-labs/homarr/commit/a2be781f81465b32543b28dee7df8f1b0290f12a)) +* **deps:** update dependency tldts to ^6.1.39 ([#966](https://github.com/homarr-labs/homarr/issues/966)) ([4b39c16](https://github.com/homarr-labs/homarr/commit/4b39c16d256656998ab817f58cdaf13fe81dc044)) +* **deps:** update dependency tldts to ^6.1.40 ([#996](https://github.com/homarr-labs/homarr/issues/996)) ([f5c380f](https://github.com/homarr-labs/homarr/commit/f5c380f75b30bc45573a4aaef7fe926c3a71011d)) +* **deps:** update dependency tldts to ^6.1.41 ([#1011](https://github.com/homarr-labs/homarr/issues/1011)) ([7742d5f](https://github.com/homarr-labs/homarr/commit/7742d5f5b4b37ab2fb1e6cdc6a5c25c5caca1a5d)) +* **deps:** update dependency tldts to ^6.1.42 ([#1069](https://github.com/homarr-labs/homarr/issues/1069)) ([247de55](https://github.com/homarr-labs/homarr/commit/247de555cec15ae8f6fac0fd5b2abc90382b1786)) +* **deps:** update dependency tldts to ^6.1.43 ([#1080](https://github.com/homarr-labs/homarr/issues/1080)) ([fc1bff2](https://github.com/homarr-labs/homarr/commit/fc1bff2110e1a4c1fa1d48ba4a42ee4d3ad5b469)) +* **deps:** update dependency tldts to ^6.1.44 ([#1095](https://github.com/homarr-labs/homarr/issues/1095)) ([18347fe](https://github.com/homarr-labs/homarr/commit/18347fef3bc355d42e902e76e0caf02ee855df9a)) +* **deps:** update dependency tldts to ^6.1.45 ([#1121](https://github.com/homarr-labs/homarr/issues/1121)) ([7059a3d](https://github.com/homarr-labs/homarr/commit/7059a3d88f73ddceb70d037bb0f362fe50bda225)) +* **deps:** update dependency tldts to ^6.1.46 ([#1128](https://github.com/homarr-labs/homarr/issues/1128)) ([aca5c27](https://github.com/homarr-labs/homarr/commit/aca5c279b5360fdacd3f5dc77fd58ce41c343e5f)) +* **deps:** update dependency tldts to ^6.1.47 ([#1152](https://github.com/homarr-labs/homarr/issues/1152)) ([aa2d440](https://github.com/homarr-labs/homarr/commit/aa2d440acbbe92d088b9ba9bdf2ebbc5b2b642c1)) +* **deps:** update dependency tldts to ^6.1.48 ([#1190](https://github.com/homarr-labs/homarr/issues/1190)) ([f6c7271](https://github.com/homarr-labs/homarr/commit/f6c7271fb43324f7e9eb0f8cc7ae5646f516b8b2)) +* **deps:** update dependency tldts to ^6.1.49 ([#1216](https://github.com/homarr-labs/homarr/issues/1216)) ([2f3619b](https://github.com/homarr-labs/homarr/commit/2f3619b68dc9f3c20a229b896f8b3c4b91e5c0a7)) +* **deps:** update dependency tldts to ^6.1.50 ([#1228](https://github.com/homarr-labs/homarr/issues/1228)) ([17572bc](https://github.com/homarr-labs/homarr/commit/17572bc602a7b1e42def413f1a7668cf1280170b)) +* **deps:** update dependency tldts to ^6.1.51 ([#1288](https://github.com/homarr-labs/homarr/issues/1288)) ([0fadc28](https://github.com/homarr-labs/homarr/commit/0fadc28a125aa68e6d6d96a17c7c86012d13a288)) +* **deps:** update dependency tldts to ^6.1.52 ([#1307](https://github.com/homarr-labs/homarr/issues/1307)) ([c4ec4f3](https://github.com/homarr-labs/homarr/commit/c4ec4f3c66078b0c94bb049334e32e31e41936ac)) +* **deps:** update dependency tldts to ^6.1.53 ([#1351](https://github.com/homarr-labs/homarr/issues/1351)) ([a8c36f3](https://github.com/homarr-labs/homarr/commit/a8c36f35c3e5a9342fe932832342f76855c8d4d4)) +* **deps:** update dependency tldts to ^6.1.54 ([#1353](https://github.com/homarr-labs/homarr/issues/1353)) ([e062ea1](https://github.com/homarr-labs/homarr/commit/e062ea150782b73d0a86748fef43355a46df2244)) +* **deps:** update dependency tldts to ^6.1.55 ([#1369](https://github.com/homarr-labs/homarr/issues/1369)) ([3a6e957](https://github.com/homarr-labs/homarr/commit/3a6e957710c08e64cc7b42ecca2bf5069cceb896)) +* **deps:** update dependency tldts to ^6.1.56 ([#1375](https://github.com/homarr-labs/homarr/issues/1375)) ([f8c21f6](https://github.com/homarr-labs/homarr/commit/f8c21f6000e8d8843e43afaf09713f958b318f0f)) +* **deps:** update dependency tldts to ^6.1.57 ([#1386](https://github.com/homarr-labs/homarr/issues/1386)) ([8da1dd0](https://github.com/homarr-labs/homarr/commit/8da1dd0d5f95e1d15f1115a8518992935e89059c)) +* **deps:** update dependency tldts to ^6.1.58 ([#1400](https://github.com/homarr-labs/homarr/issues/1400)) ([baabf71](https://github.com/homarr-labs/homarr/commit/baabf717078caba315f39a1d429fc0ba92f3d167)) +* **deps:** update dependency tldts to ^6.1.59 ([#1447](https://github.com/homarr-labs/homarr/issues/1447)) ([2a7d648](https://github.com/homarr-labs/homarr/commit/2a7d64804975797863b9a4a7b03d7ab10f4d8a2b)) +* **deps:** update dependency tldts to ^6.1.60 ([#1460](https://github.com/homarr-labs/homarr/issues/1460)) ([4ab40c6](https://github.com/homarr-labs/homarr/commit/4ab40c6fa8e13af66a0a3b14e3c03955ff98f2c7)) +* **deps:** update dependency tldts to ^6.1.61 ([#1474](https://github.com/homarr-labs/homarr/issues/1474)) ([3ca97fe](https://github.com/homarr-labs/homarr/commit/3ca97fef0b984e06461d92f16564bd787ff53150)) +* **deps:** update dependency tldts to ^6.1.62 ([#1514](https://github.com/homarr-labs/homarr/issues/1514)) ([a2a65ab](https://github.com/homarr-labs/homarr/commit/a2a65abd3d451104d59e8eb55ad74d83f6956784)) +* **deps:** update dependency tldts to ^6.1.63 ([#1519](https://github.com/homarr-labs/homarr/issues/1519)) ([86ae346](https://github.com/homarr-labs/homarr/commit/86ae3469795378f626a2b6aa5eaaf6cd38c874d9)) +* **deps:** update dependency tldts to ^6.1.64 ([#1529](https://github.com/homarr-labs/homarr/issues/1529)) ([cdfb61f](https://github.com/homarr-labs/homarr/commit/cdfb61fb28f6a9adc8658187a41e0cfb3fdc1a8f)) +* **deps:** update dependency tldts to ^6.1.65 ([#1575](https://github.com/homarr-labs/homarr/issues/1575)) ([fb4a19b](https://github.com/homarr-labs/homarr/commit/fb4a19bfe457d1d815e9b72a85c8ea742b950a69)) +* **deps:** update dependency tldts to ^6.1.66 ([#1625](https://github.com/homarr-labs/homarr/issues/1625)) ([6a79d01](https://github.com/homarr-labs/homarr/commit/6a79d01d79b613dccf2a3ffe39a7271bc1931812)) +* **deps:** update dependency tldts to ^6.1.67 ([#1648](https://github.com/homarr-labs/homarr/issues/1648)) ([75c0f70](https://github.com/homarr-labs/homarr/commit/75c0f70ef6159bbada6770a49cfba59f4470fcfc)) +* **deps:** update dependency tldts to ^6.1.68 ([#1656](https://github.com/homarr-labs/homarr/issues/1656)) ([3347886](https://github.com/homarr-labs/homarr/commit/3347886f1e6754f9dd0f8a9975c51bf61b0d3f59)) +* **deps:** update dependency trpc-swagger to ^1.2.6 ([#1032](https://github.com/homarr-labs/homarr/issues/1032)) ([e60e4a4](https://github.com/homarr-labs/homarr/commit/e60e4a49f84ec46f47bdaa830cea5ddeaf7ba8a3)) +* **deps:** update dependency trpc-to-openapi to ^2.0.3 ([#1576](https://github.com/homarr-labs/homarr/issues/1576)) ([0ab9d0b](https://github.com/homarr-labs/homarr/commit/0ab9d0bd694d2cb66de45bcfd0010ecc2b226cb7)) +* **deps:** update dependency trpc-to-openapi to ^2.0.4 ([#1578](https://github.com/homarr-labs/homarr/issues/1578)) ([3ffdc05](https://github.com/homarr-labs/homarr/commit/3ffdc054429a6ec6a3ddc14b9d1ac97602eb0f15)) +* **deps:** update dependency trpc-to-openapi to ^2.1.0 ([#1579](https://github.com/homarr-labs/homarr/issues/1579)) ([7343bdd](https://github.com/homarr-labs/homarr/commit/7343bdde1304f655149c257319996047ddd8a530)) +* **deps:** update dependency typescript-eslint to ^7.13.0 ([#653](https://github.com/homarr-labs/homarr/issues/653)) ([1949885](https://github.com/homarr-labs/homarr/commit/19498854fc1da6fdb9ec29f3ecb7a113a6b2a33e)) +* **deps:** update dependency typescript-eslint to ^7.13.1 ([#681](https://github.com/homarr-labs/homarr/issues/681)) ([e9d6120](https://github.com/homarr-labs/homarr/commit/e9d612051d043253d7c41bafdd4be82949564e43)) +* **deps:** update dependency typescript-eslint to ^7.14.1 ([#709](https://github.com/homarr-labs/homarr/issues/709)) ([196ac34](https://github.com/homarr-labs/homarr/commit/196ac340a16528196e1ca405147c83ed31f8337a)) +* **deps:** update dependency typescript-eslint to ^7.15.0 ([#732](https://github.com/homarr-labs/homarr/issues/732)) ([0990e4b](https://github.com/homarr-labs/homarr/commit/0990e4b552e3c65ee8802e11d2bd3adceab24009)) +* **deps:** update dependency typescript-eslint to ^7.16.0 ([#762](https://github.com/homarr-labs/homarr/issues/762)) ([2c197bc](https://github.com/homarr-labs/homarr/commit/2c197bc59bab428db4990a7c99b1dcdd8b372617)) +* **deps:** update dependency typescript-eslint to ^7.16.1 ([#814](https://github.com/homarr-labs/homarr/issues/814)) ([56c6be5](https://github.com/homarr-labs/homarr/commit/56c6be523db5219b97bafbc53d63360d019fefcc)) +* **deps:** update dependency typescript-eslint to ^7.17.0 ([#855](https://github.com/homarr-labs/homarr/issues/855)) ([b2860ff](https://github.com/homarr-labs/homarr/commit/b2860ffbd3e29ef21021b2416d0c26f0e3b6c54c)) +* **deps:** update dependency typescript-eslint to ^7.18.0 ([#886](https://github.com/homarr-labs/homarr/issues/886)) ([1a24ba6](https://github.com/homarr-labs/homarr/commit/1a24ba6ef73eb058f19f31140cff5198311eba08)) +* **deps:** update dependency typescript-eslint to ^8.0.1 ([#921](https://github.com/homarr-labs/homarr/issues/921)) ([c69483a](https://github.com/homarr-labs/homarr/commit/c69483a12c14ab284dd3cacd0e31d194dcc48cfc)) +* **deps:** update dependency typescript-eslint to ^8.1.0 ([#968](https://github.com/homarr-labs/homarr/issues/968)) ([b9f048c](https://github.com/homarr-labs/homarr/commit/b9f048c57d9f2618f8059862a800259246caa2f8)) +* **deps:** update dependency typescript-eslint to ^8.10.0 ([#1317](https://github.com/homarr-labs/homarr/issues/1317)) ([a231a2d](https://github.com/homarr-labs/homarr/commit/a231a2da6cd42e355fff52b9cf718f44c658cfff)) +* **deps:** update dependency typescript-eslint to ^8.11.0 ([#1346](https://github.com/homarr-labs/homarr/issues/1346)) ([a005ead](https://github.com/homarr-labs/homarr/commit/a005ead158ca1f058605b2a3198af438c7039109)) +* **deps:** update dependency typescript-eslint to ^8.12.2 ([#1381](https://github.com/homarr-labs/homarr/issues/1381)) ([17401d1](https://github.com/homarr-labs/homarr/commit/17401d1d7284088bc5fdc0e037dc72f75e8abd7e)) +* **deps:** update dependency typescript-eslint to ^8.13.0 ([#1420](https://github.com/homarr-labs/homarr/issues/1420)) ([97eb4c5](https://github.com/homarr-labs/homarr/commit/97eb4c54e2f7f9cfc0467b0236b4a2db87bc546c)) +* **deps:** update dependency typescript-eslint to ^8.14.0 ([#1465](https://github.com/homarr-labs/homarr/issues/1465)) ([53acff9](https://github.com/homarr-labs/homarr/commit/53acff91430b9889c90ab9e1a35bce792baa4dd9)) +* **deps:** update dependency typescript-eslint to ^8.15.0 ([#1497](https://github.com/homarr-labs/homarr/issues/1497)) ([b887713](https://github.com/homarr-labs/homarr/commit/b8877137ac05a08c5647d0ba785439d364d9bafb)) +* **deps:** update dependency typescript-eslint to ^8.16.0 ([#1544](https://github.com/homarr-labs/homarr/issues/1544)) ([4df6006](https://github.com/homarr-labs/homarr/commit/4df6006f0e487028fffc3f65d4fa20b2f252e612)) +* **deps:** update dependency typescript-eslint to ^8.17.0 ([#1582](https://github.com/homarr-labs/homarr/issues/1582)) ([5ecf93a](https://github.com/homarr-labs/homarr/commit/5ecf93a317f8face4d47d255c83c7f197eccdb92)) +* **deps:** update dependency typescript-eslint to ^8.18.0 ([#1634](https://github.com/homarr-labs/homarr/issues/1634)) ([3bee3fe](https://github.com/homarr-labs/homarr/commit/3bee3fe3f64c274c73f698cd5f8850f4496c35bd)) +* **deps:** update dependency typescript-eslint to ^8.18.1 ([#1673](https://github.com/homarr-labs/homarr/issues/1673)) ([613d1f9](https://github.com/homarr-labs/homarr/commit/613d1f966282886c6a85bc400dfedbc4bdac906c)) +* **deps:** update dependency typescript-eslint to ^8.2.0 ([#999](https://github.com/homarr-labs/homarr/issues/999)) ([0585187](https://github.com/homarr-labs/homarr/commit/058518710e02ea47bc6e221cab43604d70b16ab5)) +* **deps:** update dependency typescript-eslint to ^8.3.0 ([#1036](https://github.com/homarr-labs/homarr/issues/1036)) ([b0e2692](https://github.com/homarr-labs/homarr/commit/b0e269209e67db1569effd72d1560c0414574654)) +* **deps:** update dependency typescript-eslint to ^8.4.0 ([#1058](https://github.com/homarr-labs/homarr/issues/1058)) ([1d23667](https://github.com/homarr-labs/homarr/commit/1d236678b334c35358a3d95e75d81ad16657afca)) +* **deps:** update dependency typescript-eslint to ^8.5.0 ([#1089](https://github.com/homarr-labs/homarr/issues/1089)) ([c844eb2](https://github.com/homarr-labs/homarr/commit/c844eb2a224c473dd42df4a1ffc9a74bd533e0e2)) +* **deps:** update dependency typescript-eslint to ^8.6.0 ([#1136](https://github.com/homarr-labs/homarr/issues/1136)) ([3ef478c](https://github.com/homarr-labs/homarr/commit/3ef478c53ab56c50b1ee1d71eebfcc32a4b8828a)) +* **deps:** update dependency typescript-eslint to ^8.7.0 ([#1165](https://github.com/homarr-labs/homarr/issues/1165)) ([6aa5adf](https://github.com/homarr-labs/homarr/commit/6aa5adf5b0602dc3c7de75d9fc88c751d77ceed9)) +* **deps:** update dependency typescript-eslint to ^8.8.0 ([#1207](https://github.com/homarr-labs/homarr/issues/1207)) ([233033f](https://github.com/homarr-labs/homarr/commit/233033f1ce2c1348287fd4f37cf27e53ca317868)) +* **deps:** update dependency typescript-eslint to ^8.8.1 ([#1266](https://github.com/homarr-labs/homarr/issues/1266)) ([4d51e3b](https://github.com/homarr-labs/homarr/commit/4d51e3b3442860fa43ef2766681aaf2bce771d3f)) +* **deps:** update dependency typescript-eslint to ^8.9.0 ([#1292](https://github.com/homarr-labs/homarr/issues/1292)) ([65b1ae2](https://github.com/homarr-labs/homarr/commit/65b1ae26d15d29820f3feb097f6ccf43e89b5e22)) +* **deps:** update dependency typescript-eslint to v8 ([#896](https://github.com/homarr-labs/homarr/issues/896)) ([a9a4602](https://github.com/homarr-labs/homarr/commit/a9a46024e2a1a130bf0f2d9f87d1fa7caa35823b)) +* **deps:** update dependency undici to v6.19.2 ([#691](https://github.com/homarr-labs/homarr/issues/691)) ([541d745](https://github.com/homarr-labs/homarr/commit/541d745cea4d615d88f0af454e39de61cfa104cf)) +* **deps:** update dependency undici to v6.19.3 ([#850](https://github.com/homarr-labs/homarr/issues/850)) ([1098725](https://github.com/homarr-labs/homarr/commit/1098725bd1f010056e40eb00db40e19011ef158a)) +* **deps:** update dependency undici to v6.19.4 ([#854](https://github.com/homarr-labs/homarr/issues/854)) ([0c7264b](https://github.com/homarr-labs/homarr/commit/0c7264bc52c80794a74c9836ae9f9d56df6fc52c)) +* **deps:** update dependency undici to v6.19.5 ([#893](https://github.com/homarr-labs/homarr/issues/893)) ([5256853](https://github.com/homarr-labs/homarr/commit/525685335103289eb06606b04610dcec1ecbf0a1)) +* **deps:** update dependency undici to v6.19.7 ([#950](https://github.com/homarr-labs/homarr/issues/950)) ([3be1100](https://github.com/homarr-labs/homarr/commit/3be110097bcb500ef79d88b28b626bcf15329ed3)) +* **deps:** update dependency undici to v6.19.8 ([#998](https://github.com/homarr-labs/homarr/issues/998)) ([9666440](https://github.com/homarr-labs/homarr/commit/9666440e803ce2275ef3d90ebbc37c00592b8372)) +* **deps:** update dependency undici to v6.20.0 ([#1275](https://github.com/homarr-labs/homarr/issues/1275)) ([c7b2261](https://github.com/homarr-labs/homarr/commit/c7b226142feaa3fb0651cdf8473d714643e8144d)) +* **deps:** update dependency undici to v6.20.1 ([#1291](https://github.com/homarr-labs/homarr/issues/1291)) ([85cf101](https://github.com/homarr-labs/homarr/commit/85cf101043a7dbcd9b3a956eb8b7fffb6d3712e3)) +* **deps:** update dependency undici to v6.21.0 ([#1477](https://github.com/homarr-labs/homarr/issues/1477)) ([07f89af](https://github.com/homarr-labs/homarr/commit/07f89afea8eb47894c1ef94e8f62f8fb8c45ebe8)) +* **deps:** update dependency undici to v7 ([#1560](https://github.com/homarr-labs/homarr/issues/1560)) ([44e2105](https://github.com/homarr-labs/homarr/commit/44e2105a8c9d7cc746f0424bf1f718f426dbea93)) +* **deps:** update dependency undici to v7.1.0 ([#1593](https://github.com/homarr-labs/homarr/issues/1593)) ([fb1f000](https://github.com/homarr-labs/homarr/commit/fb1f0003e60d21713968bc6ff4ec1ce85bc54388)) +* **deps:** update dependency undici to v7.1.1 ([#1674](https://github.com/homarr-labs/homarr/issues/1674)) ([02777d1](https://github.com/homarr-labs/homarr/commit/02777d104c5da555337b3b1494a906488fcc7d64)) +* **deps:** update dependency video.js to ^8.12.0 ([#400](https://github.com/homarr-labs/homarr/issues/400)) ([fc1360d](https://github.com/homarr-labs/homarr/commit/fc1360d6bb9512be8ca1f91e8624d2b9b45d1175)) +* **deps:** update dependency video.js to ^8.16.1 ([#772](https://github.com/homarr-labs/homarr/issues/772)) ([8085e72](https://github.com/homarr-labs/homarr/commit/8085e72cf487a1a757bd07f85f46280f2e677f9f)) +* **deps:** update dependency video.js to ^8.17.1 ([#884](https://github.com/homarr-labs/homarr/issues/884)) ([bce73bc](https://github.com/homarr-labs/homarr/commit/bce73bc38f19b5382f0ab233eac667dd926c27a3)) +* **deps:** update dependency video.js to ^8.17.2 ([#917](https://github.com/homarr-labs/homarr/issues/917)) ([796261c](https://github.com/homarr-labs/homarr/commit/796261c5f5f1fa2b02ce3d9ef338a5196d90ec07)) +* **deps:** update dependency video.js to ^8.17.3 ([#971](https://github.com/homarr-labs/homarr/issues/971)) ([0472594](https://github.com/homarr-labs/homarr/commit/04725942eeca3e4c535c6773044eea1b2dc68a33)) +* **deps:** update dependency video.js to ^8.17.4 ([#1099](https://github.com/homarr-labs/homarr/issues/1099)) ([8c9bb6e](https://github.com/homarr-labs/homarr/commit/8c9bb6e5d5eb61f5f7d60aa38c44c94675ab8202)) +* **deps:** update dependency video.js to ^8.18.1 ([#1259](https://github.com/homarr-labs/homarr/issues/1259)) ([ea84b1c](https://github.com/homarr-labs/homarr/commit/ea84b1c372efc40c4c48bf18347c734291a95997)) +* **deps:** update dependency video.js to ^8.19.1 ([#1370](https://github.com/homarr-labs/homarr/issues/1370)) ([4985bd8](https://github.com/homarr-labs/homarr/commit/4985bd8f9123b629dc9bba3c6bb40eaeab96cf87)) +* **deps:** update dependency video.js to ^8.20.0 ([#1561](https://github.com/homarr-labs/homarr/issues/1561)) ([9f98290](https://github.com/homarr-labs/homarr/commit/9f982906f25b042443ac57e8a46ccf98aca5731d)) +* **deps:** update dependency video.js to ^8.21.0 ([#1617](https://github.com/homarr-labs/homarr/issues/1617)) ([5c11a95](https://github.com/homarr-labs/homarr/commit/5c11a95ddcb8e31fbb1c1156a24a89f04f7c22b1)) +* **deps:** update dependency vite to ^5.2.3 ([#253](https://github.com/homarr-labs/homarr/issues/253)) ([7214df3](https://github.com/homarr-labs/homarr/commit/7214df3e442bb8dfc588b1470ed5cef89636643e)) +* **deps:** update dependency vite to ^5.2.5 ([#259](https://github.com/homarr-labs/homarr/issues/259)) ([8d40f54](https://github.com/homarr-labs/homarr/commit/8d40f54d7d1e350f1cd274de493fbe003eee2641)) +* **deps:** update dependency vite to ^5.2.6 ([#262](https://github.com/homarr-labs/homarr/issues/262)) ([36073db](https://github.com/homarr-labs/homarr/commit/36073dbc5ee404379e8ad165a53c2f703642b07a)) +* **deps:** update dependency winston to v3.12.0 ([#188](https://github.com/homarr-labs/homarr/issues/188)) ([fde6d66](https://github.com/homarr-labs/homarr/commit/fde6d6601d8a19b95896ccd8cd9654c48b1f6c48)) +* **deps:** update dependency winston to v3.13.0 ([#263](https://github.com/homarr-labs/homarr/issues/263)) ([724b348](https://github.com/homarr-labs/homarr/commit/724b3481063c028465af08127fb419b0551bb455)) +* **deps:** update dependency winston to v3.13.1 ([#781](https://github.com/homarr-labs/homarr/issues/781)) ([5382b19](https://github.com/homarr-labs/homarr/commit/5382b1999fd3d6ec3e6e043fbde5bd68a93f0e2d)) +* **deps:** update dependency winston to v3.14.0 ([#935](https://github.com/homarr-labs/homarr/issues/935)) ([ac4b4ed](https://github.com/homarr-labs/homarr/commit/ac4b4ed9cf5fc815dd83dce5e3f9608b4aac07af)) +* **deps:** update dependency winston to v3.14.1 ([#941](https://github.com/homarr-labs/homarr/issues/941)) ([db9c200](https://github.com/homarr-labs/homarr/commit/db9c200f890c70be6163b451e30f8950b676c2a1)) +* **deps:** update dependency winston to v3.14.2 ([#979](https://github.com/homarr-labs/homarr/issues/979)) ([b9bcc1d](https://github.com/homarr-labs/homarr/commit/b9bcc1d23aa20bf665c0fb13ec14f8eed0f6516e)) +* **deps:** update dependency winston to v3.15.0 ([#1245](https://github.com/homarr-labs/homarr/issues/1245)) ([20e6399](https://github.com/homarr-labs/homarr/commit/20e6399d5e493158b7c0fb9370e9287075d315da)) +* **deps:** update dependency winston to v3.16.0 ([#1398](https://github.com/homarr-labs/homarr/issues/1398)) ([02ddb1c](https://github.com/homarr-labs/homarr/commit/02ddb1c9c6d15e4965c93935ff7887f90bff05a4)) +* **deps:** update dependency winston to v3.17.0 ([#1457](https://github.com/homarr-labs/homarr/issues/1457)) ([fc4cddc](https://github.com/homarr-labs/homarr/commit/fc4cddcbac74122e652d5409c875694ae11dc78a)) +* **deps:** update dependency ws to ^8.17.0 ([#392](https://github.com/homarr-labs/homarr/issues/392)) ([55822ee](https://github.com/homarr-labs/homarr/commit/55822ee7a51b4f907ed5be3b8202c60d07dce506)) +* **deps:** update dependency ws to ^8.17.1 ([#676](https://github.com/homarr-labs/homarr/issues/676)) ([0d14bad](https://github.com/homarr-labs/homarr/commit/0d14bad10bc45b50e0d3551c071f1ec62c9b7403)) +* **deps:** update dependency ws to ^8.18.0 ([#740](https://github.com/homarr-labs/homarr/issues/740)) ([1dd509a](https://github.com/homarr-labs/homarr/commit/1dd509a40fb9090ba88a0d8e1a67baf58b244cd9)) +* **deps:** update dependency zod to ^3.22.5 ([#361](https://github.com/homarr-labs/homarr/issues/361)) ([cb2b934](https://github.com/homarr-labs/homarr/commit/cb2b934c83c3464ff71bd9dff3be9742e975ef8c)) +* **deps:** update dependency zod to ^3.23.4 ([#373](https://github.com/homarr-labs/homarr/issues/373)) ([392a185](https://github.com/homarr-labs/homarr/commit/392a18564045ab2ea68c694192f771234e40b90c)) +* **deps:** update dependency zod to ^3.23.5 ([#399](https://github.com/homarr-labs/homarr/issues/399)) ([56388eb](https://github.com/homarr-labs/homarr/commit/56388eb8ef452e1dae0ca9c0c68ed6a2ff6fbbd1)) +* **deps:** update dependency zod to ^3.23.6 ([#424](https://github.com/homarr-labs/homarr/issues/424)) ([11c20ce](https://github.com/homarr-labs/homarr/commit/11c20ce711e564bc76d835ed839dbe7dfe332301)) +* **deps:** update dependency zod to ^3.23.7 ([#456](https://github.com/homarr-labs/homarr/issues/456)) ([cab3405](https://github.com/homarr-labs/homarr/commit/cab34052f905d22f5ee593a960895cc9c137292c)) +* **deps:** update dependency zod to ^3.23.8 ([#460](https://github.com/homarr-labs/homarr/issues/460)) ([687556a](https://github.com/homarr-labs/homarr/commit/687556ad96136a72dc720a38f4628d0ba5a1cbcb)) +* **deps:** update dependency zod to ^3.24.0 ([#1635](https://github.com/homarr-labs/homarr/issues/1635)) ([8a25467](https://github.com/homarr-labs/homarr/commit/8a2546704b56d35786681fa6924770b04f833dff)) +* **deps:** update dependency zod to ^3.24.1 ([#1642](https://github.com/homarr-labs/homarr/issues/1642)) ([5e466e8](https://github.com/homarr-labs/homarr/commit/5e466e80c54accbc303e44d2093518465ad5863e)) +* **deps:** update gridstack.js fork to v1.11.2 ([#1605](https://github.com/homarr-labs/homarr/issues/1605)) ([bf45860](https://github.com/homarr-labs/homarr/commit/bf45860966987be44c5eecf9add34173f5968194)) +* **deps:** update mantine monorepo to ^7.10.0 ([#538](https://github.com/homarr-labs/homarr/issues/538)) ([ad3ef4c](https://github.com/homarr-labs/homarr/commit/ad3ef4c313fceb40baaedb9bc3b0e17009eed5cb)) +* **deps:** update mantine monorepo to ^7.10.1 ([#581](https://github.com/homarr-labs/homarr/issues/581)) ([b12d109](https://github.com/homarr-labs/homarr/commit/b12d109f6dfa4f90fc9fe2fae216894d601d0594)) +* **deps:** update mantine monorepo to ^7.10.2 ([#662](https://github.com/homarr-labs/homarr/issues/662)) ([4e9593b](https://github.com/homarr-labs/homarr/commit/4e9593b859c2d16e89940de9abed418ae184f36f)) +* **deps:** update mantine monorepo to ^7.11.0 ([#719](https://github.com/homarr-labs/homarr/issues/719)) ([52e936f](https://github.com/homarr-labs/homarr/commit/52e936f979b9cb6968c6cfe3a66c2c652245c6d8)) +* **deps:** update mantine monorepo to ^7.11.1 ([#735](https://github.com/homarr-labs/homarr/issues/735)) ([60c0cfa](https://github.com/homarr-labs/homarr/commit/60c0cfa9119ae946ca232df00dcebf73c3259a00)) +* **deps:** update mantine monorepo to ^7.11.2 ([#808](https://github.com/homarr-labs/homarr/issues/808)) ([fe5af92](https://github.com/homarr-labs/homarr/commit/fe5af9231e0c8e604558056e28ddc0ad5d440ad8)) +* **deps:** update mantine monorepo to ^7.12.0 ([#920](https://github.com/homarr-labs/homarr/issues/920)) ([137ebf6](https://github.com/homarr-labs/homarr/commit/137ebf6d22bc1a420bab52444e2cd3df5fe31852)) +* **deps:** update mantine monorepo to ^7.12.1 ([#967](https://github.com/homarr-labs/homarr/issues/967)) ([5b651a7](https://github.com/homarr-labs/homarr/commit/5b651a782aef6ce6ecef58be0491642d4cf0c94f)) +* **deps:** update mantine monorepo to ^7.12.2 ([#1048](https://github.com/homarr-labs/homarr/issues/1048)) ([51be024](https://github.com/homarr-labs/homarr/commit/51be02477b63725f5052d478a6db59c48be1fdf0)) +* **deps:** update mantine monorepo to ^7.13.0 ([#1178](https://github.com/homarr-labs/homarr/issues/1178)) ([78230b1](https://github.com/homarr-labs/homarr/commit/78230b1fe9d4b5b071d80782f6ad177993903dd1)) +* **deps:** update mantine monorepo to ^7.13.1 ([#1205](https://github.com/homarr-labs/homarr/issues/1205)) ([6ce466d](https://github.com/homarr-labs/homarr/commit/6ce466d38ec8d3968c4f90583cdfd83d97a42154)) +* **deps:** update mantine monorepo to ^7.13.2 ([#1227](https://github.com/homarr-labs/homarr/issues/1227)) ([d383664](https://github.com/homarr-labs/homarr/commit/d3836648c288ca595ac7b43cc1a2089cd52b7cdd)) +* **deps:** update mantine monorepo to ^7.13.3 ([#1316](https://github.com/homarr-labs/homarr/issues/1316)) ([84bb1de](https://github.com/homarr-labs/homarr/commit/84bb1deae51982d5c7465b180198034c9f9b861a)) +* **deps:** update mantine monorepo to ^7.13.4 ([#1364](https://github.com/homarr-labs/homarr/issues/1364)) ([f55b813](https://github.com/homarr-labs/homarr/commit/f55b813aa1a1df8c1b5c0f29a9a302dab025a1aa)) +* **deps:** update mantine monorepo to ^7.13.5 ([#1449](https://github.com/homarr-labs/homarr/issues/1449)) ([2306ecd](https://github.com/homarr-labs/homarr/commit/2306ecda9f562e94ef21eae495eab4e7fc5a3fc2)) +* **deps:** update mantine monorepo to ^7.14.0 ([#1470](https://github.com/homarr-labs/homarr/issues/1470)) ([11ce6fa](https://github.com/homarr-labs/homarr/commit/11ce6faa37bcd6c54f348ed8c5d003ff4c061b40)) +* **deps:** update mantine monorepo to ^7.14.1 ([#1494](https://github.com/homarr-labs/homarr/issues/1494)) ([775d0a5](https://github.com/homarr-labs/homarr/commit/775d0a53decfbebdbab06936557adade378fd0c0)) +* **deps:** update mantine monorepo to ^7.14.2 ([#1537](https://github.com/homarr-labs/homarr/issues/1537)) ([2e28147](https://github.com/homarr-labs/homarr/commit/2e2814707e0a5c2c38ccefcf0387cc0dab195fb9)) +* **deps:** update mantine monorepo to ^7.14.3 ([#1563](https://github.com/homarr-labs/homarr/issues/1563)) ([09dae45](https://github.com/homarr-labs/homarr/commit/09dae45ae8c33cf9212b72b7b048bbb3866880eb)) +* **deps:** update mantine monorepo to ^7.15.0 ([#1636](https://github.com/homarr-labs/homarr/issues/1636)) ([99bb680](https://github.com/homarr-labs/homarr/commit/99bb68012faffa78e9eb279dcf57007250a7a343)) +* **deps:** update mantine monorepo to ^7.15.1 ([#1649](https://github.com/homarr-labs/homarr/issues/1649)) ([732f4d4](https://github.com/homarr-labs/homarr/commit/732f4d45bdc1a063640a4636de4b67f25927fe43)) +* **deps:** update mantine monorepo to ^7.5.2 ([#71](https://github.com/homarr-labs/homarr/issues/71)) ([81e61b4](https://github.com/homarr-labs/homarr/commit/81e61b4d6bea3f32822917c4cf03f4d5876397ca)) +* **deps:** update mantine monorepo to ^7.5.3 ([#97](https://github.com/homarr-labs/homarr/issues/97)) ([35edfc7](https://github.com/homarr-labs/homarr/commit/35edfc74c4000d59b72f58fb42a00093151d4f38)) +* **deps:** update mantine monorepo to ^7.6.1 ([#157](https://github.com/homarr-labs/homarr/issues/157)) ([8c0534f](https://github.com/homarr-labs/homarr/commit/8c0534f54c416af94743e1cf20d92a33e06c804c)) +* **deps:** update mantine monorepo to ^7.6.2 ([#221](https://github.com/homarr-labs/homarr/issues/221)) ([fc29db0](https://github.com/homarr-labs/homarr/commit/fc29db0151de2638d7550dad0a8328b87164a732)) +* **deps:** update mantine monorepo to ^7.7.1 ([#272](https://github.com/homarr-labs/homarr/issues/272)) ([c9e1580](https://github.com/homarr-labs/homarr/commit/c9e15805a9b4c845e5cc379ae8267c7c659c60a6)) +* **deps:** update mantine monorepo to ^7.8.0 ([#343](https://github.com/homarr-labs/homarr/issues/343)) ([3e3299a](https://github.com/homarr-labs/homarr/commit/3e3299a358b44f86c850b3b96edf14e503d92151)) +* **deps:** update mantine monorepo to ^7.8.1 ([#377](https://github.com/homarr-labs/homarr/issues/377)) ([92b417a](https://github.com/homarr-labs/homarr/commit/92b417a37e070352d4830ab6d907421a89440308)) +* **deps:** update mantine monorepo to ^7.9.0 ([#423](https://github.com/homarr-labs/homarr/issues/423)) ([90b9d56](https://github.com/homarr-labs/homarr/commit/90b9d5672959e68c551b2bd9190b8ad97fbec1d0)) +* **deps:** update mantine monorepo to ^7.9.1 ([#457](https://github.com/homarr-labs/homarr/issues/457)) ([48d7aaa](https://github.com/homarr-labs/homarr/commit/48d7aaaf1d0e59bd2573bbe01a3421d14cd64be1)) +* **deps:** update mantine monorepo to ^7.9.2 ([#510](https://github.com/homarr-labs/homarr/issues/510)) ([abffc86](https://github.com/homarr-labs/homarr/commit/abffc866c084c387a553395519c172becaec0618)) +* **deps:** update nest monorepo to ^10.3.5 ([#245](https://github.com/homarr-labs/homarr/issues/245)) ([0ffb3f1](https://github.com/homarr-labs/homarr/commit/0ffb3f18b9bd8c90f826bcb29c257d656dbb91f5)) +* **deps:** update nextjs monorepo to ^14.1.0 ([#38](https://github.com/homarr-labs/homarr/issues/38)) ([dadfc0c](https://github.com/homarr-labs/homarr/commit/dadfc0c5d73395d2c49afbc7c67d0755e102b719)) +* **deps:** update nextjs monorepo to ^14.1.1 ([#147](https://github.com/homarr-labs/homarr/issues/147)) ([b407f2a](https://github.com/homarr-labs/homarr/commit/b407f2a9ac02b3ea6bfa22388e8e1150d2c82d48)) +* **deps:** update nextjs monorepo to ^14.1.2 ([#193](https://github.com/homarr-labs/homarr/issues/193)) ([8df514d](https://github.com/homarr-labs/homarr/commit/8df514dec883a90b3fcee8ef69efed87608618df)) +* **deps:** update nextjs monorepo to ^14.1.3 ([#208](https://github.com/homarr-labs/homarr/issues/208)) ([56d5e70](https://github.com/homarr-labs/homarr/commit/56d5e709bccdff4d37c6964dd1420721fc6f0356)) +* **deps:** update nextjs monorepo to ^14.1.4 ([#252](https://github.com/homarr-labs/homarr/issues/252)) ([28f630f](https://github.com/homarr-labs/homarr/commit/28f630f58b60260cd48990f9edf04173db5bd01d)) +* **deps:** update nextjs monorepo to ^14.2.10 ([#1109](https://github.com/homarr-labs/homarr/issues/1109)) ([fb55f12](https://github.com/homarr-labs/homarr/commit/fb55f1272d890307452cf7c7f3a54eb454da736f)) +* **deps:** update nextjs monorepo to ^14.2.11 ([#1117](https://github.com/homarr-labs/homarr/issues/1117)) ([7a56006](https://github.com/homarr-labs/homarr/commit/7a56006533d0fce5b288e1efe658e026abd062e1)) +* **deps:** update nextjs monorepo to ^14.2.12 ([#1146](https://github.com/homarr-labs/homarr/issues/1146)) ([8f5d7f8](https://github.com/homarr-labs/homarr/commit/8f5d7f83879e68b73f20303fbd9d3f4f70f69e3d)) +* **deps:** update nextjs monorepo to ^14.2.13 ([#1154](https://github.com/homarr-labs/homarr/issues/1154)) ([2258dc3](https://github.com/homarr-labs/homarr/commit/2258dc3ec66fd6d2c0ca9d7d2a689174a806586d)) +* **deps:** update nextjs monorepo to ^14.2.14 ([#1215](https://github.com/homarr-labs/homarr/issues/1215)) ([6f5c993](https://github.com/homarr-labs/homarr/commit/6f5c9935108511783b16c1a8206088e4845f9529)) +* **deps:** update nextjs monorepo to ^14.2.15 ([#1270](https://github.com/homarr-labs/homarr/issues/1270)) ([2bbe594](https://github.com/homarr-labs/homarr/commit/2bbe594cd28decee8934fc7338cdda9b77a2040c)) +* **deps:** update nextjs monorepo to ^14.2.16 ([#1355](https://github.com/homarr-labs/homarr/issues/1355)) ([aea65ea](https://github.com/homarr-labs/homarr/commit/aea65eadcd180e892d823ddccc2657b3beeb8acb)) +* **deps:** update nextjs monorepo to ^14.2.17 ([#1435](https://github.com/homarr-labs/homarr/issues/1435)) ([cd18458](https://github.com/homarr-labs/homarr/commit/cd18458d0c8a91c9068f8fbbfa49b5c0191e8f63)) +* **deps:** update nextjs monorepo to ^14.2.18 ([#1479](https://github.com/homarr-labs/homarr/issues/1479)) ([ccee3dd](https://github.com/homarr-labs/homarr/commit/ccee3dd21732be7106bf04af802c528351d132be)) +* **deps:** update nextjs monorepo to ^14.2.19 ([#1594](https://github.com/homarr-labs/homarr/issues/1594)) ([b0d6230](https://github.com/homarr-labs/homarr/commit/b0d623047ed0aae68741a50345610d2bc65cf86b)) +* **deps:** update nextjs monorepo to ^14.2.2 ([#345](https://github.com/homarr-labs/homarr/issues/345)) ([b465b95](https://github.com/homarr-labs/homarr/commit/b465b95ca26c1b0bc9035c7d2bd72d8a657870b3)) +* **deps:** update nextjs monorepo to ^14.2.20 ([#1610](https://github.com/homarr-labs/homarr/issues/1610)) ([ef65270](https://github.com/homarr-labs/homarr/commit/ef652707788ab68eeadd43dff908387340784f04)) +* **deps:** update nextjs monorepo to ^14.2.3 ([#381](https://github.com/homarr-labs/homarr/issues/381)) ([75e4e81](https://github.com/homarr-labs/homarr/commit/75e4e8176e36a995ebcd25387cae6435a5723b49)) +* **deps:** update nextjs monorepo to ^14.2.4 ([#658](https://github.com/homarr-labs/homarr/issues/658)) ([476fa59](https://github.com/homarr-labs/homarr/commit/476fa59079a3026fb1ce3d3c1b87a4b99425dccf)) +* **deps:** update nextjs monorepo to ^14.2.5 ([#779](https://github.com/homarr-labs/homarr/issues/779)) ([99175fe](https://github.com/homarr-labs/homarr/commit/99175feda492ff0b0d2d9d07c75d2bd45f69fbb5)) +* **deps:** update nextjs monorepo to ^14.2.6 ([#1009](https://github.com/homarr-labs/homarr/issues/1009)) ([1311e72](https://github.com/homarr-labs/homarr/commit/1311e72ca0a9c16db207d088809debd020da1318)) +* **deps:** update nextjs monorepo to ^14.2.7 ([#1041](https://github.com/homarr-labs/homarr/issues/1041)) ([3771a61](https://github.com/homarr-labs/homarr/commit/3771a61c49ca92f8567bb0905a696236a1e473a0)) +* **deps:** update nextjs monorepo to ^14.2.8 ([#1067](https://github.com/homarr-labs/homarr/issues/1067)) ([ca83872](https://github.com/homarr-labs/homarr/commit/ca83872151a867a42b3504a3eafff585a386b02d)) +* **deps:** update nextjs monorepo to ^14.2.9 ([#1091](https://github.com/homarr-labs/homarr/issues/1091)) ([3f076fa](https://github.com/homarr-labs/homarr/commit/3f076fafcd505b0b18781fc485dec8b144c8051f)) +* **deps:** update react monorepo to v19 (major) ([#1615](https://github.com/homarr-labs/homarr/issues/1615)) ([6f874e8](https://github.com/homarr-labs/homarr/commit/6f874e87abbc20a6e95cfbeb7bb7188d13599672)) +* **deps:** update tanstack-query monorepo ([#126](https://github.com/homarr-labs/homarr/issues/126)) ([71521c0](https://github.com/homarr-labs/homarr/commit/71521c076809fa3041ebf0ce4c9b9365adcf167b)) +* **deps:** update tanstack-query monorepo ([#141](https://github.com/homarr-labs/homarr/issues/141)) ([5d68300](https://github.com/homarr-labs/homarr/commit/5d68300600f0bd890aa4413ada41559f10afcf51)) +* **deps:** update tanstack-query monorepo ([#216](https://github.com/homarr-labs/homarr/issues/216)) ([efbc4cf](https://github.com/homarr-labs/homarr/commit/efbc4cf8fe62c4dd39fa2191238e1d62e5e98f9c)) +* **deps:** update tanstack-query monorepo ([#280](https://github.com/homarr-labs/homarr/issues/280)) ([e74926d](https://github.com/homarr-labs/homarr/commit/e74926d3825a7a31008faf6ec4ef00b6ab5ce669)) +* **deps:** update tanstack-query monorepo to ^5.18.1 ([#39](https://github.com/homarr-labs/homarr/issues/39)) ([717e919](https://github.com/homarr-labs/homarr/commit/717e9194500ad875e2c57bc088a3fa7ec08faf68)) +* **deps:** update tanstack-query monorepo to ^5.20.1 ([#75](https://github.com/homarr-labs/homarr/issues/75)) ([00f4a28](https://github.com/homarr-labs/homarr/commit/00f4a288a413383b4c412a1165eeba8a4c973a67)) +* **deps:** update tanstack-query monorepo to ^5.20.5 ([#86](https://github.com/homarr-labs/homarr/issues/86)) ([b77e652](https://github.com/homarr-labs/homarr/commit/b77e6528225a54839c5b09ad2464c6ab266259c6)) +* **deps:** update tanstack-query monorepo to ^5.21.4 ([#128](https://github.com/homarr-labs/homarr/issues/128)) ([a9a3d98](https://github.com/homarr-labs/homarr/commit/a9a3d98248a9ba518d941f8e437784a98984895d)) +* **deps:** update tanstack-query monorepo to ^5.21.7 ([#133](https://github.com/homarr-labs/homarr/issues/133)) ([e150577](https://github.com/homarr-labs/homarr/commit/e150577c7eea55b3f837951eeaa8fef41468c6af)) +* **deps:** update tanstack-query monorepo to ^5.24.1 ([#156](https://github.com/homarr-labs/homarr/issues/156)) ([3022e7f](https://github.com/homarr-labs/homarr/commit/3022e7f0af1d319e87398e09df27bd5824f0f8b4)) +* **deps:** update tanstack-query monorepo to ^5.24.6 ([#168](https://github.com/homarr-labs/homarr/issues/168)) ([7f2ab7f](https://github.com/homarr-labs/homarr/commit/7f2ab7f192b55f970c6902cde71f85c06a5f67df)) +* **deps:** update tanstack-query monorepo to ^5.24.8 ([#187](https://github.com/homarr-labs/homarr/issues/187)) ([f98046d](https://github.com/homarr-labs/homarr/commit/f98046d9e207bd068fa1cea19c4be0cba61c14c0)) +* **deps:** update tanstack-query monorepo to ^5.25.0 ([#196](https://github.com/homarr-labs/homarr/issues/196)) ([8c9adb3](https://github.com/homarr-labs/homarr/commit/8c9adb31f34991117c18ded417bf13312a04244a)) +* **deps:** update tanstack-query monorepo to ^5.28.0 ([#225](https://github.com/homarr-labs/homarr/issues/225)) ([9a203e8](https://github.com/homarr-labs/homarr/commit/9a203e8fac4379a703ad0d13380bb1a827791cd2)) +* **deps:** update tanstack-query monorepo to ^5.28.14 ([#299](https://github.com/homarr-labs/homarr/issues/299)) ([a4f316f](https://github.com/homarr-labs/homarr/commit/a4f316f10fc11579527722263249523591762e8b)) +* **deps:** update tanstack-query monorepo to ^5.28.4 ([#235](https://github.com/homarr-labs/homarr/issues/235)) ([30278f3](https://github.com/homarr-labs/homarr/commit/30278f37d248f0222dcd86e67a3310961c804a25)) +* **deps:** update tanstack-query monorepo to ^5.28.6 ([#256](https://github.com/homarr-labs/homarr/issues/256)) ([e4e3463](https://github.com/homarr-labs/homarr/commit/e4e3463d0464c37c32da83000ae971006157d1b2)) +* **deps:** update tanstack-query monorepo to ^5.28.8 ([#265](https://github.com/homarr-labs/homarr/issues/265)) ([4783aae](https://github.com/homarr-labs/homarr/commit/4783aaea20c44d823cb01857ffd050f7539948af)) +* **deps:** update tanstack-query monorepo to ^5.29.0 ([#313](https://github.com/homarr-labs/homarr/issues/313)) ([fffefbb](https://github.com/homarr-labs/homarr/commit/fffefbb4c8767ae5803429363ecf323d2384a6a0)) +* **deps:** update tanstack-query monorepo to ^5.29.2 ([#340](https://github.com/homarr-labs/homarr/issues/340)) ([859fdf4](https://github.com/homarr-labs/homarr/commit/859fdf4c440af5176401bdee236b5e19973182ef)) +* **deps:** update tanstack-query monorepo to ^5.32.0 ([#374](https://github.com/homarr-labs/homarr/issues/374)) ([0cdf0b7](https://github.com/homarr-labs/homarr/commit/0cdf0b73bfc410c7457fe7b379a380fdf83a938b)) +* **deps:** update tanstack-query monorepo to ^5.32.1 ([#402](https://github.com/homarr-labs/homarr/issues/402)) ([c988f3d](https://github.com/homarr-labs/homarr/commit/c988f3d7f827dd3121582a69fe1219dedb1ae246)) +* **deps:** update tanstack-query monorepo to ^5.34.1 ([#427](https://github.com/homarr-labs/homarr/issues/427)) ([fb43fc6](https://github.com/homarr-labs/homarr/commit/fb43fc604657e0ee3361db5fb3df8bdf68a22a51)) +* **deps:** update tanstack-query monorepo to ^5.34.2 ([#439](https://github.com/homarr-labs/homarr/issues/439)) ([08d1b6c](https://github.com/homarr-labs/homarr/commit/08d1b6c638c008936d67e1fe720313deaae147cd)) +* **deps:** update tanstack-query monorepo to ^5.35.1 ([#446](https://github.com/homarr-labs/homarr/issues/446)) ([96158bc](https://github.com/homarr-labs/homarr/commit/96158bcb5e0818f698f04f107dab24b6285f32df)) +* **deps:** update tanstack-query monorepo to ^5.35.5 ([#465](https://github.com/homarr-labs/homarr/issues/465)) ([8e6d143](https://github.com/homarr-labs/homarr/commit/8e6d143edc6613766ea86d3c84ef392aea867a0a)) +* **deps:** update tanstack-query monorepo to ^5.36.0 ([#481](https://github.com/homarr-labs/homarr/issues/481)) ([1570faa](https://github.com/homarr-labs/homarr/commit/1570faa20af2c1b4173ade77565691176219c601)) +* **deps:** update tanstack-query monorepo to ^5.36.2 ([#496](https://github.com/homarr-labs/homarr/issues/496)) ([023feaf](https://github.com/homarr-labs/homarr/commit/023feafafe5f78b73870a48a06d037b563999d5d)) +* **deps:** update tanstack-query monorepo to ^5.37.1 ([#513](https://github.com/homarr-labs/homarr/issues/513)) ([b312032](https://github.com/homarr-labs/homarr/commit/b312032f02db6fac0e95456ef23cf84d4ab485b0)) +* **deps:** update tanstack-query monorepo to ^5.40.0 ([#552](https://github.com/homarr-labs/homarr/issues/552)) ([8f50def](https://github.com/homarr-labs/homarr/commit/8f50def4c931545fbe4b24a2c501c725e088ce9f)) +* **deps:** update tanstack-query monorepo to ^5.40.1 ([#617](https://github.com/homarr-labs/homarr/issues/617)) ([946ea87](https://github.com/homarr-labs/homarr/commit/946ea8753fd45582ba15b6fc69a434039d341b1d)) +* **deps:** update tanstack-query monorepo to ^5.44.0 ([#657](https://github.com/homarr-labs/homarr/issues/657)) ([8b3bc03](https://github.com/homarr-labs/homarr/commit/8b3bc03b9be9d70d11d982869250d575b24ca4b8)) +* **deps:** update tanstack-query monorepo to ^5.45.0 ([#660](https://github.com/homarr-labs/homarr/issues/660)) ([5547e52](https://github.com/homarr-labs/homarr/commit/5547e520016b92c0981899099cce1bf82f7d1a00)) +* **deps:** update tanstack-query monorepo to ^5.45.1 ([#677](https://github.com/homarr-labs/homarr/issues/677)) ([33e8cc7](https://github.com/homarr-labs/homarr/commit/33e8cc7412e2cc4541ae5e58ae45b20ffa74972a)) +* **deps:** update tanstack-query monorepo to ^5.47.0 ([#713](https://github.com/homarr-labs/homarr/issues/713)) ([75748df](https://github.com/homarr-labs/homarr/commit/75748dfbc35057b7f44e836fd2864c76c2705237)) +* **deps:** update tanstack-query monorepo to ^5.48.0 ([#714](https://github.com/homarr-labs/homarr/issues/714)) ([a76e941](https://github.com/homarr-labs/homarr/commit/a76e941378a2d8669a9b4484b8301f5557dda1a3)) +* **deps:** update tanstack-query monorepo to ^5.49.0 ([#728](https://github.com/homarr-labs/homarr/issues/728)) ([531cd0d](https://github.com/homarr-labs/homarr/commit/531cd0de2520429d3b3270e05fc5d8e9c5732163)) +* **deps:** update tanstack-query monorepo to ^5.49.2 ([#730](https://github.com/homarr-labs/homarr/issues/730)) ([8ee0d67](https://github.com/homarr-labs/homarr/commit/8ee0d67a36b30ae1e5f679a0c24014c3c79709ca)) +* **deps:** update tanstack-query monorepo to ^5.50.1 ([#747](https://github.com/homarr-labs/homarr/issues/747)) ([a67050e](https://github.com/homarr-labs/homarr/commit/a67050e77b14a0ad1e6b960dad24f4a35779f858)) +* **deps:** update tanstack-query monorepo to ^5.51.1 ([#782](https://github.com/homarr-labs/homarr/issues/782)) ([be4748b](https://github.com/homarr-labs/homarr/commit/be4748b8fa5cf2b7f17acd03753115b9562f3285)) +* **deps:** update tanstack-query monorepo to ^5.51.11 ([#836](https://github.com/homarr-labs/homarr/issues/836)) ([14d19fc](https://github.com/homarr-labs/homarr/commit/14d19fcd8bf9577cd483b6bb89e1cc3bbaf484b1)) +* **deps:** update tanstack-query monorepo to ^5.51.14 ([#866](https://github.com/homarr-labs/homarr/issues/866)) ([04a836e](https://github.com/homarr-labs/homarr/commit/04a836e824e607f48b876d6882aecb5de3b666ae)) +* **deps:** update tanstack-query monorepo to ^5.51.15 ([#868](https://github.com/homarr-labs/homarr/issues/868)) ([63b3c1b](https://github.com/homarr-labs/homarr/commit/63b3c1bff19d9265ef2c80dfbbc9058354a9acfb)) +* **deps:** update tanstack-query monorepo to ^5.51.16 ([#892](https://github.com/homarr-labs/homarr/issues/892)) ([3a5f818](https://github.com/homarr-labs/homarr/commit/3a5f818e7cbef6365f9ae89996657cdb418d7917)) +* **deps:** update tanstack-query monorepo to ^5.51.17 ([#899](https://github.com/homarr-labs/homarr/issues/899)) ([5c73b54](https://github.com/homarr-labs/homarr/commit/5c73b544285d1fca753168a796e1143da5ffc37d)) +* **deps:** update tanstack-query monorepo to ^5.51.18 ([#900](https://github.com/homarr-labs/homarr/issues/900)) ([26615d8](https://github.com/homarr-labs/homarr/commit/26615d80e795c050e2ac94ba133cbf23c74b2d27)) +* **deps:** update tanstack-query monorepo to ^5.51.21 ([#905](https://github.com/homarr-labs/homarr/issues/905)) ([2a459dd](https://github.com/homarr-labs/homarr/commit/2a459dda205448ebfa3d8451a5229a82fa850fbb)) +* **deps:** update tanstack-query monorepo to ^5.51.23 ([#936](https://github.com/homarr-labs/homarr/issues/936)) ([f9e2df0](https://github.com/homarr-labs/homarr/commit/f9e2df085b2ba737c2ef6375474865b34a3f43cf)) +* **deps:** update tanstack-query monorepo to ^5.51.24 ([#997](https://github.com/homarr-labs/homarr/issues/997)) ([2f77be8](https://github.com/homarr-labs/homarr/commit/2f77be8045ea67d1f5db20bd140c9e19af903571)) +* **deps:** update tanstack-query monorepo to ^5.51.3 ([#821](https://github.com/homarr-labs/homarr/issues/821)) ([05bbc19](https://github.com/homarr-labs/homarr/commit/05bbc19a15b8f8d7cdef4b9fee3174b28918bc9d)) +* **deps:** update tanstack-query monorepo to ^5.51.4 ([#824](https://github.com/homarr-labs/homarr/issues/824)) ([86c729a](https://github.com/homarr-labs/homarr/commit/86c729a83f01cb4a3ce5413b6b4117505b6b61f4)) +* **deps:** update tanstack-query monorepo to ^5.51.5 ([#829](https://github.com/homarr-labs/homarr/issues/829)) ([a4edda6](https://github.com/homarr-labs/homarr/commit/a4edda6932ed5008fe4609b55636232a7ca500ce)) +* **deps:** update tanstack-query monorepo to ^5.51.8 ([#830](https://github.com/homarr-labs/homarr/issues/830)) ([ee2703c](https://github.com/homarr-labs/homarr/commit/ee2703ca4be312e5e0f2b9964fa3fb1d0bd074c1)) +* **deps:** update tanstack-query monorepo to ^5.51.9 ([#831](https://github.com/homarr-labs/homarr/issues/831)) ([c8f3eb6](https://github.com/homarr-labs/homarr/commit/c8f3eb69e54a732274fd85841b1d1181fbc9a279)) +* **deps:** update tanstack-query monorepo to ^5.52.0 ([#1002](https://github.com/homarr-labs/homarr/issues/1002)) ([432af79](https://github.com/homarr-labs/homarr/commit/432af7905510283779aacf7331a82a3d53f0c899)) +* **deps:** update tanstack-query monorepo to ^5.52.1 ([#1013](https://github.com/homarr-labs/homarr/issues/1013)) ([8779b7d](https://github.com/homarr-labs/homarr/commit/8779b7d6073f41b52bf2fadda25ccab8d1ae1622)) +* **deps:** update tanstack-query monorepo to ^5.52.2 ([#1037](https://github.com/homarr-labs/homarr/issues/1037)) ([48d01e3](https://github.com/homarr-labs/homarr/commit/48d01e3c6ceb9fd4e60f0bd720374da53206d94e)) +* **deps:** update tanstack-query monorepo to ^5.52.3 ([#1043](https://github.com/homarr-labs/homarr/issues/1043)) ([afb6adf](https://github.com/homarr-labs/homarr/commit/afb6adf1e68f0f1b6b819a32a95d0a28855e88c4)) +* **deps:** update tanstack-query monorepo to ^5.53.1 ([#1045](https://github.com/homarr-labs/homarr/issues/1045)) ([775c359](https://github.com/homarr-labs/homarr/commit/775c3597dcd9008606446d066ddb46dc758b5689)) +* **deps:** update tanstack-query monorepo to ^5.53.2 ([#1055](https://github.com/homarr-labs/homarr/issues/1055)) ([d69fed6](https://github.com/homarr-labs/homarr/commit/d69fed6514bef0ee5cc235cca86888d040fae562)) +* **deps:** update tanstack-query monorepo to ^5.53.3 ([#1056](https://github.com/homarr-labs/homarr/issues/1056)) ([8fe162e](https://github.com/homarr-labs/homarr/commit/8fe162e16c4c06ca453437d0ee4e6491ecb2ed84)) +* **deps:** update tanstack-query monorepo to ^5.54.1 ([#1063](https://github.com/homarr-labs/homarr/issues/1063)) ([9e1faa0](https://github.com/homarr-labs/homarr/commit/9e1faa03b120a225114f7e8bf4cc683be243c4f6)) +* **deps:** update tanstack-query monorepo to ^5.55.0 ([#1070](https://github.com/homarr-labs/homarr/issues/1070)) ([00d5020](https://github.com/homarr-labs/homarr/commit/00d5020824f6661575d7201e2524151defc35585)) +* **deps:** update tanstack-query monorepo to ^5.55.2 ([#1084](https://github.com/homarr-labs/homarr/issues/1084)) ([930bc2d](https://github.com/homarr-labs/homarr/commit/930bc2d7d205e7883898fb15deefc3f5abfedced)) +* **deps:** update tanstack-query monorepo to ^5.55.4 ([#1086](https://github.com/homarr-labs/homarr/issues/1086)) ([36a7a18](https://github.com/homarr-labs/homarr/commit/36a7a18c35258f9e592755ef10583b603a5bb39e)) +* **deps:** update tanstack-query monorepo to ^5.56.0 ([#1112](https://github.com/homarr-labs/homarr/issues/1112)) ([703ecec](https://github.com/homarr-labs/homarr/commit/703ecece634a284070b15edbd4580ffbd3a58502)) +* **deps:** update tanstack-query monorepo to ^5.56.1 ([#1114](https://github.com/homarr-labs/homarr/issues/1114)) ([2d4681d](https://github.com/homarr-labs/homarr/commit/2d4681d07989bf8388152893a7e194ead1e4c59d)) +* **deps:** update tanstack-query monorepo to ^5.56.2 ([#1116](https://github.com/homarr-labs/homarr/issues/1116)) ([cae9a80](https://github.com/homarr-labs/homarr/commit/cae9a800c47e23b5ef674c19ba5a1eea127018a3)) +* **deps:** update tanstack-query monorepo to ^5.59.0 ([#1214](https://github.com/homarr-labs/homarr/issues/1214)) ([c3d54b4](https://github.com/homarr-labs/homarr/commit/c3d54b49a0ba0ae2c2a4cc3d1651cb01df2efdf7)) +* **deps:** update tanstack-query monorepo to ^5.59.14 ([#1282](https://github.com/homarr-labs/homarr/issues/1282)) ([df8f6d2](https://github.com/homarr-labs/homarr/commit/df8f6d25d4accd486274df15eb620b28fb545826)) +* **deps:** update tanstack-query monorepo to ^5.59.15 ([#1298](https://github.com/homarr-labs/homarr/issues/1298)) ([bb0026a](https://github.com/homarr-labs/homarr/commit/bb0026a9fd6093cf54dc5fdcf027ea1033ac8454)) +* **deps:** update tanstack-query monorepo to ^5.59.16 ([#1361](https://github.com/homarr-labs/homarr/issues/1361)) ([b542bad](https://github.com/homarr-labs/homarr/commit/b542bad939527d1de5a0eb0a8c384cf4f6267436)) +* **deps:** update tanstack-query monorepo to ^5.59.17 ([#1403](https://github.com/homarr-labs/homarr/issues/1403)) ([deb5a71](https://github.com/homarr-labs/homarr/commit/deb5a716db1312fcbafbd244d3399a35ab50c4e9)) +* **deps:** update tanstack-query monorepo to ^5.59.19 ([#1410](https://github.com/homarr-labs/homarr/issues/1410)) ([8983734](https://github.com/homarr-labs/homarr/commit/8983734408e9c5ea89bc3fb0e011e9030824a43c)) +* **deps:** update tanstack-query monorepo to ^5.59.20 ([#1438](https://github.com/homarr-labs/homarr/issues/1438)) ([e05567d](https://github.com/homarr-labs/homarr/commit/e05567d100e3ff99a1d41099ffe5b9333b0eb7a7)) +* **deps:** update tanstack-query monorepo to ^5.59.3 ([#1274](https://github.com/homarr-labs/homarr/issues/1274)) ([e3cd8a8](https://github.com/homarr-labs/homarr/commit/e3cd8a8b25c736e93dec8d4df4be368007785f61)) +* **deps:** update tanstack-query monorepo to ^5.59.6 ([#1276](https://github.com/homarr-labs/homarr/issues/1276)) ([efd06ea](https://github.com/homarr-labs/homarr/commit/efd06ea1079aca15b75f358916e20b13e39ac568)) +* **deps:** update tanstack-query monorepo to ^5.59.9 ([#1278](https://github.com/homarr-labs/homarr/issues/1278)) ([0ca140f](https://github.com/homarr-labs/homarr/commit/0ca140f4ff8f74a5eef496864d2bcd95e389f329)) +* **deps:** update tanstack-query monorepo to ^5.60.2 ([#1482](https://github.com/homarr-labs/homarr/issues/1482)) ([12c3bb9](https://github.com/homarr-labs/homarr/commit/12c3bb98485f3b38ba12d3fc84b7498b78fd1d8f)) +* **deps:** update tanstack-query monorepo to ^5.60.4 ([#1488](https://github.com/homarr-labs/homarr/issues/1488)) ([41f816b](https://github.com/homarr-labs/homarr/commit/41f816be5b9561398361153d3f9a07cd2e3cc6e1)) +* **deps:** update tanstack-query monorepo to ^5.60.5 ([#1489](https://github.com/homarr-labs/homarr/issues/1489)) ([6dcf1ad](https://github.com/homarr-labs/homarr/commit/6dcf1ad3446f0c564ec7c21c0fc8154e5cd1ce68)) +* **deps:** update tanstack-query monorepo to ^5.60.6 ([#1500](https://github.com/homarr-labs/homarr/issues/1500)) ([2f76e53](https://github.com/homarr-labs/homarr/commit/2f76e537b7a8a30b1a7801753b44cfd7a25dc2d6)) +* **deps:** update tanstack-query monorepo to ^5.61.0 ([#1510](https://github.com/homarr-labs/homarr/issues/1510)) ([ed10d63](https://github.com/homarr-labs/homarr/commit/ed10d63a04a2b5a8dad0ffb51fca35d8c0e88a34)) +* **deps:** update tanstack-query monorepo to ^5.61.3 ([#1536](https://github.com/homarr-labs/homarr/issues/1536)) ([24daba7](https://github.com/homarr-labs/homarr/commit/24daba743ed645e6a974bb212e28b745acdd34f7)) +* **deps:** update tanstack-query monorepo to ^5.61.4 ([#1555](https://github.com/homarr-labs/homarr/issues/1555)) ([91a199f](https://github.com/homarr-labs/homarr/commit/91a199f7d6014c97425b55f2a419b252b766b4c3)) +* **deps:** update tanstack-query monorepo to ^5.61.5 ([#1559](https://github.com/homarr-labs/homarr/issues/1559)) ([f2e7349](https://github.com/homarr-labs/homarr/commit/f2e7349cbdfc065b52951d3a54a22344dca6807b)) +* **deps:** update tanstack-query monorepo to ^5.62.0 ([#1569](https://github.com/homarr-labs/homarr/issues/1569)) ([6ad5fd5](https://github.com/homarr-labs/homarr/commit/6ad5fd55295622429035aa7f59e478ada19ec36a)) +* **deps:** update tanstack-query monorepo to ^5.62.1 ([#1584](https://github.com/homarr-labs/homarr/issues/1584)) ([0e01dd8](https://github.com/homarr-labs/homarr/commit/0e01dd86950beac24259ac1269f0159c7c33e35c)) +* **deps:** update tanstack-query monorepo to ^5.62.2 ([#1590](https://github.com/homarr-labs/homarr/issues/1590)) ([3b705f4](https://github.com/homarr-labs/homarr/commit/3b705f43b89b4c844522925c1d03a2822a2986a9)) +* **deps:** update tanstack-query monorepo to ^5.62.3 ([#1621](https://github.com/homarr-labs/homarr/issues/1621)) ([42ab783](https://github.com/homarr-labs/homarr/commit/42ab783085ab0a1998d62975aac796af1fc80a3c)) +* **deps:** update tanstack-query monorepo to ^5.62.7 ([#1638](https://github.com/homarr-labs/homarr/issues/1638)) ([e692cc8](https://github.com/homarr-labs/homarr/commit/e692cc891713802cdf8655eb54223ef8e30377ba)) +* **deps:** update tanstack-query monorepo to ^5.62.8 ([#1682](https://github.com/homarr-labs/homarr/issues/1682)) ([28667c5](https://github.com/homarr-labs/homarr/commit/28667c5e1aa5b9c9c640f251fcb4e9e1063fa922)) +* **deps:** update tanstack-query monorepo to v5.38.0 ([#551](https://github.com/homarr-labs/homarr/issues/551)) ([a029abe](https://github.com/homarr-labs/homarr/commit/a029abe6f3fa762e879717bd66bc4e8bbde3558b)) +* **deps:** update testcontainers-node monorepo to ^10.13.2 ([#1233](https://github.com/homarr-labs/homarr/issues/1233)) ([8ea8b2d](https://github.com/homarr-labs/homarr/commit/8ea8b2ded55e3d026d3d13b1baa09f740b2d3a54)) +* **deps:** update testcontainers-node monorepo to ^10.14.0 ([#1434](https://github.com/homarr-labs/homarr/issues/1434)) ([31c661b](https://github.com/homarr-labs/homarr/commit/31c661bc69c32403dd7eff262b62d86debef05bc)) +* **deps:** update testcontainers-node monorepo to ^10.15.0 ([#1521](https://github.com/homarr-labs/homarr/issues/1521)) ([6018b20](https://github.com/homarr-labs/homarr/commit/6018b20d4e2be0991c735ca690bd91062285b2bb)) +* **deps:** update testcontainers-node monorepo to ^10.16.0 ([#1604](https://github.com/homarr-labs/homarr/issues/1604)) ([feb93ef](https://github.com/homarr-labs/homarr/commit/feb93ef0c71089a005c31b4f0798a0b20dc0e36b)) +* **deps:** update tiptap monorepo to ^2.2.1 ([#40](https://github.com/homarr-labs/homarr/issues/40)) ([1e01312](https://github.com/homarr-labs/homarr/commit/1e01312fcd5e7e267db330dfdb72a8d8b83fadfd)) +* **deps:** update tiptap monorepo to ^2.2.2 ([#63](https://github.com/homarr-labs/homarr/issues/63)) ([593bc9c](https://github.com/homarr-labs/homarr/commit/593bc9ca1c05bfd69b35d6bb2b7c34d3dabe7303)) +* **deps:** update tiptap monorepo to ^2.2.3 ([#95](https://github.com/homarr-labs/homarr/issues/95)) ([3e44644](https://github.com/homarr-labs/homarr/commit/3e44644ef6e8f8e8b7d898f5794405d2e61eb3af)) +* **deps:** update tiptap monorepo to ^2.2.4 ([#153](https://github.com/homarr-labs/homarr/issues/153)) ([212063a](https://github.com/homarr-labs/homarr/commit/212063a51eb8f9a48fcfe39df9a79dca31116c08)) +* **deps:** update tiptap monorepo to ^2.2.5 ([#315](https://github.com/homarr-labs/homarr/issues/315)) ([75224e0](https://github.com/homarr-labs/homarr/commit/75224e05334361356d841c5878600709324fa3e8)) +* **deps:** update tiptap monorepo to v2.10.0 ([#1507](https://github.com/homarr-labs/homarr/issues/1507)) ([860d2e4](https://github.com/homarr-labs/homarr/commit/860d2e4f69bbdf9b3ffb37b26d514e86ceca378a)) +* **deps:** update tiptap monorepo to v2.10.1 ([#1516](https://github.com/homarr-labs/homarr/issues/1516)) ([85a69b1](https://github.com/homarr-labs/homarr/commit/85a69b13e38743d487e213012cf59b64ba52da67)) +* **deps:** update tiptap monorepo to v2.10.2 ([#1520](https://github.com/homarr-labs/homarr/issues/1520)) ([ba4c9a6](https://github.com/homarr-labs/homarr/commit/ba4c9a683ee533bd214faa8f834fb3fe8408b6bb)) +* **deps:** update tiptap monorepo to v2.10.3 ([#1556](https://github.com/homarr-labs/homarr/issues/1556)) ([c1fe655](https://github.com/homarr-labs/homarr/commit/c1fe6551ce46c00304f1a9c1e6d2d7f301f47dcb)) +* **deps:** update tiptap monorepo to v2.3.0 ([#317](https://github.com/homarr-labs/homarr/issues/317)) ([847adff](https://github.com/homarr-labs/homarr/commit/847adffe7b32310924d0e317fbc4379ed84bbca1)) +* **deps:** update tiptap monorepo to v2.3.1 ([#403](https://github.com/homarr-labs/homarr/issues/403)) ([876f21a](https://github.com/homarr-labs/homarr/commit/876f21a26dba4a2bf58a087d9d954c61baf30d07)) +* **deps:** update tiptap monorepo to v2.3.2 ([#459](https://github.com/homarr-labs/homarr/issues/459)) ([382be49](https://github.com/homarr-labs/homarr/commit/382be496ffb51bf16ff2b50689707503e610243c)) +* **deps:** update tiptap monorepo to v2.4.0 ([#494](https://github.com/homarr-labs/homarr/issues/494)) ([b18b364](https://github.com/homarr-labs/homarr/commit/b18b3642708dd36b6d269c78e8f0ce6efa6e1d17)) +* **deps:** update tiptap monorepo to v2.5.0 ([#811](https://github.com/homarr-labs/homarr/issues/811)) ([7f341ef](https://github.com/homarr-labs/homarr/commit/7f341efdb304cb9479bcce75b02f3d48ed99a8ad)) +* **deps:** update tiptap monorepo to v2.5.1 ([#813](https://github.com/homarr-labs/homarr/issues/813)) ([08ba282](https://github.com/homarr-labs/homarr/commit/08ba28252872455d960b63d688b13fffbca8edde)) +* **deps:** update tiptap monorepo to v2.5.2 ([#822](https://github.com/homarr-labs/homarr/issues/822)) ([b82128a](https://github.com/homarr-labs/homarr/commit/b82128a90cdef599b976625ab58bc20d30a78964)) +* **deps:** update tiptap monorepo to v2.5.3 ([#825](https://github.com/homarr-labs/homarr/issues/825)) ([015b42a](https://github.com/homarr-labs/homarr/commit/015b42aa61be681fc31359c00113f18331728a31)) +* **deps:** update tiptap monorepo to v2.5.4 ([#828](https://github.com/homarr-labs/homarr/issues/828)) ([baf552b](https://github.com/homarr-labs/homarr/commit/baf552bf52e35616c072e33d26014b0c181b6d46)) +* **deps:** update tiptap monorepo to v2.5.5 ([#853](https://github.com/homarr-labs/homarr/issues/853)) ([c512ddb](https://github.com/homarr-labs/homarr/commit/c512ddba493994f1b5a15dde58c32b704697fa1b)) +* **deps:** update tiptap monorepo to v2.5.6 ([#863](https://github.com/homarr-labs/homarr/issues/863)) ([d70e99c](https://github.com/homarr-labs/homarr/commit/d70e99c9734d8997a1f8a97fdf54aea1da08cc05)) +* **deps:** update tiptap monorepo to v2.5.7 ([#869](https://github.com/homarr-labs/homarr/issues/869)) ([89ab1df](https://github.com/homarr-labs/homarr/commit/89ab1df2dbdb19f4079f98289eeaeff591314fef)) +* **deps:** update tiptap monorepo to v2.5.8 ([#887](https://github.com/homarr-labs/homarr/issues/887)) ([e0566df](https://github.com/homarr-labs/homarr/commit/e0566dfcfa56c50b744a872ee0623f374696efee)) +* **deps:** update tiptap monorepo to v2.5.9 ([#922](https://github.com/homarr-labs/homarr/issues/922)) ([c6bb272](https://github.com/homarr-labs/homarr/commit/c6bb272318eccc4cf9c2790513a89cec650526e5)) +* **deps:** update tiptap monorepo to v2.6.1 ([#970](https://github.com/homarr-labs/homarr/issues/970)) ([4a34ec9](https://github.com/homarr-labs/homarr/commit/4a34ec91e5041acf257a1049a7b0c29e509b1585)) +* **deps:** update tiptap monorepo to v2.6.2 ([#972](https://github.com/homarr-labs/homarr/issues/972)) ([81a13b0](https://github.com/homarr-labs/homarr/commit/81a13b0e59eb776ca55782320f4967993e564819)) +* **deps:** update tiptap monorepo to v2.6.3 ([#980](https://github.com/homarr-labs/homarr/issues/980)) ([cc61e27](https://github.com/homarr-labs/homarr/commit/cc61e27fad4c058df6da8bdf49b2bf44d5fc0206)) +* **deps:** update tiptap monorepo to v2.6.4 ([#981](https://github.com/homarr-labs/homarr/issues/981)) ([0ba647a](https://github.com/homarr-labs/homarr/commit/0ba647ad511f45ad2fb1d35bc05f1876547602d0)) +* **deps:** update tiptap monorepo to v2.6.5 ([#1005](https://github.com/homarr-labs/homarr/issues/1005)) ([d401c8f](https://github.com/homarr-labs/homarr/commit/d401c8fa0ff47caef8e6f17aba39cf52310f6d7e)) +* **deps:** update tiptap monorepo to v2.6.6 ([#1015](https://github.com/homarr-labs/homarr/issues/1015)) ([cbf2ecf](https://github.com/homarr-labs/homarr/commit/cbf2ecfb9d3036e4077968c6ffb6c676b1e46308)) +* **deps:** update tiptap monorepo to v2.7.1 ([#1139](https://github.com/homarr-labs/homarr/issues/1139)) ([657c2ee](https://github.com/homarr-labs/homarr/commit/657c2eef80a6562c45c7d2a3b63fb03edff8eb3e)) +* **deps:** update tiptap monorepo to v2.7.2 ([#1150](https://github.com/homarr-labs/homarr/issues/1150)) ([d0e9e0f](https://github.com/homarr-labs/homarr/commit/d0e9e0f09da9afebf714c201b97528b743cc8915)) +* **deps:** update tiptap monorepo to v2.7.3 ([#1182](https://github.com/homarr-labs/homarr/issues/1182)) ([b2143ed](https://github.com/homarr-labs/homarr/commit/b2143eddeba787670d749a0f1e440936be7136d7)) +* **deps:** update tiptap monorepo to v2.7.4 ([#1186](https://github.com/homarr-labs/homarr/issues/1186)) ([4795c8c](https://github.com/homarr-labs/homarr/commit/4795c8c557f80e0019779f00afc58f053f9d6f40)) +* **deps:** update tiptap monorepo to v2.8.0 ([#1206](https://github.com/homarr-labs/homarr/issues/1206)) ([7dd4d4e](https://github.com/homarr-labs/homarr/commit/7dd4d4ec7be610c510caca1f8aa93e67095d05ed)) +* **deps:** update tiptap monorepo to v2.9.0 ([#1352](https://github.com/homarr-labs/homarr/issues/1352)) ([c3b9d98](https://github.com/homarr-labs/homarr/commit/c3b9d981f78b8131f269ec8b6b43f774196005ab)) +* **deps:** update tiptap monorepo to v2.9.1 ([#1360](https://github.com/homarr-labs/homarr/issues/1360)) ([d4919dc](https://github.com/homarr-labs/homarr/commit/d4919dc908748f61320e24f529a881547a124e7b)) +* **deps:** update typescript-eslint monorepo to ^6.20.0 ([#41](https://github.com/homarr-labs/homarr/issues/41)) ([4815230](https://github.com/homarr-labs/homarr/commit/4815230f8b0d3f9b88e72bbb4fb5f4e87daf81c1)) +* **deps:** update typescript-eslint monorepo to ^6.21.0 ([#58](https://github.com/homarr-labs/homarr/issues/58)) ([e683d61](https://github.com/homarr-labs/homarr/commit/e683d61568b61268dd04c50a31b18028b63a0a1b)) +* **deps:** update typescript-eslint monorepo to ^7.0.2 ([#122](https://github.com/homarr-labs/homarr/issues/122)) ([859eeed](https://github.com/homarr-labs/homarr/commit/859eeed32963f41b906d6dac5f16b9d9cd6ffd9e)) +* **deps:** update typescript-eslint monorepo to ^7.1.0 ([#159](https://github.com/homarr-labs/homarr/issues/159)) ([8e53792](https://github.com/homarr-labs/homarr/commit/8e5379225ad1df796a9f4829f4f8af7a41cae9d8)) +* **deps:** update typescript-eslint monorepo to ^7.1.1 ([#192](https://github.com/homarr-labs/homarr/issues/192)) ([27a63db](https://github.com/homarr-labs/homarr/commit/27a63dbf7a276d615c6de01b47e35830daff5cc9)) +* **deps:** update typescript-eslint monorepo to ^7.10.0 ([#562](https://github.com/homarr-labs/homarr/issues/562)) ([2bc0431](https://github.com/homarr-labs/homarr/commit/2bc0431e4e533476f8f7ecff2114b43759c33d9a)) +* **deps:** update typescript-eslint monorepo to ^7.11.0 ([#565](https://github.com/homarr-labs/homarr/issues/565)) ([c20f7a6](https://github.com/homarr-labs/homarr/commit/c20f7a64a0e47e2604645cc494b9d5cded15219a)) +* **deps:** update typescript-eslint monorepo to ^7.12.0 ([#616](https://github.com/homarr-labs/homarr/issues/616)) ([2623708](https://github.com/homarr-labs/homarr/commit/2623708c6dcf4ccd6c291a2548d68a918220dbed)) +* **deps:** update typescript-eslint monorepo to ^7.2.0 ([#218](https://github.com/homarr-labs/homarr/issues/218)) ([ea79953](https://github.com/homarr-labs/homarr/commit/ea79953353f0645849acbad2613f72d45f3894ea)) +* **deps:** update typescript-eslint monorepo to ^7.3.1 ([#247](https://github.com/homarr-labs/homarr/issues/247)) ([36e509a](https://github.com/homarr-labs/homarr/commit/36e509a474bc38a3b6c012bd566b73054f170f84)) +* **deps:** update typescript-eslint monorepo to ^7.5.0 ([#298](https://github.com/homarr-labs/homarr/issues/298)) ([54a7d1f](https://github.com/homarr-labs/homarr/commit/54a7d1f4ae2e470924d578bd507335e54d6c517a)) +* **deps:** update typescript-eslint monorepo to ^7.6.0 ([#329](https://github.com/homarr-labs/homarr/issues/329)) ([2ccb7d1](https://github.com/homarr-labs/homarr/commit/2ccb7d17655d3b9af67f30aa21a93764eeb81ac4)) +* **deps:** update typescript-eslint monorepo to ^7.7.1 ([#354](https://github.com/homarr-labs/homarr/issues/354)) ([0342a17](https://github.com/homarr-labs/homarr/commit/0342a177bb4a5cb642f79411a6003eca3a3a3e6d)) +* **deps:** update typescript-eslint monorepo to ^7.8.0 ([#395](https://github.com/homarr-labs/homarr/issues/395)) ([584483a](https://github.com/homarr-labs/homarr/commit/584483aa9cf309e3efa83f00ab735797638210ee)) +* **deps:** update typescript-eslint monorepo to ^7.9.0 ([#491](https://github.com/homarr-labs/homarr/issues/491)) ([a702f7d](https://github.com/homarr-labs/homarr/commit/a702f7dc67a3b63667ae019b4d807d54dc925ae0)) +* **deps:** update typescript-eslint monorepo to v7 ([#87](https://github.com/homarr-labs/homarr/issues/87)) ([f913384](https://github.com/homarr-labs/homarr/commit/f91338446df1eafce92842fa0ce9ebdabea7f629)) +* **deps:** update typescript-eslint monorepo to v7.10.0 ([#529](https://github.com/homarr-labs/homarr/issues/529)) ([30fe9fe](https://github.com/homarr-labs/homarr/commit/30fe9fef844e7cac5a59185926643baeb5e5ed2e)) +* **deps:** update xterm monorepo ([#312](https://github.com/homarr-labs/homarr/issues/312)) ([a5b8fdb](https://github.com/homarr-labs/homarr/commit/a5b8fdb3977c6613cfe592b20f57c0388e0c6229)) +* disable env validation in ci ([d7a30cd](https://github.com/homarr-labs/homarr/commit/d7a30cd0dd2dfd0e7db86d0c22780cf4c1e6423e)) +* disable env validation in ci ([c84fb63](https://github.com/homarr-labs/homarr/commit/c84fb63b25b199466cf1ba6f34ec5fd31d2a434c)) +* dispatch request-logger hides negative numbers, dates and date times ([#1506](https://github.com/homarr-labs/homarr/issues/1506)) ([2ffa9d0](https://github.com/homarr-labs/homarr/commit/2ffa9d0e712233b19ade71ec62fcf34de2128340)) +* display on safari ([#1071](https://github.com/homarr-labs/homarr/issues/1071)) ([753d091](https://github.com/homarr-labs/homarr/commit/753d091dbbc5665276461f5e1d79224ea1c0deb7)) +* DnsHole controls timer ([#953](https://github.com/homarr-labs/homarr/issues/953)) ([69e69ee](https://github.com/homarr-labs/homarr/commit/69e69ee315535555a8fd4cb43273357c9a4ce24b)) +* docker build ([#777](https://github.com/homarr-labs/homarr/issues/777)) ([01eb846](https://github.com/homarr-labs/homarr/commit/01eb84654d57afc2164ae8b7912752ecb6631f43)) +* docker build not working ([#1365](https://github.com/homarr-labs/homarr/issues/1365)) ([041006c](https://github.com/homarr-labs/homarr/commit/041006c181d7a1599400ce6d296d773c13f396b0)) +* docker development path in package.json ([#416](https://github.com/homarr-labs/homarr/issues/416)) ([48c2473](https://github.com/homarr-labs/homarr/commit/48c2473ab31354a492b86aa5d2d3319cbcadccea)) +* docker platforms ([f0d6676](https://github.com/homarr-labs/homarr/commit/f0d6676917c06a068aa432f49e5d74fc2ad45631)) +* docker push flag ([eab5c10](https://github.com/homarr-labs/homarr/commit/eab5c10fa6b36c22ee4bf1526d1000bc5137ac7b)) +* docker push flag ([1128110](https://github.com/homarr-labs/homarr/commit/1128110be386297ef0e128da477c1d9572336cad)) +* email verified check is in a newline in users table ([#1218](https://github.com/homarr-labs/homarr/issues/1218)) ([8b5ea3c](https://github.com/homarr-labs/homarr/commit/8b5ea3c5d3af5e904467591b9e066488b6a4abc1)) +* empty wrappers without items should not be visible in view mode ([#1026](https://github.com/homarr-labs/homarr/issues/1026)) ([022fad9](https://github.com/homarr-labs/homarr/commit/022fad92a9aa74c132c91c6e0a942c7d520eac88)) +* everyone group page throws error ([#1450](https://github.com/homarr-labs/homarr/issues/1450)) ([f3ebd6c](https://github.com/homarr-labs/homarr/commit/f3ebd6ccdf2d5964daf50f4b9221d2231a91855d)) +* external users can be added to groups manually ([#1540](https://github.com/homarr-labs/homarr/issues/1540)) ([32e6b8e](https://github.com/homarr-labs/homarr/commit/32e6b8ee45cac46cf71fd5c6cd71558c352b4097)) +* fetch timeout for external requests to small ([#881](https://github.com/homarr-labs/homarr/issues/881)) ([67dad45](https://github.com/homarr-labs/homarr/commit/67dad45214a0dcda9d79abb4c731b7705ceb7f2d)) +* fix binary conflicts for linux ([#1583](https://github.com/homarr-labs/homarr/issues/1583)) ([70ab294](https://github.com/homarr-labs/homarr/commit/70ab29454a53958676de33bb39b9be1ea613e135)) +* fix i18n-ally extension config ([#1462](https://github.com/homarr-labs/homarr/issues/1462)) ([4ba9e94](https://github.com/homarr-labs/homarr/commit/4ba9e94dd6f632492ed250ccc267f5ac72805290)) +* Fix typecheck, lint issues and errors brought to dnshole summary. ([#916](https://github.com/homarr-labs/homarr/issues/916)) ([0cec1db](https://github.com/homarr-labs/homarr/commit/0cec1dbb1743bbe2af03a006c24d3588d5a55d83)) +* github actor name for automatic approval wrong ([#943](https://github.com/homarr-labs/homarr/issues/943)) ([c833f2c](https://github.com/homarr-labs/homarr/commit/c833f2cbf2560919f5e2381678a46d2d8d649854)) +* gridstack not working ([#642](https://github.com/homarr-labs/homarr/issues/642)) ([2c1b52a](https://github.com/homarr-labs/homarr/commit/2c1b52aff95af95b2732c4e86af87fffdcbd6896)) +* groups can be created with empty names ([#1267](https://github.com/homarr-labs/homarr/issues/1267)) ([98cf214](https://github.com/homarr-labs/homarr/commit/98cf214aed9423dbf4e13982641d9e167de4171d)) +* Handle existing user when editing profile ([6e2bd0c](https://github.com/homarr-labs/homarr/commit/6e2bd0ce11697cdfd59500d506e68ac22ed38273)) +* hard to move iframe widget [#1075](https://github.com/homarr-labs/homarr/issues/1075) ([#1101](https://github.com/homarr-labs/homarr/issues/1101)) ([5e77221](https://github.com/homarr-labs/homarr/commit/5e772215a9a26f04fec25d3d983a86e8c53faf7c)) +* health-check widget sorting & last seen ([#1363](https://github.com/homarr-labs/homarr/issues/1363)) ([c37a0e3](https://github.com/homarr-labs/homarr/commit/c37a0e38d950ec24bd33a174a229ee20434fa6f9)) +* icon picker keyboard interactions ([#1666](https://github.com/homarr-labs/homarr/issues/1666)) ([82ec77d](https://github.com/homarr-labs/homarr/commit/82ec77d2dac9764d44417a4e486a099f89b5e39c)) +* icon picker suspense issue ([#1533](https://github.com/homarr-labs/homarr/issues/1533)) ([ecf299e](https://github.com/homarr-labs/homarr/commit/ecf299e03b5906a7f006397ef1df463a2c531468)) +* icon selector is a select not an autocomplete [#515](https://github.com/homarr-labs/homarr/issues/515) ([#675](https://github.com/homarr-labs/homarr/issues/675)) ([e957c6b](https://github.com/homarr-labs/homarr/commit/e957c6b601b1ed1172df8ee998a50a56e4b83f1f)) +* improve ping performance ([#1020](https://github.com/homarr-labs/homarr/issues/1020)) ([b81f5a2](https://github.com/homarr-labs/homarr/commit/b81f5a2ee349f1b8205a86d72d00c4a2e3470d1f)) +* inconsistent session cookie ([#1310](https://github.com/homarr-labs/homarr/issues/1310)) ([12105b3](https://github.com/homarr-labs/homarr/commit/12105b3b2935afec4f43aed05e4e5700986430ea)) +* indexer manager UI behaviour + class naming ([#1134](https://github.com/homarr-labs/homarr/issues/1134)) ([6d4d6ef](https://github.com/homarr-labs/homarr/commit/6d4d6efe3f575830d10e8d04d71b14dcda82223b)) +* insert limit of sqlite is smaller than amount of icons ([#1161](https://github.com/homarr-labs/homarr/issues/1161)) ([9eea8d4](https://github.com/homarr-labs/homarr/commit/9eea8d48e8bc0776d6074840a47c4b4c2ba38347)) +* integration actions hidden for full access users ([#1300](https://github.com/homarr-labs/homarr/issues/1300)) ([476fda2](https://github.com/homarr-labs/homarr/commit/476fda279db3a501a376b5b77eff2ae99b8a0225)) +* integration links in manage section do not work ([#441](https://github.com/homarr-labs/homarr/issues/441)) ([4b80b16](https://github.com/homarr-labs/homarr/commit/4b80b16b530af17649ef71ab9481574b3e9a0159)) +* issue with category removal and ready state ([#129](https://github.com/homarr-labs/homarr/issues/129)) ([1e414af](https://github.com/homarr-labs/homarr/commit/1e414af57c604770118a3fac59941bfaff0ab6db)) +* issue with color scheme in layout ([#1168](https://github.com/homarr-labs/homarr/issues/1168)) ([8f7ed05](https://github.com/homarr-labs/homarr/commit/8f7ed056c435a66d095cdfd43b6e893dfc7e6da3)) +* issues found in security audit ([#1668](https://github.com/homarr-labs/homarr/issues/1668)) ([922101d](https://github.com/homarr-labs/homarr/commit/922101dcbd0c512815b2cbb354cbab0fe80028c0)) +* it was possible to go to the create user page when credentials login disabled ([#1217](https://github.com/homarr-labs/homarr/issues/1217)) ([d63f6d2](https://github.com/homarr-labs/homarr/commit/d63f6d270f496053ae52bc3b9bfe484372c5b9d3)) +* items can not be placed in newly created dynamic section without saving ([#1513](https://github.com/homarr-labs/homarr/issues/1513)) ([73cb0b9](https://github.com/homarr-labs/homarr/commit/73cb0b99accfeb05c63c78ff227db1d5f23b99b2)) +* job translations ([#846](https://github.com/homarr-labs/homarr/issues/846)) ([43e4801](https://github.com/homarr-labs/homarr/commit/43e48010e5f1d7cf65ad779c8684a7b468e43688)) +* local websocket url wrong ([#1328](https://github.com/homarr-labs/homarr/issues/1328)) ([7572634](https://github.com/homarr-labs/homarr/commit/757263478036d01d8fdbabf3857bb6ebd59ba9af)) +* login before pushing image ([4836801](https://github.com/homarr-labs/homarr/commit/4836801004301375220e8181c5f14e56020312d2)) +* login with revalidate path and wrong preferences link ([#654](https://github.com/homarr-labs/homarr/issues/654)) ([8e4ba37](https://github.com/homarr-labs/homarr/commit/8e4ba37f94294577926ae6e668d50b2e151b2d35)) +* make oldmarr app schema less restrictive ([#1495](https://github.com/homarr-labs/homarr/issues/1495)) ([879aa11](https://github.com/homarr-labs/homarr/commit/879aa1152f8e9182c14775672cf371fdc639e223)) +* Manage banner animation hitch fix ([#826](https://github.com/homarr-labs/homarr/issues/826)) ([4e03e7f](https://github.com/homarr-labs/homarr/commit/4e03e7f49d931090636dea7ebed4a0bea9659177)) +* manage links wrong ([#754](https://github.com/homarr-labs/homarr/issues/754)) ([be71114](https://github.com/homarr-labs/homarr/commit/be711149f7d1ef82ab30e43209d6173f2520de57)) +* mantine react table style issue ([#508](https://github.com/homarr-labs/homarr/issues/508)) ([5723295](https://github.com/homarr-labs/homarr/commit/5723295856ae557a25db3b5782e6c4bea6b6c301)) +* mantine-react-table not localized [#333](https://github.com/homarr-labs/homarr/issues/333) ([#873](https://github.com/homarr-labs/homarr/issues/873)) ([4380aa9](https://github.com/homarr-labs/homarr/commit/4380aa9b3e8659bbb95f8d91e35bffc87c8e65c5)) +* matcher for translation middleware only supports en and de ([#1528](https://github.com/homarr-labs/homarr/issues/1528)) ([38143b6](https://github.com/homarr-labs/homarr/commit/38143b679e389633dbd27a2fede866c3696c583c)) +* memory leak caused by many unclosed redis subscriptions ([#750](https://github.com/homarr-labs/homarr/issues/750)) ([998615f](https://github.com/homarr-labs/homarr/commit/998615fc11cfcca1d1a51464550d599addb8e49f)) +* middleware fetch failed for docker container ([#1424](https://github.com/homarr-labs/homarr/issues/1424)) ([b7fc1ae](https://github.com/homarr-labs/homarr/commit/b7fc1ae4bb0aa03595d849d909b997c307dce26c)) +* missing breadcrumb translation, wrong spacing in user layout ([#872](https://github.com/homarr-labs/homarr/issues/872)) ([55a000a](https://github.com/homarr-labs/homarr/commit/55a000a7fc2b2c977af3f25d5196a464c6890745)) +* missing migration for default colorscheme change ([#1335](https://github.com/homarr-labs/homarr/issues/1335)) ([9c5972f](https://github.com/homarr-labs/homarr/commit/9c5972faf45a31ec379fe7a2fdd19548755d27ed)) +* missing translations for apps / integrations [#438](https://github.com/homarr-labs/homarr/issues/438) ([#674](https://github.com/homarr-labs/homarr/issues/674)) ([f358c33](https://github.com/homarr-labs/homarr/commit/f358c33bd37e581d7a3ce02f527eb499f8ae4b85)) +* modal transition not working ([#433](https://github.com/homarr-labs/homarr/issues/433)) ([b888fad](https://github.com/homarr-labs/homarr/commit/b888fad1fc288961f0582464392e3f12751e9146)) +* moving categories up and down is not working ([#1542](https://github.com/homarr-labs/homarr/issues/1542)) ([52d2a88](https://github.com/homarr-labs/homarr/commit/52d2a88b61a6ef8513560e8810bce6fa0867f0a6)) +* mysql migration not working ([#1138](https://github.com/homarr-labs/homarr/issues/1138)) ([003cc51](https://github.com/homarr-labs/homarr/commit/003cc5160c68d73e3cfbc3e933099a9275782b5b)) +* new sections without add and change listeners ([#1230](https://github.com/homarr-labs/homarr/issues/1230)) ([665df53](https://github.com/homarr-labs/homarr/commit/665df53a39cc90d4155b3c8436a88986aa7a5b23)) +* next auth host not trusted ([#144](https://github.com/homarr-labs/homarr/issues/144)) ([b2cee8f](https://github.com/homarr-labs/homarr/commit/b2cee8f6936d526072dd65a59a494081cfb81c16)) +* nextjs is slow dev server ([#364](https://github.com/homarr-labs/homarr/issues/364)) ([b78d32b](https://github.com/homarr-labs/homarr/commit/b78d32b81c6075a3d04abf0e8e7631e8ce6ef49c)) +* node cache cleanup error ([#1124](https://github.com/homarr-labs/homarr/issues/1124)) ([16a5b43](https://github.com/homarr-labs/homarr/commit/16a5b43695f5e8c8d3ba5ac9d1bfe2dec83f3bf1)) +* notebook save button on align buttons ([#1456](https://github.com/homarr-labs/homarr/issues/1456)) ([15abfbb](https://github.com/homarr-labs/homarr/commit/15abfbbdf722b9f996c69072b57105ecfdc647ad)) +* **notebook:** default-content image path ([#1244](https://github.com/homarr-labs/homarr/issues/1244)) ([b5bfe90](https://github.com/homarr-labs/homarr/commit/b5bfe90453b8ad5028b52b856631ec30f3f80afd)) +* open navigation item by default ([#716](https://github.com/homarr-labs/homarr/issues/716)) ([c4b54ed](https://github.com/homarr-labs/homarr/commit/c4b54ed36c2da54457ac58496e62e13856bc0c98)) +* open-api doc generation failing, post patch and delete not exported ([#1565](https://github.com/homarr-labs/homarr/issues/1565)) ([2d7efc3](https://github.com/homarr-labs/homarr/commit/2d7efc3ffacb16c27219c26f20fd0682304927e0)) +* overview in series of sonarr schema is optional ([#880](https://github.com/homarr-labs/homarr/issues/880)) ([406ed16](https://github.com/homarr-labs/homarr/commit/406ed16ce45683d04e7f0293037d1eeae269795d)) +* pass token to cli ([653f42b](https://github.com/homarr-labs/homarr/commit/653f42bccb8a5893eb64d66c4963068b37011cd7)) +* permissions not restricted for certain management pages / actions ([#1219](https://github.com/homarr-labs/homarr/issues/1219)) ([1421ccc](https://github.com/homarr-labs/homarr/commit/1421ccc917fc54a8afcf6ba700d4b0590fa90ed5)) +* ping urls are not reset when restarting ([#924](https://github.com/homarr-labs/homarr/issues/924)) ([365e267](https://github.com/homarr-labs/homarr/commit/365e267b8d7ba75e47af974dec6f427592095185)) +* pnpm dev did not work caused by tsx update ([#638](https://github.com/homarr-labs/homarr/issues/638)) ([fb92c3e](https://github.com/homarr-labs/homarr/commit/fb92c3e95c164b4297c74bbe18461cd08b003112)) +* prevent flickering by removing auto color scheme and default background color ([#1299](https://github.com/homarr-labs/homarr/issues/1299)) ([cd77acd](https://github.com/homarr-labs/homarr/commit/cd77acdfabf6f58aa1973e8db9408379801a8085)) +* rdb files can not be saved because of permission issues bug: redis can not save RDB files [#318](https://github.com/homarr-labs/homarr/issues/318) ([#472](https://github.com/homarr-labs/homarr/issues/472)) ([fd44ee4](https://github.com/homarr-labs/homarr/commit/fd44ee48f4dbd67a1f86a6a3fe7c7c986b87443a)) +* redirect url from login not working ([#952](https://github.com/homarr-labs/homarr/issues/952)) ([349c494](https://github.com/homarr-labs/homarr/commit/349c49462fdf29741910e036e4494909c13b6124)) +* remove unnecessary complex copy and build steps in dockerfile ([#1595](https://github.com/homarr-labs/homarr/issues/1595)) ([2686dad](https://github.com/homarr-labs/homarr/commit/2686dad63017cd3b8e45818bfcb27fa3618f1a15)) +* remove unused properties in SabNZBd schema ([#1415](https://github.com/homarr-labs/homarr/issues/1415)) ([ceafd37](https://github.com/homarr-labs/homarr/commit/ceafd3747b3a56531ca3357f68fd33350cf5c896)) +* Remove version override ([#67](https://github.com/homarr-labs/homarr/issues/67)) ([55ec600](https://github.com/homarr-labs/homarr/commit/55ec60041ac5fd38861220f42e6b6daba1fb3eb3)) +* rename default to home board ([#1538](https://github.com/homarr-labs/homarr/issues/1538)) ([1c4d4f4](https://github.com/homarr-labs/homarr/commit/1c4d4f4e9d39d52d6a8e69f06c1d6246c774ed79)) +* renovate approval run for all pull requests on every pull request change ([#942](https://github.com/homarr-labs/homarr/issues/942)) ([017c378](https://github.com/homarr-labs/homarr/commit/017c378582cca20688acac171bab803597d825b4)) +* renovate approval workflow not running ([#948](https://github.com/homarr-labs/homarr/issues/948)) ([ab7d3f8](https://github.com/homarr-labs/homarr/commit/ab7d3f8e4c82fcee9af6f79c70943633fec9af95)) +* renovate automatic approval typo no file extension ([#572](https://github.com/homarr-labs/homarr/issues/572)) ([c2185e3](https://github.com/homarr-labs/homarr/commit/c2185e34890b028eac7486a52d04967037be2183)) +* renovate config with json does not support comments ([#641](https://github.com/homarr-labs/homarr/issues/641)) ([e46ea71](https://github.com/homarr-labs/homarr/commit/e46ea71bc2f89f02403e8a9597dc02474181776d)) +* restrict access to docker containers page to admins ([#912](https://github.com/homarr-labs/homarr/issues/912)) ([b8b084c](https://github.com/homarr-labs/homarr/commit/b8b084c188b28ba8fb317156433e694e7d37dfbb)) +* revert mysql2 to version 3.9.2 as with 3.9.3 nextjs build fails ([1fc2df1](https://github.com/homarr-labs/homarr/commit/1fc2df19ec6e707f7dc9ca11e60f021dd03fc5aa)) +* rtl common translation unnecessary ([#1246](https://github.com/homarr-labs/homarr/issues/1246)) ([770768e](https://github.com/homarr-labs/homarr/commit/770768eb211259848437522615b7b78ecfca8ee5)) +* sensitive data can be leaked through query parameters ([#1208](https://github.com/homarr-labs/homarr/issues/1208)) ([f24c068](https://github.com/homarr-labs/homarr/commit/f24c06852e0bf6d672b58b784ce34d96581c2c03)) +* server data is loaded on settings page [#363](https://github.com/homarr-labs/homarr/issues/363) ([#414](https://github.com/homarr-labs/homarr/issues/414)) ([7c98b65](https://github.com/homarr-labs/homarr/commit/7c98b65401778a61a4af4206612fa62dd95ba9a5)) +* sessions from inactive providers can still be used ([#1458](https://github.com/homarr-labs/homarr/issues/1458)) ([1105f00](https://github.com/homarr-labs/homarr/commit/1105f0029fd1479e3ab6d8dae8524233c264ca21)) +* sharp is not installed ([#397](https://github.com/homarr-labs/homarr/issues/397)) ([5f24797](https://github.com/homarr-labs/homarr/commit/5f247977fa50405d5daed9f628d1170d15be412d)), closes [#320](https://github.com/homarr-labs/homarr/issues/320) +* specify step image version ([fa2c448](https://github.com/homarr-labs/homarr/commit/fa2c448bac9734662295cb8ebd62f733d3153be2)) +* **spotlight:** x button not clickable, help links open in current tab, bad screen usage on mobile ([#1199](https://github.com/homarr-labs/homarr/issues/1199)) ([42a49e6](https://github.com/homarr-labs/homarr/commit/42a49e6461f1834a1e54563e908fe75457de6d96)) +* styles for light mode ([#1645](https://github.com/homarr-labs/homarr/issues/1645)) ([cf9656d](https://github.com/homarr-labs/homarr/commit/cf9656d91eedc73224e9cfc8871c977988994425)) +* testConnectionAsync url ([#1024](https://github.com/homarr-labs/homarr/issues/1024)) ([e34af86](https://github.com/homarr-labs/homarr/commit/e34af8659b6562e1ec3ebc502eff52ef3c699654)) +* trailing slash integration url issues ([#1571](https://github.com/homarr-labs/homarr/issues/1571)) ([b277f44](https://github.com/homarr-labs/homarr/commit/b277f444b2c01e251b53069c17674eb4188b5f8d)) +* transfer group not invalidating path ([#1539](https://github.com/homarr-labs/homarr/issues/1539)) ([74e1b6b](https://github.com/homarr-labs/homarr/commit/74e1b6b54494455fecc37f673569482c3fad1ce4)) +* trpc error at least one integration ([#1660](https://github.com/homarr-labs/homarr/issues/1660)) ([f857105](https://github.com/homarr-labs/homarr/commit/f8571059941a4c13b9b8bca24b399ca06a8aa13f)) +* try using other variable ([5c68ac9](https://github.com/homarr-labs/homarr/commit/5c68ac9e2eda1c28befd25a14cc3c2b6e3965c34)) +* tsx not working ([#434](https://github.com/homarr-labs/homarr/issues/434)) ([5abd438](https://github.com/homarr-labs/homarr/commit/5abd438a494048738017a976faa35e1c79c7fd96)) +* typo in automatic release commit message ([#726](https://github.com/homarr-labs/homarr/issues/726)) ([8fc2884](https://github.com/homarr-labs/homarr/commit/8fc28844bbedb4edbdc504aba6330bad06d34e93)) +* typo in renovate config name ([#557](https://github.com/homarr-labs/homarr/issues/557)) ([4d1e4d5](https://github.com/homarr-labs/homarr/commit/4d1e4d55bc56a567aa5ae70a1c2d6bd7ed738954)) +* unable to select integration on board page ([#450](https://github.com/homarr-labs/homarr/issues/450)) ([c884644](https://github.com/homarr-labs/homarr/commit/c88464498fcca95232e87b684b20e932891b939c)) +* Update check for user existence ([65025a5](https://github.com/homarr-labs/homarr/commit/65025a5dda4414aa98ac042b64b22f15ddc8bff8)) +* use correct branch for tag compare ([0c7f479](https://github.com/homarr-labs/homarr/commit/0c7f47995211f31fa81d0f27b9a0d901dd2e422c)) +* user is undefined when using use-suspense-query ([#1498](https://github.com/homarr-labs/homarr/issues/1498)) ([18b579e](https://github.com/homarr-labs/homarr/commit/18b579eb5f2ce77ac19a2bd9fee9c99025ab1c2d)) +* various issues with docker image workflow ([#1172](https://github.com/homarr-labs/homarr/issues/1172)) ([d029f48](https://github.com/homarr-labs/homarr/commit/d029f48f799bc9ff7e01c4b85194b58e050f0c5b)) +* videos not playing automatically on iOS / mobile ([#875](https://github.com/homarr-labs/homarr/issues/875)) ([8e10c48](https://github.com/homarr-labs/homarr/commit/8e10c48d2f182b1f11baac8747a0701019a4387c)) +* websockets on https do not work ([#1444](https://github.com/homarr-labs/homarr/issues/1444)) ([0aa72d1](https://github.com/homarr-labs/homarr/commit/0aa72d118c6c61798cff3406256e4253d0ad5aab)) +* wevbsocket url is always localhost ([#1072](https://github.com/homarr-labs/homarr/issues/1072)) ([8c20553](https://github.com/homarr-labs/homarr/commit/8c205535eb2d2e3a6efb26696460f1c60c58170e)) +* when no dead icons, all icons are removed ([#516](https://github.com/homarr-labs/homarr/issues/516)) ([8e8f908](https://github.com/homarr-labs/homarr/commit/8e8f9081b029e8a01e4dcfcc14e6cd259732c519)) +* when removing one item and then adding another one that newly added one can not be moved ([#1025](https://github.com/homarr-labs/homarr/issues/1025)) ([2738f40](https://github.com/homarr-labs/homarr/commit/2738f40c5e3028822c4586556fddc16af5aa7d58)) +* workflow inputs and docker push ([#1123](https://github.com/homarr-labs/homarr/issues/1123)) ([c8dfbc8](https://github.com/homarr-labs/homarr/commit/c8dfbc8e2d3fd50958b124bdc4e1ad6b0af8f7ca)) +* wrong id for renovate auto approval ([#957](https://github.com/homarr-labs/homarr/issues/957)) ([67195c6](https://github.com/homarr-labs/homarr/commit/67195c605139dfd4b3cd1e7d7e627752e71a7f1f)) +* xterm-addon-fit deprecated ([#321](https://github.com/homarr-labs/homarr/issues/321)) ([e6e6e4e](https://github.com/homarr-labs/homarr/commit/e6e6e4e7d639277c6b23d389721de81f7abd68d0)) + +### Performance Improvements + +* improve performance of icon updater from 10s to 300ms ([#502](https://github.com/homarr-labs/homarr/issues/502)) ([333dc57](https://github.com/homarr-labs/homarr/commit/333dc571fa32e9aad988f91b2547cebd99388fb4)) +* improve typescript performance ([#523](https://github.com/homarr-labs/homarr/issues/523)) ([d9f5158](https://github.com/homarr-labs/homarr/commit/d9f5158662e55bcfcb8a33018f3826286df8ff8c)) diff --git a/package.json b/package.json index fa3bd9f38..33b07cd0f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0", + "version": "1.0.0-beta.1", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From b384ebd342a37e2008c1af45331fb1789082ff59 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 19:14:47 +0000 Subject: [PATCH 035/262] chore(deps): update dependency @semantic-release/release-notes-generator to ^14.0.2 (#1685) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fa3bd9f38..ee23d2970 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^11.0.1", "@semantic-release/npm": "^12.0.1", - "@semantic-release/release-notes-generator": "^14.0.1", + "@semantic-release/release-notes-generator": "^14.0.2", "@turbo/gen": "^2.3.3", "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d260927f..c364c6ddb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: specifier: ^12.0.1 version: 12.0.1(semantic-release@24.2.0(typescript@5.7.2)) '@semantic-release/release-notes-generator': - specifier: ^14.0.1 + specifier: ^14.0.2 version: 14.0.2(semantic-release@24.2.0(typescript@5.7.2)) '@turbo/gen': specifier: ^2.3.3 From 70e0a1181996c79e0e4fb6d7aa3eb93930e4eee5 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 21:00:21 +0100 Subject: [PATCH 036/262] ci: add beta image tag for all beta releases (#1693) --- .github/workflows/deployment-docker-image.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 68669115e..603b20262 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -103,6 +103,7 @@ jobs: env: NEXT_VERSION: ${{ needs.release.outputs.version }} DEPLOY_LATEST: ${{ github.ref_name == 'main' }} + DEPLOY_BETA: ${{ github.ref_name == 'beta' }} PUSH_IMAGE: ${{ github.event_name != 'workflow_dispatch' || github.events.inputs.push-image == 'true' }} steps: - uses: actions/checkout@v4 @@ -130,6 +131,7 @@ jobs: images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" tags: | ${{ env.DEPLOY_LATEST == true && 'type=raw,value=latest' || null }} + ${{ env.DEPLOY_BETA == true && 'type=raw,value=beta' || null }} type=raw,value=${{ env.NEXT_VERSION }} - name: Build and maybe push id: buildPushAction From 50697eb21f923bbe9a6811c964cfc313f79a2806 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 21:05:53 +0100 Subject: [PATCH 037/262] fix: add missing branch-name to discord deploy notification --- .github/workflows/deployment-docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 68669115e..90d7df0e1 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -148,4 +148,4 @@ jobs: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Deployment of image has completed. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == true && '' || 'This was a dry run' }}" + args: "Deployment of image has completed for branch ${{ github.ref_name }}. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == true && '' || 'This was a dry run' }}" From 9ab36f8956d074df87f88cc8cb7d747ed5e6f739 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 20:07:46 +0000 Subject: [PATCH 038/262] chore(release): 1.0.0-beta.2 [skip ci] --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 951f6e0f2..82e3f2f53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.0.0-beta.2](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2024-12-17) + +### Bug Fixes + +* add missing branch-name to discord deploy notification ([50697eb](https://github.com/homarr-labs/homarr/commit/50697eb21f923bbe9a6811c964cfc313f79a2806)) + ## 1.0.0-beta.1 (2024-12-17) ### ⚠ BREAKING CHANGES diff --git a/package.json b/package.json index 1c0a44b4e..dfc844594 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0-beta.1", + "version": "1.0.0-beta.2", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From 649506b56a5f3cbbee9b782b637730f2196785cc Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 17 Dec 2024 21:10:21 +0100 Subject: [PATCH 039/262] fix: boolean checks do not work correctly in deploy workflow --- .github/workflows/deployment-docker-image.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 984472e86..80e99e68a 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -130,8 +130,8 @@ jobs: with: images: "${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" tags: | - ${{ env.DEPLOY_LATEST == true && 'type=raw,value=latest' || null }} - ${{ env.DEPLOY_BETA == true && 'type=raw,value=beta' || null }} + ${{ env.DEPLOY_LATEST == 'true' && 'type=raw,value=latest' || null }} + ${{ env.DEPLOY_BETA == 'true' && 'type=raw,value=beta' || null }} type=raw,value=${{ env.NEXT_VERSION }} - name: Build and maybe push id: buildPushAction @@ -150,4 +150,4 @@ jobs: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} uses: Ilshidur/action-discord@master with: - args: "Deployment of image has completed for branch ${{ github.ref_name }}. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == true && '' || 'This was a dry run' }}" + args: "Deployment of image has completed for branch ${{ github.ref_name }}. Image ID is '${{ steps.buildPushAction.outputs.imageid }}'. ${{ env.PUSH_IMAGE == 'true' && '' || 'This was a dry run' }}" From ecc4586d024e1799fe2213ce08688f4e0bd99b25 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 20:12:24 +0000 Subject: [PATCH 040/262] chore(release): 1.0.0-beta.3 [skip ci] --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82e3f2f53..7a5891a45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [1.0.0-beta.3](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2024-12-17) + +### Bug Fixes + +* boolean checks do not work correctly in deploy workflow ([649506b](https://github.com/homarr-labs/homarr/commit/649506b56a5f3cbbee9b782b637730f2196785cc)) + ## [1.0.0-beta.2](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.1...v1.0.0-beta.2) (2024-12-17) ### Bug Fixes diff --git a/package.json b/package.json index dfc844594..eda973d7e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0-beta.2", + "version": "1.0.0-beta.3", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From 694350583a0e53014a950c4a5bed4d487ad4ca7b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 20:17:45 +0000 Subject: [PATCH 041/262] fix(deps): update dependency ldapts to v7.3.0 (#1696) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/auth/package.json | 2 +- pnpm-lock.yaml | 36 +++++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index 3eb20648a..1dfb76018 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -33,7 +33,7 @@ "@t3-oss/env-nextjs": "^0.11.1", "bcrypt": "^5.1.1", "cookies": "^0.9.1", - "ldapts": "7.2.2", + "ldapts": "7.3.0", "next": "^14.2.20", "next-auth": "5.0.0-beta.25", "react": "^19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c364c6ddb..f780e875e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -616,8 +616,8 @@ importers: specifier: ^0.9.1 version: 0.9.1 ldapts: - specifier: 7.2.2 - version: 7.2.2 + specifier: 7.3.0 + version: 7.3.0 next: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) @@ -5076,6 +5076,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -6554,8 +6563,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - ldapts@7.2.2: - resolution: {integrity: sha512-UotAq24/vJEz0m3w/jgwZm7JGNw8M6vexL/5KU5pe3aIZWBkT/HRhjsPw/buRqKSK5Y0vTu5Zv8iyPgQF7ozzg==} + ldapts@7.3.0: + resolution: {integrity: sha512-hj+cOy50uwu496x66IrqeY0WY35pMnkKrOgdYtZFu0uii4Xzw39Wng1hgzmGYWmzK9On4jYiiYyz1ZdVc857XA==} engines: {node: '>=18'} levn@0.4.1: @@ -9096,6 +9105,10 @@ packages: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} engines: {node: '>=18'} + whatwg-url@14.1.0: + resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -12714,6 +12727,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decimal.js@10.4.3: {} decompress-response@6.0.0: @@ -14392,14 +14409,14 @@ snapshots: dependencies: readable-stream: 2.3.8 - ldapts@7.2.2: + ldapts@7.3.0: dependencies: '@types/asn1': 0.2.4 asn1: 0.2.6 - debug: 4.3.7 + debug: 4.4.0 strict-event-emitter-types: 2.0.0 uuid: 11.0.3 - whatwg-url: 14.0.0 + whatwg-url: 14.1.0 transitivePeerDependencies: - supports-color @@ -17203,6 +17220,11 @@ snapshots: tr46: 5.0.0 webidl-conversions: 7.0.0 + whatwg-url@14.1.0: + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 From d3a883a252167612f3f64579730c8f26453897e3 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 08:58:00 +0000 Subject: [PATCH 042/262] fix(deps): update dependency next-intl to v3.26.2 (#1703) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/translation/package.json | 2 +- pnpm-lock.yaml | 88 +++++++++++++++---------------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/packages/translation/package.json b/packages/translation/package.json index 7defeef26..870ebfdcf 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -33,7 +33,7 @@ "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.7", "next": "^14.2.20", - "next-intl": "3.26.1", + "next-intl": "3.26.2", "react": "^19.0.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f780e875e..984302576 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -186,16 +186,16 @@ importers: version: 5.62.8(@tanstack/react-query@5.62.8(react@19.0.0))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.660(typescript@5.7.2) + version: 11.0.0-rc.666(typescript@5.7.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -538,13 +538,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.660(typescript@5.7.2) + version: 11.0.0-rc.666(typescript@5.7.2) dockerode: specifier: ^4.0.2 version: 4.0.2 @@ -559,7 +559,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.0 - version: 2.1.0(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.0(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1569,8 +1569,8 @@ importers: specifier: ^14.2.20 version: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) next-intl: - specifier: 3.26.1 - version: 3.26.1(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + specifier: 3.26.2 + version: 3.26.2(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -3886,19 +3886,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.660': - resolution: {integrity: sha512-bNpkZEfyMGKHynYFxdLpY8nJ1n7E3JHKcd4Pe2cagmpkzOEF9tFT3kzNf+eLI8XMG8196lTRR0J0W2/1Q8/cug==} + '@trpc/client@11.0.0-rc.666': + resolution: {integrity: sha512-BP3H0bktY03m7haVT5QoPR4sn30DNJcvFHsA3Msj3uPRY8JLVE03MR4rVG6T7VbcglORKpyMlRxjpUgdRmJErA==} peerDependencies: - '@trpc/server': 11.0.0-rc.660+74625d5e4 + '@trpc/server': 11.0.0-rc.666+99556c074 typescript: '>=5.6.2' - '@trpc/next@11.0.0-rc.660': - resolution: {integrity: sha512-LQHdiVED8h+CJEAy/X9PDmY3fM8VPdZ+3bVkbmEiP4xoNnSKRTbSbknFyRzG9M2AogfIafF4zAZVwOvCxexyGw==} + '@trpc/next@11.0.0-rc.666': + resolution: {integrity: sha512-EiNMEY0nValoxMSvC+j68evlQqU/NoLrZXskvHnheoyaDLP8TxhTA2xUr+P4tkWPkjsRzh/Y5lxlyAb2PTA7aw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.660+74625d5e4 - '@trpc/react-query': 11.0.0-rc.660+74625d5e4 - '@trpc/server': 11.0.0-rc.660+74625d5e4 + '@trpc/client': 11.0.0-rc.666+99556c074 + '@trpc/react-query': 11.0.0-rc.666+99556c074 + '@trpc/server': 11.0.0-rc.666+99556c074 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -3909,18 +3909,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.660': - resolution: {integrity: sha512-U2BHtYVt+8jt0a8Nrrk5cep8O1UZRxtTCBHtXie9kmJyQWWml43KfHxL5ssnFywaFrDZQz6Ec7kIoOxR/CQNfg==} + '@trpc/react-query@11.0.0-rc.666': + resolution: {integrity: sha512-BH0vU7g5w4IrN7xmWSKvLucZ9ZnpRwsDWCSJ0R09xdYwR7geHkna3PBbd8vQVFBSw7MpWEy6LGXVSCHSbUicLg==} peerDependencies: - '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.660+74625d5e4 - '@trpc/server': 11.0.0-rc.660+74625d5e4 + '@tanstack/react-query': ^5.62.8 + '@trpc/client': 11.0.0-rc.666+99556c074 + '@trpc/server': 11.0.0-rc.666+99556c074 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.6.2' - '@trpc/server@11.0.0-rc.660': - resolution: {integrity: sha512-QUapcZCNOpHT7ng9LceGc9ImkboWd0Go9ryrduZpL+p4jdfaC6409AQ3x4XEW6Wu3yBmZAn4CywCsDrDhjDy/w==} + '@trpc/server@11.0.0-rc.666': + resolution: {integrity: sha512-k+jKrdH/owDRRXPR7oPKCQRTu0dOEnqdGh56863ym95sFY8qXE7BhOR8S4WqyZw1CiPZGjRkdFN0q/GsJhKsIA==} peerDependencies: typescript: '>=5.6.2' @@ -6939,8 +6939,8 @@ packages: nodemailer: optional: true - next-intl@3.26.1: - resolution: {integrity: sha512-TE4cQgXNw4jzEtVPdiYQOCmhAu+Z2qoUppCMxPkJoz8XXe8TdqiNEPhD/GtXEsI80nV6NnVAq3hyTHH5+ex6Hw==} + next-intl@3.26.2: + resolution: {integrity: sha512-fPsL5/9Y/aYNHoOf904b+PhYkm1RfZKrNMAxUvURMqFuQTA0TQAIGnY0s03yPH7oRv9qCFcutaxr6DsHq0aCzQ==} peerDependencies: next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -8898,8 +8898,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@3.26.1: - resolution: {integrity: sha512-MZhtSBcMrDna3xs1T6O7CAXx4wRfm1eGyUYrDCCnW9qTOGZurCH5k/X6ChDl6EI4f+qYEtXQCRMkQUVOIhJWTQ==} + use-intl@3.26.2: + resolution: {integrity: sha512-H0BpBXLNFTkw6RvntLXSXr2+la4T/xilKSG5l8ND9Br9+i1hqHensWouNS288QZdiDTrfYUVswDtUIR6L39JHQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -11348,33 +11348,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2)': + '@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2)': dependencies: - '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.666(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.666(typescript@5.7.2) next: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: '@tanstack/react-query': 5.62.8(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@trpc/react-query': 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.660(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@tanstack/react-query': 5.62.8(react@19.0.0) - '@trpc/client': 11.0.0-rc.660(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.666(typescript@5.7.2) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 - '@trpc/server@11.0.0-rc.660(typescript@5.7.2)': + '@trpc/server@11.0.0-rc.666(typescript@5.7.2)': dependencies: typescript: 5.7.2 @@ -14763,13 +14763,13 @@ snapshots: next: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - next-intl@3.26.1(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): + next-intl@3.26.2(next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 next: 14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - use-intl: 3.26.1(react@19.0.0) + use-intl: 3.26.2(react@19.0.0) next@14.2.20(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0): dependencies: @@ -16668,9 +16668,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.0(@trpc/server@11.0.0-rc.660(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.0(@trpc/server@11.0.0-rc.666(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.660(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.666(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 lodash.clonedeep: 4.5.0 @@ -16976,7 +16976,7 @@ snapshots: dequal: 2.0.3 react: 19.0.0 - use-intl@3.26.1(react@19.0.0): + use-intl@3.26.2(react@19.0.0): dependencies: '@formatjs/fast-memoize': 2.2.1 intl-messageformat: 10.7.1 From d8030873452d2248d79d16a2fc4464ff2fbb478d Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 18 Dec 2024 11:29:49 +0100 Subject: [PATCH 043/262] fix: about version reads nextjs package-json (#1706) --- apps/nextjs/src/versions/package-reader.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/nextjs/src/versions/package-reader.ts b/apps/nextjs/src/versions/package-reader.ts index 25976619e..a7da5b029 100644 --- a/apps/nextjs/src/versions/package-reader.ts +++ b/apps/nextjs/src/versions/package-reader.ts @@ -1,7 +1,7 @@ import fsPromises from "fs/promises"; import { glob } from "glob"; -import packageJson from "~/../package.json"; +import packageJson from "../../../../package.json"; const getPackageVersion = () => packageJson.version; const getDependenciesAsync = async (): Promise => { From d2b4bf5ae4a4ccc7d484113e419f7ffa9bf4a1f1 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 18 Dec 2024 11:30:12 +0100 Subject: [PATCH 044/262] chore: update homarr-docs-sitemap (#1707) --- .../src/docs/homarr-docs-sitemap.ts | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 2210941e3..31aa7c4c6 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -8,6 +8,7 @@ export type HomarrDocumentationPath = | "/blog/2023/11/10/authentication" | "/blog/2023/12/22/updated-documentation" | "/blog/2024/09/23/version-1.0" + | "/blog/2024/12/17/open-beta-1.0" | "/blog/archive" | "/blog/authors" | "/blog/authors/ajnart" @@ -33,6 +34,7 @@ export type HomarrDocumentationPath = | "/blog/tags/update" | "/blog/tags/version" | "/blog/translations" + | "/search" | "/docs/tags" | "/docs/tags/active-directory" | "/docs/tags/ad-guard" @@ -44,7 +46,6 @@ export type HomarrDocumentationPath = | "/docs/tags/apps" | "/docs/tags/banner" | "/docs/tags/blocking" - | "/docs/tags/board" | "/docs/tags/boards" | "/docs/tags/bookmark" | "/docs/tags/bookmarks" @@ -56,10 +57,12 @@ export type HomarrDocumentationPath = | "/docs/tags/connections" | "/docs/tags/customization" | "/docs/tags/data-sources" + | "/docs/tags/database" | "/docs/tags/developer" | "/docs/tags/development" | "/docs/tags/dns" | "/docs/tags/docker" + | "/docs/tags/donation" | "/docs/tags/edit-mode" | "/docs/tags/env" | "/docs/tags/environment-variables" @@ -71,6 +74,8 @@ export type HomarrDocumentationPath = | "/docs/tags/hardware" | "/docs/tags/health" | "/docs/tags/help" + | "/docs/tags/icon-picker" + | "/docs/tags/icon-repositories" | "/docs/tags/icons" | "/docs/tags/iframe" | "/docs/tags/images" @@ -84,17 +89,18 @@ export type HomarrDocumentationPath = | "/docs/tags/links" | "/docs/tags/lists" | "/docs/tags/management" + | "/docs/tags/media" | "/docs/tags/monitoring" | "/docs/tags/news" | "/docs/tags/notebook" | "/docs/tags/notes" | "/docs/tags/oidc" + | "/docs/tags/open-collective" | "/docs/tags/open-media-vault" | "/docs/tags/overseerr" | "/docs/tags/permissions" | "/docs/tags/pi-hole" | "/docs/tags/ping" - | "/docs/tags/preferences" | "/docs/tags/programming" | "/docs/tags/proxmox" | "/docs/tags/proxy" @@ -112,39 +118,37 @@ export type HomarrDocumentationPath = | "/docs/tags/table" | "/docs/tags/technical-documentation" | "/docs/tags/text" - | "/docs/tags/theming" + | "/docs/tags/torrent" | "/docs/tags/traefik" | "/docs/tags/translations" | "/docs/tags/unraid" - | "/docs/tags/user" + | "/docs/tags/uploads" + | "/docs/tags/usenet" | "/docs/tags/users" | "/docs/tags/variables" | "/docs/tags/widgets" | "/docs/advanced/command-line" | "/docs/advanced/command-line/password-recovery" - | "/docs/advanced/configuration/environment-variables" - | "/docs/advanced/configuration/keyboard-shortcuts" - | "/docs/advanced/configuration/proxies-and-certificates" - | "/docs/advanced/customizations/board-customization" - | "/docs/advanced/customizations/dark-mode" - | "/docs/advanced/customizations/icons" - | "/docs/advanced/customizations/user-preferences" - | "/docs/advanced/sso" + | "/docs/advanced/development/getting-started" + | "/docs/advanced/environment-variables" + | "/docs/advanced/icons" + | "/docs/advanced/keyboard-shortcuts" + | "/docs/advanced/proxy" + | "/docs/advanced/single-sign-on" | "/docs/category/advanced" - | "/docs/category/developer-guide" + | "/docs/category/community" + | "/docs/category/developer-guides" | "/docs/category/getting-started" | "/docs/category/installation" | "/docs/category/installation-1" | "/docs/category/integrations" | "/docs/category/management" - | "/docs/category/more" | "/docs/category/widgets" | "/docs/community/donate" | "/docs/community/faq" | "/docs/community/get-in-touch" | "/docs/community/license" | "/docs/community/translations" - | "/docs/development/getting-started" | "/docs/getting-started" | "/docs/getting-started/after-the-installation" | "/docs/getting-started/glossary" @@ -152,7 +156,6 @@ export type HomarrDocumentationPath = | "/docs/getting-started/installation/easy-panel" | "/docs/getting-started/installation/helm" | "/docs/getting-started/installation/home-assistant" - | "/docs/getting-started/installation/kubernetes" | "/docs/getting-started/installation/portainer" | "/docs/getting-started/installation/qnap" | "/docs/getting-started/installation/saltbox" @@ -172,15 +175,15 @@ export type HomarrDocumentationPath = | "/docs/management/apps" | "/docs/management/boards" | "/docs/management/integrations" + | "/docs/management/media" | "/docs/management/search-engines" | "/docs/management/settings" | "/docs/management/users" | "/docs/widgets/bookmarks" - | "/docs/widgets/calendar-widget" - | "/docs/widgets/clock-widget" - | "/docs/widgets/dashdot-widget" + | "/docs/widgets/calendar" + | "/docs/widgets/clock" | "/docs/widgets/dns-hole" - | "/docs/widgets/download-speed-widget" + | "/docs/widgets/downloads" | "/docs/widgets/health-monitoring" | "/docs/widgets/home-assistant" | "/docs/widgets/iframe" @@ -188,10 +191,8 @@ export type HomarrDocumentationPath = | "/docs/widgets/media-requests" | "/docs/widgets/media-server" | "/docs/widgets/notebook" - | "/docs/widgets/rss-widget" - | "/docs/widgets/torrent-widget" - | "/docs/widgets/usenet-widget" + | "/docs/widgets/rss" | "/docs/widgets/video" - | "/docs/widgets/weather-widget" + | "/docs/widgets/weather" | "" | "/sitemap.xml"; From 3c0f272707ee66fd00bffb0d16e30df98b4f1aff Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 18 Dec 2024 13:18:01 +0100 Subject: [PATCH 045/262] fix: conflicts between common admin group for ldap or oidc and credentials default group (#1710) --- packages/definitions/src/group.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/definitions/src/group.ts b/packages/definitions/src/group.ts index 40c278b95..bf388c288 100644 --- a/packages/definitions/src/group.ts +++ b/packages/definitions/src/group.ts @@ -1,2 +1,2 @@ export const everyoneGroup = "everyone"; -export const credentialsAdminGroup = "admin"; +export const credentialsAdminGroup = "credentials-admin"; From 5fbbf037ce8a06642533c7f68c1c34ed8b01e4e4 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Wed, 18 Dec 2024 13:28:20 +0100 Subject: [PATCH 046/262] fix: permission required for home page (#1711) --- apps/nextjs/src/components/layout/header/user.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/nextjs/src/components/layout/header/user.tsx b/apps/nextjs/src/components/layout/header/user.tsx index 0821420b7..f4aabb767 100644 --- a/apps/nextjs/src/components/layout/header/user.tsx +++ b/apps/nextjs/src/components/layout/header/user.tsx @@ -7,13 +7,13 @@ import { CurrentUserAvatar } from "~/components/user-avatar"; import { UserAvatarMenu } from "~/components/user-avatar-menu"; export const UserButton = async () => { - const data = await api.updateChecker.getAvailableUpdates(); const session = await auth(); const isAdmin = session?.user.permissions.includes("admin"); + const data = isAdmin ? await api.updateChecker.getAvailableUpdates() : undefined; return ( - + - + From a51999457b57c042b543768bc1ef43647d62a85d Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 18 Dec 2024 13:52:10 +0100 Subject: [PATCH 047/262] fix: import sidebar issues (#1712) --- .../collections/integration-collection.ts | 9 +++++++-- .../src/import/collections/user-collection.ts | 11 +++++++++-- packages/old-import/src/import/input.ts | 2 +- .../old-import/src/import/validate-token.ts | 2 +- .../src/move-widgets-and-apps-merge.ts | 17 +++++++++++++++-- packages/old-schema/src/app.ts | 2 +- 6 files changed, 34 insertions(+), 9 deletions(-) diff --git a/packages/old-import/src/import/collections/integration-collection.ts b/packages/old-import/src/import/collections/integration-collection.ts index dd21cd59f..1f67481dd 100644 --- a/packages/old-import/src/import/collections/integration-collection.ts +++ b/packages/old-import/src/import/collections/integration-collection.ts @@ -7,12 +7,17 @@ import { createDbInsertCollection } from "./common"; export const createIntegrationInsertCollection = ( preparedIntegrations: PreparedIntegration[], - encryptionToken: string | null, + encryptionToken: string | null | undefined, ) => { const insertCollection = createDbInsertCollection(["integrations", "integrationSecrets"]); + + if (preparedIntegrations.length === 0) { + return insertCollection; + } + logger.info(`Preparing integrations for insert collection count=${preparedIntegrations.length}`); - if (encryptionToken === null) { + if (encryptionToken === null || encryptionToken === undefined) { logger.debug("Skipping integration decryption due to missing token"); return insertCollection; } diff --git a/packages/old-import/src/import/collections/user-collection.ts b/packages/old-import/src/import/collections/user-collection.ts index 096a06591..e98307590 100644 --- a/packages/old-import/src/import/collections/user-collection.ts +++ b/packages/old-import/src/import/collections/user-collection.ts @@ -6,12 +6,19 @@ import { mapAndDecryptUsers } from "../../mappers/map-user"; import type { OldmarrImportUser } from "../../user-schema"; import { createDbInsertCollection } from "./common"; -export const createUserInsertCollection = (importUsers: OldmarrImportUser[], encryptionToken: string | null) => { +export const createUserInsertCollection = ( + importUsers: OldmarrImportUser[], + encryptionToken: string | null | undefined, +) => { const insertCollection = createDbInsertCollection(["users", "groups", "groupMembers", "groupPermissions"]); + if (importUsers.length === 0) { + return insertCollection; + } + logger.info(`Preparing users for insert collection count=${importUsers.length}`); - if (encryptionToken === null) { + if (encryptionToken === null || encryptionToken === undefined) { logger.debug("Skipping user decryption due to missing token"); return insertCollection; } diff --git a/packages/old-import/src/import/input.ts b/packages/old-import/src/import/input.ts index 13f28c774..3ea7119aa 100644 --- a/packages/old-import/src/import/input.ts +++ b/packages/old-import/src/import/input.ts @@ -20,5 +20,5 @@ export const importInitialOldmarrInputSchema = zfd.formData({ const map = boardSelectionMapSchema.parse(SuperJSON.parse(value)); return map; }), - token: zfd.text().nullable(), + token: zfd.text().nullable().optional(), }); diff --git a/packages/old-import/src/import/validate-token.ts b/packages/old-import/src/import/validate-token.ts index ac01cf20a..74e43e52e 100644 --- a/packages/old-import/src/import/validate-token.ts +++ b/packages/old-import/src/import/validate-token.ts @@ -1,6 +1,6 @@ import { decryptSecretWithKey } from "@homarr/common/server"; -export const ensureValidTokenOrThrow = (checksum: string | undefined, encryptionToken: string | null) => { +export const ensureValidTokenOrThrow = (checksum: string | undefined, encryptionToken: string | null | undefined) => { if (!encryptionToken || !checksum) return; const [first, second] = checksum.split("\n"); diff --git a/packages/old-import/src/move-widgets-and-apps-merge.ts b/packages/old-import/src/move-widgets-and-apps-merge.ts index 2111e5d9e..68abcb351 100644 --- a/packages/old-import/src/move-widgets-and-apps-merge.ts +++ b/packages/old-import/src/move-widgets-and-apps-merge.ts @@ -81,13 +81,26 @@ export const moveWidgetsAndAppsIfMerge = ( } if (configuration.sidebarBehaviour === "last-section") { - if (old.settings.customization.layout.enabledLeftSidebar) { + const areas = [...old.apps.map((app) => app.area), ...old.widgets.map((widget) => widget.area)]; + if ( + old.settings.customization.layout.enabledLeftSidebar || + areas.some((area) => area.type === "sidebar" && area.properties.location === "left") + ) { offset = moveWidgetsAndAppsInLeftSidebar(old, firstId, offset, configuration.screenSize); } - if (old.settings.customization.layout.enabledRightSidebar) { + if ( + old.settings.customization.layout.enabledRightSidebar || + areas.some((area) => area.type === "sidebar" && area.properties.location === "right") + ) { moveWidgetsAndAppsInRightSidebar(old, firstId, offset, configuration.screenSize); } + } else { + // Remove all widgets and apps in the sidebar + return { + apps: old.apps.filter((app) => app.area.type !== "sidebar"), + widgets: old.widgets.filter((app) => app.area.type !== "sidebar"), + }; } return { apps: old.apps, widgets: old.widgets }; diff --git a/packages/old-schema/src/app.ts b/packages/old-schema/src/app.ts index 79732af92..87bedef25 100644 --- a/packages/old-schema/src/app.ts +++ b/packages/old-schema/src/app.ts @@ -69,7 +69,7 @@ export const oldmarrAppSchema = z behaviour: appBehaviourSchema, network: appNetworkSchema, appearance: appAppearanceSchema, - integration: appIntegrationSchema.optional(), + integration: appIntegrationSchema.optional().nullable(), }) .and(tileBaseSchema); From 1baa9fc74cf15df8ead7bbe6d1615f7bf0895813 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Wed, 18 Dec 2024 14:10:43 +0100 Subject: [PATCH 048/262] fix: docker statup permission issue (#1709) --- .github/workflows/deployment-docker-image.yml | 2 +- Dockerfile | 7 ++++--- scripts/entrypoint.sh | 10 ++++++++++ scripts/run.sh | 4 ---- 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 scripts/entrypoint.sh diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 80e99e68a..c96cf1a1b 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -104,7 +104,7 @@ jobs: NEXT_VERSION: ${{ needs.release.outputs.version }} DEPLOY_LATEST: ${{ github.ref_name == 'main' }} DEPLOY_BETA: ${{ github.ref_name == 'beta' }} - PUSH_IMAGE: ${{ github.event_name != 'workflow_dispatch' || github.events.inputs.push-image == 'true' }} + PUSH_IMAGE: ${{ github.event_name != 'workflow_dispatch' || github.events.inputs.push-image == true }} steps: - uses: actions/checkout@v4 - name: Discord notification diff --git a/Dockerfile b/Dockerfile index 6b0ea4e63..3e6f04281 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ FROM base AS runner WORKDIR /app # gettext is required for envsubst -RUN apk add --no-cache redis nginx bash gettext +RUN apk add --no-cache redis nginx bash gettext su-exec RUN mkdir /appdata VOLUME /appdata RUN mkdir /secrets @@ -43,14 +43,12 @@ RUN echo $'#!/bin/bash\ncd /app/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homa RUN chmod +x /usr/bin/homarr # Don't run production as root -RUN chown -R nextjs:nodejs /appdata RUN chown -R nextjs:nodejs /secrets RUN mkdir -p /var/cache/nginx && chown -R nextjs:nodejs /var/cache/nginx && \ mkdir -p /var/log/nginx && chown -R nextjs:nodejs /var/log/nginx && \ mkdir -p /var/lib/nginx && chown -R nextjs:nodejs /var/lib/nginx && \ touch /run/nginx/nginx.pid && chown -R nextjs:nodejs /run/nginx/nginx.pid && \ mkdir -p /etc/nginx/templates /etc/nginx/ssl/certs && chown -R nextjs:nodejs /etc/nginx -USER nextjs COPY --from=builder /app/apps/nextjs/next.config.mjs . COPY --from=builder /app/apps/nextjs/package.json . @@ -67,6 +65,8 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/static ./apps/nextjs/.next/static COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/public COPY --chown=nextjs:nodejs scripts/run.sh ./run.sh +COPY scripts/entrypoint.sh ./entrypoint.sh +RUN chmod +x ./entrypoint.sh COPY --chown=nextjs:nodejs scripts/generateRandomSecureKey.js ./generateRandomSecureKey.js COPY --chown=nextjs:nodejs packages/redis/redis.conf /app/redis.conf COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/templates/nginx.conf @@ -77,4 +77,5 @@ ENV DB_DIALECT='sqlite' ENV DB_DRIVER='better-sqlite3' ENV AUTH_PROVIDERS='credentials' +ENTRYPOINT [ "/app/entrypoint.sh" ] CMD ["sh", "run.sh"] diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh new file mode 100644 index 000000000..59a5589df --- /dev/null +++ b/scripts/entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +# Creating folders in volume +mkdir -p /appdata/db +mkdir -p /appdata/redis + +chown -R nextjs:nodejs /appdata + +su-exec 1001:1001 "$@" \ No newline at end of file diff --git a/scripts/run.sh b/scripts/run.sh index d22536ff2..2ba89cdff 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,7 +1,3 @@ -# Creating folders in volume -mkdir -p /appdata/db -mkdir -p /appdata/redis - # Run migrations if [ $DB_MIGRATIONS_DISABLED = "true" ]; then echo "DB migrations are disabled, skipping" From 63a7be35a4cf0f11610c2097afc32d2ced0ef9e1 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Wed, 18 Dec 2024 14:10:58 +0100 Subject: [PATCH 049/262] fix: jellyfin integration does not allow username password auth (#1714) --- packages/integrations/src/base/integration.ts | 4 ++++ .../src/jellyfin/jellyfin-integration.ts | 24 +++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/integrations/src/base/integration.ts b/packages/integrations/src/base/integration.ts index c9c953443..413ec6096 100644 --- a/packages/integrations/src/base/integration.ts +++ b/packages/integrations/src/base/integration.ts @@ -29,6 +29,10 @@ export abstract class Integration { return secret.value; } + protected hasSecretValue(kind: IntegrationSecretKind) { + return this.integration.decryptedSecrets.some((secret) => secret.kind === kind); + } + protected url(path: `/${string}`, queryParams?: Record) { const baseUrl = removeTrailingSlash(this.integration.url); const url = new URL(`${baseUrl}${path}`); diff --git a/packages/integrations/src/jellyfin/jellyfin-integration.ts b/packages/integrations/src/jellyfin/jellyfin-integration.ts index 4a603d6c2..2383473cd 100644 --- a/packages/integrations/src/jellyfin/jellyfin-integration.ts +++ b/packages/integrations/src/jellyfin/jellyfin-integration.ts @@ -18,13 +18,13 @@ export class JellyfinIntegration extends Integration { }); public async testConnectionAsync(): Promise { - const api = this.getApi(); + const api = await this.getApiAsync(); const systemApi = getSystemApi(api); await systemApi.getPingSystem(); } public async getCurrentSessionsAsync(): Promise { - const api = this.getApi(); + const api = await this.getApiAsync(); const sessionApi = getSessionApi(api); const sessions = await sessionApi.getSessions(); @@ -59,8 +59,22 @@ export class JellyfinIntegration extends Integration { }); } - private getApi() { - const apiKey = this.getSecretValue("apiKey"); - return this.jellyfin.createApi(this.url("/").toString(), apiKey); + /** + * Constructs an ApiClient synchronously with an ApiKey or asynchronously + * with a username and password. + * @returns An instance of Api that has been authenticated + */ + private async getApiAsync() { + if (this.hasSecretValue("apiKey")) { + const apiKey = this.getSecretValue("apiKey"); + return this.jellyfin.createApi(this.url("/").toString(), apiKey); + } + + const apiClient = this.jellyfin.createApi(this.url("/").toString()); + // Authentication state is stored internally in the Api class, so now + // requests that require authentication can be made normally. + // see https://typescript-sdk.jellyfin.org/#usage + await apiClient.authenticateUserByName(this.getSecretValue("username"), this.getSecretValue("password")); + return apiClient; } } From 26b6ca24457e3a80226714b02776c1902b0cb865 Mon Sep 17 00:00:00 2001 From: SeDemal Date: Wed, 18 Dec 2024 14:14:31 +0100 Subject: [PATCH 050/262] refactor: Move integration search flag to categories (#1637) --- .../router/integration/integration-router.ts | 33 ++++----------- packages/definitions/src/integration.ts | 42 ++----------------- 2 files changed, 10 insertions(+), 65 deletions(-) diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 54963407e..72378a7e9 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -14,15 +14,16 @@ import { } from "@homarr/db/schema/sqlite"; import type { IntegrationSecretKind } from "@homarr/definitions"; import { + getIntegrationKindsByCategory, getPermissionsWithParents, integrationDefs, integrationKinds, integrationSecretKindObject, - isIntegrationWithSearchSupport, } from "@homarr/definitions"; -import { integrationCreatorFromSecrets } from "@homarr/integrations"; +import { integrationCreator } from "@homarr/integrations"; import { validation, z } from "@homarr/validation"; +import { createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; import { throwIfActionForbiddenAsync } from "./integration-access"; import { testConnectionAsync } from "./integration-test-connection"; @@ -90,7 +91,7 @@ export const integrationRouter = createTRPCRouter({ where: inArray( integrations.kind, objectEntries(integrationDefs) - .filter(([_, integration]) => integration.supportsSearch) + .filter(([_, integration]) => [...integration.category].includes("search")) .map(([kind, _]) => kind), ), }); @@ -383,31 +384,11 @@ export const integrationRouter = createTRPCRouter({ }); }), searchInIntegration: protectedProcedure + .unstable_concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("search"))) .input(z.object({ integrationId: z.string(), query: z.string() })) .query(async ({ ctx, input }) => { - const integration = await ctx.db.query.integrations.findFirst({ - where: eq(integrations.id, input.integrationId), - with: { - secrets: true, - }, - }); - - if (!integration) { - throw new TRPCError({ - code: "NOT_FOUND", - message: "The requested integration does not exist", - }); - } - - if (!isIntegrationWithSearchSupport(integration)) { - throw new TRPCError({ - code: "BAD_REQUEST", - message: "The requested integration does not support searching", - }); - } - - const integrationInstance = integrationCreatorFromSecrets(integration); - return await integrationInstance.searchAsync(input.query); + const integrationInstance = integrationCreator(ctx.integration); + return await integrationInstance.searchAsync(encodeURI(input.query)); }), }); diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 0856fa830..1ace6b955 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -14,7 +14,6 @@ interface integrationDefinition { iconUrl: string; secretKinds: AtLeastOneOf; // at least one secret kind set is required category: AtLeastOneOf; - supportsSearch: boolean; } export const integrationDefs = { @@ -23,140 +22,120 @@ export const integrationDefs = { secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/sabnzbd.png", category: ["downloadClient", "usenet"], - supportsSearch: false, }, nzbGet: { name: "NZBGet", secretKinds: [["username", "password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/nzbget.png", category: ["downloadClient", "usenet"], - supportsSearch: false, }, deluge: { name: "Deluge", secretKinds: [["password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/deluge.png", category: ["downloadClient", "torrent"], - supportsSearch: false, }, transmission: { name: "Transmission", secretKinds: [["username", "password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png", category: ["downloadClient", "torrent"], - supportsSearch: false, }, qBittorrent: { name: "qBittorrent", secretKinds: [["username", "password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png", category: ["downloadClient", "torrent"], - supportsSearch: false, }, sonarr: { name: "Sonarr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/sonarr.png", category: ["calendar"], - supportsSearch: false, }, radarr: { name: "Radarr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/radarr.png", category: ["calendar"], - supportsSearch: false, }, lidarr: { name: "Lidarr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/lidarr.png", category: ["calendar"], - supportsSearch: false, }, readarr: { name: "Readarr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/readarr.png", category: ["calendar"], - supportsSearch: false, }, prowlarr: { name: "Prowlarr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prowlarr.png", category: ["indexerManager"], - supportsSearch: false, }, jellyfin: { name: "Jellyfin", secretKinds: [["username", "password"], ["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png", category: ["mediaService"], - supportsSearch: false, }, plex: { name: "Plex", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/plex.png", category: ["mediaService"], - supportsSearch: false, }, jellyseerr: { name: "Jellyseerr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyseerr.png", - category: ["mediaSearch", "mediaRequest"], - supportsSearch: true, + category: ["mediaSearch", "mediaRequest", "search"], }, overseerr: { name: "Overseerr", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/overseerr.png", - category: ["mediaSearch", "mediaRequest"], - supportsSearch: true, + category: ["mediaSearch", "mediaRequest", "search"], }, piHole: { name: "Pi-hole", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/pi-hole.png", category: ["dnsHole"], - supportsSearch: false, }, adGuardHome: { name: "AdGuard Home", secretKinds: [["username", "password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/adguard-home.png", category: ["dnsHole"], - supportsSearch: false, }, homeAssistant: { name: "Home Assistant", secretKinds: [["apiKey"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/home-assistant.png", category: ["smartHomeServer"], - supportsSearch: false, }, openmediavault: { name: "OpenMediaVault", secretKinds: [["username", "password"]], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/openmediavault.png", category: ["healthMonitoring"], - supportsSearch: false, }, dashDot: { name: "Dash.", secretKinds: [[]], category: ["healthMonitoring"], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dashdot.png", - supportsSearch: false, }, tdarr: { name: "Tdarr", secretKinds: [[]], category: ["mediaTranscoding"], iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/tdarr.png", - supportsSearch: false, }, } as const satisfies Record; @@ -195,22 +174,6 @@ export type IntegrationKindByCategory = { U : never; -/** - * Checks if search is supported by the integration - * Uses a typescript guard with is to allow only integrations with search support within if statement - * @param integration integration with kind - * @returns true if the integration supports search - */ -export const isIntegrationWithSearchSupport = (integration: { - kind: IntegrationKind; -}): integration is { kind: IntegrationWithSearchSupport } => { - return integrationDefs[integration.kind].supportsSearch; -}; - -type IntegrationWithSearchSupport = { - [Key in keyof typeof integrationDefs]: true extends (typeof integrationDefs)[Key]["supportsSearch"] ? Key : never; -}[keyof typeof integrationDefs]; - export type IntegrationSecretKind = keyof typeof integrationSecretKindObject; export type IntegrationKind = keyof typeof integrationDefs; export type IntegrationCategory = @@ -225,4 +188,5 @@ export type IntegrationCategory = | "smartHomeServer" | "indexerManager" | "healthMonitoring" + | "search" | "mediaTranscoding"; From 044c60bdecd851a74574868b3447dfd8f2e18167 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 13:16:17 +0000 Subject: [PATCH 051/262] chore(release): 1.0.0-beta.4 [skip ci] --- CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a5891a45..2324a970d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## [1.0.0-beta.4](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2024-12-18) + +### Bug Fixes + +* about version reads nextjs package-json ([#1706](https://github.com/homarr-labs/homarr/issues/1706)) ([d803087](https://github.com/homarr-labs/homarr/commit/d8030873452d2248d79d16a2fc4464ff2fbb478d)) +* conflicts between common admin group for ldap or oidc and credentials default group ([#1710](https://github.com/homarr-labs/homarr/issues/1710)) ([3c0f272](https://github.com/homarr-labs/homarr/commit/3c0f272707ee66fd00bffb0d16e30df98b4f1aff)) +* **deps:** update dependency ldapts to v7.3.0 ([#1696](https://github.com/homarr-labs/homarr/issues/1696)) ([6943505](https://github.com/homarr-labs/homarr/commit/694350583a0e53014a950c4a5bed4d487ad4ca7b)) +* **deps:** update dependency next-intl to v3.26.2 ([#1703](https://github.com/homarr-labs/homarr/issues/1703)) ([d3a883a](https://github.com/homarr-labs/homarr/commit/d3a883a252167612f3f64579730c8f26453897e3)) +* docker statup permission issue ([#1709](https://github.com/homarr-labs/homarr/issues/1709)) ([1baa9fc](https://github.com/homarr-labs/homarr/commit/1baa9fc74cf15df8ead7bbe6d1615f7bf0895813)) +* import sidebar issues ([#1712](https://github.com/homarr-labs/homarr/issues/1712)) ([a519994](https://github.com/homarr-labs/homarr/commit/a51999457b57c042b543768bc1ef43647d62a85d)) +* jellyfin integration does not allow username password auth ([#1714](https://github.com/homarr-labs/homarr/issues/1714)) ([63a7be3](https://github.com/homarr-labs/homarr/commit/63a7be35a4cf0f11610c2097afc32d2ced0ef9e1)) +* permission required for home page ([#1711](https://github.com/homarr-labs/homarr/issues/1711)) ([5fbbf03](https://github.com/homarr-labs/homarr/commit/5fbbf037ce8a06642533c7f68c1c34ed8b01e4e4)) + ## [1.0.0-beta.3](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.2...v1.0.0-beta.3) (2024-12-17) ### Bug Fixes diff --git a/package.json b/package.json index eda973d7e..98bd40471 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0-beta.3", + "version": "1.0.0-beta.4", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From b6dad438c2f44aa8d7a740c1a22c9d4c39edf43e Mon Sep 17 00:00:00 2001 From: SeDemal Date: Wed, 18 Dec 2024 15:16:54 +0100 Subject: [PATCH 052/262] feat: Add quick filters for integration and status + minor UI improvement from feedback (#1641) --- packages/widgets/src/downloads/component.tsx | 96 +++++++++++++++++++- 1 file changed, 91 insertions(+), 5 deletions(-) diff --git a/packages/widgets/src/downloads/component.tsx b/packages/widgets/src/downloads/component.tsx index ec80cf141..39da51449 100644 --- a/packages/widgets/src/downloads/component.tsx +++ b/packages/widgets/src/downloads/component.tsx @@ -10,10 +10,12 @@ import { AvatarGroup, Button, Center, + Chip, Divider, Group, Modal, Paper, + Popover, Progress, Space, Stack, @@ -26,6 +28,7 @@ import type { IconProps } from "@tabler/icons-react"; import { IconAlertTriangle, IconCirclesRelation, + IconFilter, IconInfinity, IconInfoCircle, IconPlayerPause, @@ -46,6 +49,11 @@ import { useScopedI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; +interface QuickFilter { + integrationKinds: string[]; + statuses: ExtendedDownloadClientItem["state"][]; +} + //Ratio table for relative width between columns const columnsRatios: Record = { actions: 2, @@ -108,6 +116,18 @@ export default function DownloadClientsWidget({ const [clickedIndex, setClickedIndex] = useState(0); const [opened, { open, close }] = useDisclosure(false); + //User quick settings for filters + const [quickFilters, setQuickFilters] = useState({ integrationKinds: [], statuses: [] }); + const availableStatuses = useMemo(() => { + //Redefine list of available statuses from current items + const statuses = Array.from(new Set(currentItems.flatMap(({ data }) => data.items.map(({ state }) => state)))); + //Reset user filters accordingly to remove unavailable statuses + setQuickFilters(({ integrationKinds: names, statuses: prevStatuses }) => { + return { integrationKinds: names, statuses: prevStatuses.filter((status) => statuses.includes(status)) }; + }); + return statuses; + }, [currentItems]); + //Get API mutation functions const { mutate: mutateResumeItem } = clientApi.widget.downloads.resumeItem.useMutation(); const { mutate: mutatePauseItem } = clientApi.widget.downloads.pauseItem.useMutation(); @@ -164,6 +184,13 @@ export default function DownloadClientsWidget({ progress !== 1)) || (type === "usenet" && ((progress === 1 && options.showCompletedUsenet) || progress !== 1)), ) + //Filter following user quick setting + .filter( + ({ state }) => + (quickFilters.integrationKinds.length === 0 || + quickFilters.integrationKinds.includes(pair.integration.name)) && + (quickFilters.statuses.length === 0 || quickFilters.statuses.includes(state)), + ) //Add extrapolated data and actions if user is allowed interaction .map((item): ExtendedDownloadClientItem => { const received = Math.floor(item.size * item.progress); @@ -199,6 +226,7 @@ export default function DownloadClientsWidget({ options.filterIsWhitelist, options.showCompletedTorrent, options.showCompletedUsenet, + quickFilters, ], ); @@ -660,7 +688,13 @@ export default function DownloadClientsWidget({ {(globalTraffic.up / globalTraffic.down).toFixed(2)} )} - + @@ -748,10 +782,13 @@ const NormalizedLine = ({ interface ClientsControlProps { clients: ExtendedClientStatus[]; + filters: QuickFilter; + setFilters: (filters: QuickFilter) => void; + availableStatuses: QuickFilter["statuses"]; style?: MantineStyleProp; } -const ClientsControl = ({ clients, style }: ClientsControlProps) => { +const ClientsControl = ({ clients, filters, setFilters, availableStatuses, style }: ClientsControlProps) => { const integrationsStatuses = clients.reduce( (acc, { status, integration: { id }, interact }) => status && interact ? (acc[status.paused ? "paused" : "active"].push(id), acc) : acc, @@ -762,13 +799,61 @@ const ClientsControl = ({ clients, style }: ClientsControlProps) => { clients.reduce((count, { status }) => count + (status?.rates.down ?? 0), 0), "/s", ); + const chipStyle = { + "--chip-fz": "var(--button-fz)", + "--chip-size": "calc(var(--ratio-width) * 0.9)", + "--chip-icon-size": "calc(var(--chip-fz)*2/3)", + "--chip-padding": "var(--chip-fz)", + "--chip-checked-padding": "var(--chip-icon-size)", + "--chip-spacing": "var(--space-size)", + }; const { mutate: mutateResumeQueue } = clientApi.widget.downloads.resume.useMutation(); const { mutate: mutatePauseQueue } = clientApi.widget.downloads.pause.useMutation(); const [opened, { open, close }] = useDisclosure(false); const t = useScopedI18n("widget.downloads"); return ( - + + + + + + + + + {t("items.integration.columnTitle")} + setFilters({ ...filters, integrationKinds: names })} + > + {clients.map(({ integration }) => ( + + {integration.name} + + ))} + + {t("items.state.columnTitle")} + setFilters({ ...filters, statuses: statuses as typeof filters.statuses })} + > + {availableStatuses.map((status) => ( + + {t(`states.${status}`)} + + ))} + + + + + {clients.map((client) => ( ))} @@ -787,7 +872,7 @@ const ClientsControl = ({ clients, style }: ClientsControlProps) => { )}
+ + + + ); +}).withOptions({ + size: "xl", +}); + +interface Season { + id: number; + name: string; + episodeCount: number; +} diff --git a/packages/spotlight/src/components/actions/children-actions.tsx b/packages/spotlight/src/components/actions/children-actions.tsx index b7f36909d..1907792a3 100644 --- a/packages/spotlight/src/components/actions/children-actions.tsx +++ b/packages/spotlight/src/components/actions/children-actions.tsx @@ -4,14 +4,25 @@ import { ChildrenActionItem } from "./items/children-action-item"; interface SpotlightChildrenActionsProps { childrenOptions: inferSearchInteractionOptions<"children">; query: string; + setChildrenOptions: (options: inferSearchInteractionOptions<"children">) => void; } -export const SpotlightChildrenActions = ({ childrenOptions, query }: SpotlightChildrenActionsProps) => { +export const SpotlightChildrenActions = ({ + childrenOptions, + query, + setChildrenOptions, +}: SpotlightChildrenActionsProps) => { const actions = childrenOptions.useActions(childrenOptions.option, query); return actions .filter((action) => (typeof action.hide === "function" ? !action.hide(childrenOptions.option) : !action.hide)) .map((action) => ( - + )); }; diff --git a/packages/spotlight/src/components/actions/items/children-action-item.tsx b/packages/spotlight/src/components/actions/items/children-action-item.tsx index 0b070b147..777446b78 100644 --- a/packages/spotlight/src/components/actions/items/children-action-item.tsx +++ b/packages/spotlight/src/components/actions/items/children-action-item.tsx @@ -8,9 +8,10 @@ interface ChildrenActionItemProps { childrenOptions: inferSearchInteractionOptions<"children">; query: string; action: ReturnType["useActions"]>[number]; + setChildrenOptions: (options: inferSearchInteractionOptions<"children">) => void; } -export const ChildrenActionItem = ({ childrenOptions, action, query }: ChildrenActionItemProps) => { +export const ChildrenActionItem = ({ childrenOptions, action, query, setChildrenOptions }: ChildrenActionItemProps) => { const interaction = action.useInteraction(childrenOptions.option, query); const renderRoot = @@ -20,10 +21,20 @@ export const ChildrenActionItem = ({ childrenOptions, action, query }: ChildrenA } : undefined; - const onClick = interaction.type === "javaScript" ? interaction.onSelect : undefined; + const onClick = + interaction.type === "javaScript" + ? interaction.onSelect + : interaction.type === "children" + ? () => setChildrenOptions(interaction) + : undefined; return ( - + ); diff --git a/packages/spotlight/src/components/spotlight.tsx b/packages/spotlight/src/components/spotlight.tsx index 1ab051bb7..70c0da866 100644 --- a/packages/spotlight/src/components/spotlight.tsx +++ b/packages/spotlight/src/components/spotlight.tsx @@ -140,7 +140,11 @@ const SpotlightWithActiveMode = ({ modeState, activeMode, defaultMode }: Spotlig {childrenOptions ? ( - + ) : ( { diff --git a/packages/spotlight/src/lib/children.ts b/packages/spotlight/src/lib/children.ts index 0c2c34992..f7f8bdf83 100644 --- a/packages/spotlight/src/lib/children.ts +++ b/packages/spotlight/src/lib/children.ts @@ -10,7 +10,10 @@ export interface CreateChildrenOptionsProps> { key: string; Component: (option: TParentOptions) => JSX.Element; - useInteraction: (option: TParentOptions, query: string) => inferSearchInteractionDefinition<"link" | "javaScript">; + useInteraction: ( + option: TParentOptions, + query: string, + ) => inferSearchInteractionDefinition<"link" | "javaScript" | "children">; hide?: boolean | ((option: TParentOptions) => boolean); } diff --git a/packages/spotlight/src/modes/external/search-engines-search-group.tsx b/packages/spotlight/src/modes/external/search-engines-search-group.tsx index 5c6529624..2d73ba2e9 100644 --- a/packages/spotlight/src/modes/external/search-engines-search-group.tsx +++ b/packages/spotlight/src/modes/external/search-engines-search-group.tsx @@ -1,8 +1,12 @@ import { Group, Image, Kbd, Stack, Text } from "@mantine/core"; -import { IconSearch } from "@tabler/icons-react"; +import { IconDownload, IconSearch } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; +import type { IntegrationKind } from "@homarr/definitions"; +import { getIntegrationKindsByCategory, getIntegrationName } from "@homarr/definitions"; +import { useModalAction } from "@homarr/modals"; +import { RequestMediaModal } from "@homarr/modals-collection"; import { useScopedI18n } from "@homarr/translation/client"; import { createChildrenOptions } from "../../lib/children"; @@ -11,6 +15,100 @@ import { interaction } from "../../lib/interaction"; type SearchEngine = RouterOutputs["searchEngine"]["search"][number]; +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type MediaRequestChildrenProps = { + result: { + id: number; + image?: string; + name: string; + link: string; + text?: string; + type: "tv" | "movie"; + inLibrary: boolean; + }; + integration: { + kind: IntegrationKind; + url: string; + id: string; + }; +}; + +const mediaRequestsChildrenOptions = createChildrenOptions({ + useActions() { + const { openModal } = useModalAction(RequestMediaModal); + return [ + { + key: "request", + hide: (option) => option.result.inLibrary, + Component(option) { + const t = useScopedI18n("search.mode.media"); + return ( + + + {option.result.type === "tv" && {t("requestSeries")}} + {option.result.type === "movie" && {t("requestMovie")}} + + ); + }, + useInteraction: interaction.javaScript((option) => ({ + onSelect() { + openModal( + { + integrationId: option.integration.id, + mediaId: option.result.id, + mediaType: option.result.type, + }, + { + title(t) { + return t("search.engine.media.request.modal.title", { name: option.result.name }); + }, + }, + ); + }, + })), + }, + { + key: "open", + Component({ integration }) { + const tChildren = useScopedI18n("search.mode.media"); + return ( + + + {tChildren("openIn", { kind: getIntegrationName(integration.kind) })} + + ); + }, + useInteraction({ result }) { + return { + type: "link", + href: result.link, + newTab: true, + }; + }, + }, + ]; + }, + DetailComponent({ options }) { + return ( + + {options.result.image ? ( + + ) : ( + + )} + + {options.result.name} + {options.result.text && ( + + {options.result.text} + + )} + + + ); + }, +}); + export const searchEnginesChildrenOptions = createChildrenOptions({ useActions: (searchEngine, query) => { const { data } = clientApi.integration.searchInIntegration.useQuery( @@ -64,10 +162,48 @@ export const searchEnginesChildrenOptions = createChildrenOptions( ); }, - useInteraction: interaction.link(() => ({ - href: searchResult.link, - newTab: true, - })), + useInteraction(searchEngine) { + if (searchEngine.type !== "fromIntegration") { + throw new Error("Invalid search engine type"); + } + + if (!searchEngine.integration) { + throw new Error("Invalid search engine integration"); + } + + if ( + getIntegrationKindsByCategory("mediaRequest").some( + (categoryKind) => categoryKind === searchEngine.integration?.kind, + ) && + "type" in searchResult + ) { + const type = searchResult.type; + if (type === "person") { + return { + type: "link", + href: searchResult.link, + newTab: true, + }; + } + + return { + type: "children", + ...mediaRequestsChildrenOptions({ + result: { + ...searchResult, + type, + }, + integration: searchEngine.integration, + }), + }; + } + + return { + type: "link", + href: searchResult.link, + newTab: true, + }; + }, })); }, DetailComponent({ options }) { diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index b5b1872e3..cbe92028a 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2744,6 +2744,11 @@ } } }, + "media": { + "requestMovie": "Request movie", + "requestSeries": "Request series", + "openIn": "Open in {kind}" + }, "external": { "help": "Use an external search engine", "group": { @@ -2984,6 +2989,22 @@ } } } + }, + "media": { + "request": { + "modal": { + "title": "Request \"{name}\"", + "table": { + "header": { + "season": "Season", + "episodes": "Episodes" + } + }, + "button": { + "send": "Send request" + } + } + } } } } diff --git a/packages/validation/src/common.ts b/packages/validation/src/common.ts index 68506df63..3decf20be 100644 --- a/packages/validation/src/common.ts +++ b/packages/validation/src/common.ts @@ -15,8 +15,21 @@ const searchSchema = z.object({ limit: z.number().int().positive().default(10), }); +const mediaRequestOptionsSchema = z.object({ + mediaId: z.number(), + mediaType: z.enum(["tv", "movie"]), +}); + +const requestMediaSchema = z.object({ + mediaType: z.enum(["tv", "movie"]), + mediaId: z.number(), + seasons: z.array(z.number().min(0)).optional(), +}); + export const commonSchemas = { paginated: paginatedSchema, byId: byIdSchema, search: searchSchema, + mediaRequestOptions: mediaRequestOptionsSchema, + requestMedia: requestMediaSchema, }; From 56b57ad171da170c2d8edd6112092cef0b586852 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 31 Dec 2024 11:30:29 +0100 Subject: [PATCH 143/262] fix(docker): replace anonymous docker volume with env variable for encrypting secrets (#1809) --- .env.example | 13 ++++++++----- Dockerfile | 8 ++------ apps/nextjs/next.config.mjs | 1 + e2e/shared/create-homarr-container.ts | 21 +++++++++++++++++--- packages/auth/env.mjs | 2 -- packages/common/env.mjs | 28 +++++++++++++++++++++++++++ packages/common/package.json | 3 ++- packages/common/src/encryption.ts | 16 ++++----------- scripts/generateRandomSecureKey.js | 7 ------- scripts/run.sh | 27 ++------------------------ turbo.json | 2 +- 11 files changed, 66 insertions(+), 62 deletions(-) create mode 100644 packages/common/env.mjs delete mode 100644 scripts/generateRandomSecureKey.js diff --git a/.env.example b/.env.example index b05d685b1..854c2b19a 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,14 @@ # This file will be committed to version control, so make sure not to have any secrets in it. # If you are cloning this repo, create a copy of this file named `.env` and populate it with your secrets. +# The below secret is not used anywhere but required for Auth.js (Would encrypt JWTs and Mail hashes, both not used) +AUTH_SECRET="supersecret" + +# The below secret is used to encrypt integration secrets in the database. +# It should be a 32-byte string, generated by running `openssl rand -hex 32` on Unix +# or starting the project without any (which will show a randomly generated one). +SECRET_ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000 + # This is how you can use the sqlite driver: DB_DRIVER='better-sqlite3' DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE' @@ -20,11 +28,6 @@ DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE' # DB_PASSWORD='password' # DB_NAME='name-of-database' - -# You can generate the secret via 'openssl rand -base64 32' on Unix -# @see https://next-auth.js.org/configuration/options#secret -AUTH_SECRET='supersecret' - TURBO_TELEMETRY_DISABLED=1 # Configure logging to use winston logger diff --git a/Dockerfile b/Dockerfile index 3e6f04281..65e174659 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,12 +25,10 @@ RUN corepack enable pnpm && pnpm build FROM base AS runner WORKDIR /app -# gettext is required for envsubst -RUN apk add --no-cache redis nginx bash gettext su-exec +# gettext is required for envsubst, openssl for generating AUTH_SECRET, su-exec for running application as non-root +RUN apk add --no-cache redis nginx bash gettext su-exec openssl RUN mkdir /appdata VOLUME /appdata -RUN mkdir /secrets -VOLUME /secrets @@ -43,7 +41,6 @@ RUN echo $'#!/bin/bash\ncd /app/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homa RUN chmod +x /usr/bin/homarr # Don't run production as root -RUN chown -R nextjs:nodejs /secrets RUN mkdir -p /var/cache/nginx && chown -R nextjs:nodejs /var/cache/nginx && \ mkdir -p /var/log/nginx && chown -R nextjs:nodejs /var/log/nginx && \ mkdir -p /var/lib/nginx && chown -R nextjs:nodejs /var/lib/nginx && \ @@ -67,7 +64,6 @@ COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/ COPY --chown=nextjs:nodejs scripts/run.sh ./run.sh COPY scripts/entrypoint.sh ./entrypoint.sh RUN chmod +x ./entrypoint.sh -COPY --chown=nextjs:nodejs scripts/generateRandomSecureKey.js ./generateRandomSecureKey.js COPY --chown=nextjs:nodejs packages/redis/redis.conf /app/redis.conf COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/templates/nginx.conf diff --git a/apps/nextjs/next.config.mjs b/apps/nextjs/next.config.mjs index 8c4bd2800..bd57eb1a2 100644 --- a/apps/nextjs/next.config.mjs +++ b/apps/nextjs/next.config.mjs @@ -1,6 +1,7 @@ // Importing env files here to validate on build import "@homarr/auth/env.mjs"; import "@homarr/db/env.mjs"; +import "@homarr/common/env.mjs"; import MillionLint from "@million/lint"; import createNextIntlPlugin from "next-intl/plugin"; diff --git a/e2e/shared/create-homarr-container.ts b/e2e/shared/create-homarr-container.ts index e6f2281ae..3183e66ca 100644 --- a/e2e/shared/create-homarr-container.ts +++ b/e2e/shared/create-homarr-container.ts @@ -5,7 +5,22 @@ export const createHomarrContainer = () => { throw new Error("This test should only be run in CI or with a homarr image named 'homarr-e2e'"); } - return new GenericContainer("homarr-e2e") - .withExposedPorts(7575) - .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)); + return withLogs( + new GenericContainer("homarr-e2e") + .withExposedPorts(7575) + .withEnvironment({ + SECRET_ENCRYPTION_KEY: "0".repeat(64), + }) + .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)), + ); +}; + +export const withLogs = (container: GenericContainer) => { + container.withLogConsumer((stream) => + stream + .on("data", (line) => console.log(line)) + .on("err", (line) => console.error(line)) + .on("end", () => console.log("Stream closed")), + ); + return container; }; diff --git a/packages/auth/env.mjs b/packages/auth/env.mjs index de1faa36f..ebc4555df 100644 --- a/packages/auth/env.mjs +++ b/packages/auth/env.mjs @@ -64,7 +64,6 @@ export const env = createEnv({ server: { AUTH_LOGOUT_REDIRECT_URL: z.string().url().optional(), AUTH_SESSION_EXPIRY_TIME: createDurationSchema("30d"), - AUTH_SECRET: process.env.NODE_ENV === "production" ? z.string().min(1) : z.string().min(1).optional(), AUTH_PROVIDERS: authProvidersSchema, ...(authProviders.includes("oidc") ? { @@ -98,7 +97,6 @@ export const env = createEnv({ runtimeEnv: { AUTH_LOGOUT_REDIRECT_URL: process.env.AUTH_LOGOUT_REDIRECT_URL, AUTH_SESSION_EXPIRY_TIME: process.env.AUTH_SESSION_EXPIRY_TIME, - AUTH_SECRET: process.env.AUTH_SECRET, AUTH_PROVIDERS: process.env.AUTH_PROVIDERS, AUTH_LDAP_BASE: process.env.AUTH_LDAP_BASE, AUTH_LDAP_BIND_DN: process.env.AUTH_LDAP_BIND_DN, diff --git a/packages/common/env.mjs b/packages/common/env.mjs new file mode 100644 index 000000000..4e62ec25d --- /dev/null +++ b/packages/common/env.mjs @@ -0,0 +1,28 @@ +import { randomBytes } from "crypto"; +import { createEnv } from "@t3-oss/env-nextjs"; +import { z } from "zod"; + +const errorSuffix = `, please generate a 64 character secret in hex format or use the following: "${randomBytes(32).toString("hex")}"`; + +export const env = createEnv({ + server: { + SECRET_ENCRYPTION_KEY: z + .string({ + required_error: `SECRET_ENCRYPTION_KEY is required${errorSuffix}`, + }) + .min(64, { + message: `SECRET_ENCRYPTION_KEY has to be 64 characters${errorSuffix}`, + }) + .max(64, { + message: `SECRET_ENCRYPTION_KEY has to be 64 characters${errorSuffix}`, + }) + .regex(/^[0-9a-fA-F]{64}$/, { + message: `SECRET_ENCRYPTION_KEY must only contain hex characters${errorSuffix}`, + }), + }, + runtimeEnv: { + SECRET_ENCRYPTION_KEY: process.env.SECRET_ENCRYPTION_KEY, + }, + skipValidation: + Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint", +}); diff --git a/packages/common/package.json b/packages/common/package.json index 5b54f768c..b294e9abf 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -8,7 +8,8 @@ ".": "./index.ts", "./types": "./src/types.ts", "./server": "./src/server.ts", - "./client": "./src/client.ts" + "./client": "./src/client.ts", + "./env.mjs": "./env.mjs" }, "typesVersions": { "*": { diff --git a/packages/common/src/encryption.ts b/packages/common/src/encryption.ts index 369fac3b2..e9a20b69c 100644 --- a/packages/common/src/encryption.ts +++ b/packages/common/src/encryption.ts @@ -1,20 +1,12 @@ import crypto from "crypto"; -import { logger } from "@homarr/log"; +import { env } from "../env.mjs"; const algorithm = "aes-256-cbc"; //Using AES encryption -const fallbackKey = "0000000000000000000000000000000000000000000000000000000000000000"; -const encryptionKey = process.env.ENCRYPTION_KEY ?? fallbackKey; // Fallback to a default key for local development -if (encryptionKey === fallbackKey) { - logger.warn("Using a fallback encryption key, stored secrets are not secure"); - // We never want to use the fallback key in production - if (process.env.NODE_ENV === "production" && process.env.CI !== "true") { - throw new Error("Encryption key is not set"); - } -} - -const key = Buffer.from(encryptionKey, "hex"); +// We fallback to a key of 0s if the key was not provided because env validation was skipped +// This should only be the case in CI +const key = Buffer.from(env.SECRET_ENCRYPTION_KEY || "0".repeat(64), "hex"); export function encryptSecret(text: string): `${string}.${string}` { const initializationVector = crypto.randomBytes(16); diff --git a/scripts/generateRandomSecureKey.js b/scripts/generateRandomSecureKey.js deleted file mode 100644 index 4813ae6a5..000000000 --- a/scripts/generateRandomSecureKey.js +++ /dev/null @@ -1,7 +0,0 @@ -// This script generates a random secure key with a length of 64 characters -// This key is used to encrypt and decrypt the integration secrets for auth.js -// In production it is generated in run.sh and stored in the environment variables ENCRYPTION_KEY / AUTH_SECRET -// during runtime, it's also stored in a file. - -const crypto = require("crypto"); -console.log(crypto.randomBytes(32).toString("hex")); diff --git a/scripts/run.sh b/scripts/run.sh index 2ba89cdff..ccceda47b 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -6,31 +6,8 @@ else node ./db/migrations/$DB_DIALECT/migrate.cjs ./db/migrations/$DB_DIALECT fi -# Generates an encryption key if it doesn't exist and saves it to /secrets/encryptionKey -# Also sets the ENCRYPTION_KEY environment variable -encryptionKey="" -if [ -r /secrets/encryptionKey ]; then - echo "Encryption key already exists" - encryptionKey=$(cat /secrets/encryptionKey) -else - echo "Generating encryption key" - encryptionKey=$(node ./generateRandomSecureKey.js) - echo $encryptionKey > /secrets/encryptionKey -fi -export ENCRYPTION_KEY=$encryptionKey - -# Generates an auth secret if it doesn't exist and saves it to /secrets/authSecret -# Also sets the AUTH_SECRET environment variable required for auth.js -authSecret="" -if [ -r /secrets/authSecret ]; then - echo "Auth secret already exists" - authSecret=$(cat /secrets/authSecret) -else - echo "Generating auth secret" - authSecret=$(node ./generateRandomSecureKey.js) - echo $authSecret > /secrets/authSecret -fi -export AUTH_SECRET=$authSecret +# Auth secret is generated every time the container starts as it is required, but not used because we don't need JWTs or Mail hashing +export AUTH_SECRET=$(openssl rand -base64 32) # Start nginx proxy # 1. Replace the HOSTNAME in the nginx template file diff --git a/turbo.json b/turbo.json index b7c00eb22..b3732c66e 100644 --- a/turbo.json +++ b/turbo.json @@ -23,7 +23,6 @@ "AUTH_OIDC_AUTO_LOGIN", "AUTH_LOGOUT_REDIRECT_URL", "AUTH_PROVIDERS", - "AUTH_SECRET", "AUTH_SESSION_EXPIRY_TIME", "CI", "DISABLE_REDIS_LOGS", @@ -38,6 +37,7 @@ "DOCKER_PORTS", "NODE_ENV", "PORT", + "SECRET_ENCRYPTION_KEY", "SKIP_ENV_VALIDATION" ], "ui": "stream", From aeb681a85839e31284e8f1566adc4191a68ea385 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 31 Dec 2024 11:36:28 +0100 Subject: [PATCH 144/262] feat(docker): add support for pgid and puid env variables (#1759) --- Dockerfile | 42 ++++++++++++++++++------------------------ scripts/entrypoint.sh | 25 ++++++++++++++++++++----- scripts/run.sh | 4 ++++ 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/Dockerfile b/Dockerfile index 65e174659..a799e8152 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,42 +30,36 @@ RUN apk add --no-cache redis nginx bash gettext su-exec openssl RUN mkdir /appdata VOLUME /appdata - - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - # Enable homarr cli -COPY --from=builder --chown=nextjs:nodejs /app/packages/cli/cli.cjs /app/apps/cli/cli.cjs +COPY --from=builder /app/packages/cli/cli.cjs /app/apps/cli/cli.cjs RUN echo $'#!/bin/bash\ncd /app/apps/cli && node ./cli.cjs "$@"' > /usr/bin/homarr RUN chmod +x /usr/bin/homarr # Don't run production as root -RUN mkdir -p /var/cache/nginx && chown -R nextjs:nodejs /var/cache/nginx && \ - mkdir -p /var/log/nginx && chown -R nextjs:nodejs /var/log/nginx && \ - mkdir -p /var/lib/nginx && chown -R nextjs:nodejs /var/lib/nginx && \ - touch /run/nginx/nginx.pid && chown -R nextjs:nodejs /run/nginx/nginx.pid && \ - mkdir -p /etc/nginx/templates /etc/nginx/ssl/certs && chown -R nextjs:nodejs /etc/nginx +RUN mkdir -p /var/cache/nginx && \ + mkdir -p /var/log/nginx && \ + mkdir -p /var/lib/nginx && \ + touch /run/nginx/nginx.pid && \ + mkdir -p /etc/nginx/templates /etc/nginx/ssl/certs COPY --from=builder /app/apps/nextjs/next.config.mjs . COPY --from=builder /app/apps/nextjs/package.json . -COPY --from=builder --chown=nextjs:nodejs /app/apps/tasks/tasks.cjs ./apps/tasks/tasks.cjs -COPY --from=builder --chown=nextjs:nodejs /app/apps/websocket/wssServer.cjs ./apps/websocket/wssServer.cjs -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/build/better_sqlite3.node +COPY --from=builder /app/apps/tasks/tasks.cjs ./apps/tasks/tasks.cjs +COPY --from=builder /app/apps/websocket/wssServer.cjs ./apps/websocket/wssServer.cjs +COPY --from=builder /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/build/better_sqlite3.node -COPY --from=builder --chown=nextjs:nodejs /app/packages/db/migrations ./db/migrations +COPY --from=builder /app/packages/db/migrations ./db/migrations # Automatically leverage output traces to reduce image size # https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/.next/static ./apps/nextjs/.next/static -COPY --from=builder --chown=nextjs:nodejs /app/apps/nextjs/public ./apps/nextjs/public -COPY --chown=nextjs:nodejs scripts/run.sh ./run.sh -COPY scripts/entrypoint.sh ./entrypoint.sh -RUN chmod +x ./entrypoint.sh -COPY --chown=nextjs:nodejs packages/redis/redis.conf /app/redis.conf -COPY --chown=nextjs:nodejs nginx.conf /etc/nginx/templates/nginx.conf +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/public ./apps/nextjs/public +COPY scripts/run.sh ./run.sh +COPY --chmod=777 scripts/entrypoint.sh ./entrypoint.sh +COPY packages/redis/redis.conf /app/redis.conf +COPY nginx.conf /etc/nginx/templates/nginx.conf ENV DB_URL='/appdata/db/db.sqlite' @@ -74,4 +68,4 @@ ENV DB_DRIVER='better-sqlite3' ENV AUTH_PROVIDERS='credentials' ENTRYPOINT [ "/app/entrypoint.sh" ] -CMD ["sh", "run.sh"] +CMD ["sh", "run.sh"] \ No newline at end of file diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 59a5589df..54131a632 100644 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -1,10 +1,25 @@ #!/bin/sh set -e -# Creating folders in volume -mkdir -p /appdata/db -mkdir -p /appdata/redis +export PUID=${PUID:-0} +export PGID=${PGID:-0} -chown -R nextjs:nodejs /appdata +echo "Starting with UID='$PUID', GID='$PGID'" -su-exec 1001:1001 "$@" \ No newline at end of file +if [ "${PUID}" != "0" ] || [ "${PGID}" != "0" ]; then + # The below command will change the owner of all files in the /app directory (except node_modules) to the new UID and GID + echo "Changing owner to $PUID:$PGID, this will take about 10 seconds..." + find . -name 'node_modules' -prune -o -mindepth 1 -maxdepth 1 -exec chown -R $PUID:$PGID {} + + chown -R $PUID:$PGID /var/cache/nginx + chown -R $PUID:$PGID /var/log/nginx + chown -R $PUID:$PGID /var/lib/nginx + chown -R $PUID:$PGID /run/nginx/nginx.pid + chown -R $PUID:$PGID /etc/nginx + echo "Changing owner to $PUID:$PGID, done." +fi + +if [ "${PUID}" != "0" ]; then + su-exec $PUID:$PGID "$@" +else + exec "$@" +fi diff --git a/scripts/run.sh b/scripts/run.sh index ccceda47b..f3f92820c 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -1,3 +1,7 @@ +# Create sub directories in volume +mkdir -p /appdata/db +mkdir -p /appdata/redis + # Run migrations if [ $DB_MIGRATIONS_DISABLED = "true" ]; then echo "DB migrations are disabled, skipping" From f5076454cd644a99439b697f24bb0b1f871b2205 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Tue, 31 Dec 2024 11:40:37 +0100 Subject: [PATCH 145/262] feat(integration): add search engine creation (#1816) Co-authored-by: Meier Lukas --- .vscode/settings.json | 2 +- .../new/_integration-new-form.tsx | 17 +- .../router/integration/integration-router.ts | 44 + .../integration/integration-router.spec.ts | 44 + .../migrations/mysql/0018_mighty_shaman.sql | 1 + .../migrations/mysql/meta/0018_snapshot.json | 1668 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../sqlite/0018_cheerful_tattoo.sql | 1 + .../migrations/sqlite/meta/0018_snapshot.json | 1593 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 2 +- packages/db/schema/sqlite.ts | 2 +- packages/icons/index.ts | 1 + packages/icons/src/auto-icon-searcher.ts | 9 + packages/translation/src/lang/en.json | 4 + packages/validation/src/integration.ts | 1 + 16 files changed, 3398 insertions(+), 5 deletions(-) create mode 100644 packages/db/migrations/mysql/0018_mighty_shaman.sql create mode 100644 packages/db/migrations/mysql/meta/0018_snapshot.json create mode 100644 packages/db/migrations/sqlite/0018_cheerful_tattoo.sql create mode 100644 packages/db/migrations/sqlite/meta/0018_snapshot.json create mode 100644 packages/icons/src/auto-icon-searcher.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 2e67df382..51d2500a1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,5 @@ "i18n-ally.localesPaths": [ "packages/translation/src/lang", ], - "i18n-ally.keystyle": "auto", + "i18n-ally.keystyle": "nested", } diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index 791be2938..a223e3bfc 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -3,13 +3,13 @@ import { useCallback } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; -import { Alert, Button, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; +import { Alert, Button, Checkbox, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; import { IconInfoCircle } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions"; -import { getAllSecretKindOptions, getIntegrationName } from "@homarr/definitions"; +import { getAllSecretKindOptions, getIntegrationName, integrationDefs } from "@homarr/definitions"; import type { UseFormReturnType } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { convertIntegrationTestConnectionError } from "@homarr/integrations/client"; @@ -38,6 +38,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => kind, value: "", })), + attemptSearchEngineCreation: true, }, }); const { mutateAsync, isPending } = clientApi.integration.create.useMutation(); @@ -78,6 +79,8 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => ); }; + const supportsSearchEngine = integrationDefs[searchParams.kind].category.flat().includes("search"); + return (

void handleSubmitAsync(value))}> @@ -104,6 +107,16 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => + {supportsSearchEngine && ( + + )} +
From 4ead238462828934483a684ef56c46d7908968f5 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 3 Jan 2025 16:49:30 +0100 Subject: [PATCH 161/262] test(e2e): add for onboarding and lldap authorization (#1834) * test(e2e): add for onboarding and lldap authorization * ci: add playwright chrome installation to e2e test * fix(e2e): timeout between lldap login redirect to short * test(e2e): add oidc azure test * fix(e2e): lldap test fails * wip: add temporary error log for failed ldap server connection * fix(e2e): github actions don't support host.docker.internal * chore: address pull request feedback * refactor(e2e): move onboarding steps to onboarding actions and assertions * fix(e2e): increase timeout for navigating back from azure login * fix: wait for url network changed error * fix: revert to wait for url * fix(e2e): remove oidc test * refactor(e2e): remove env validation * ci: remove azure oidc env variables --- .dockerignore | 3 +- .github/workflows/code-quality.yml | 2 + .gitignore | 2 + e2e/lldap.spec.ts | 92 +++++++++++++++++++ e2e/onboarding.spec.ts | 85 +++++++++++++++++ e2e/shared/actions/onboarding-actions.ts | 53 +++++++++++ .../assertions/onboarding-assertions.ts | 62 +++++++++++++ e2e/shared/create-homarr-container.ts | 43 +++++++-- e2e/shared/e2e-db.ts | 32 +++++++ .../src/docs/homarr-docs-sitemap.ts | 4 + pnpm-lock.yaml | 77 +++++++++++----- 11 files changed, 422 insertions(+), 33 deletions(-) create mode 100644 e2e/lldap.spec.ts create mode 100644 e2e/onboarding.spec.ts create mode 100644 e2e/shared/actions/onboarding-actions.ts create mode 100644 e2e/shared/assertions/onboarding-assertions.ts create mode 100644 e2e/shared/e2e-db.ts diff --git a/.dockerignore b/.dockerignore index 7f15c4204..9269854cc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,4 +6,5 @@ README.md .next .git dev -.build \ No newline at end of file +.build +e2e \ No newline at end of file diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index a93cfe2f2..92efa0d03 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -91,6 +91,8 @@ jobs: network: host env: SKIP_ENV_VALIDATION: true + - name: Install playwright browsers + run: pnpm exec playwright install chromium - name: Run E2E Tests shell: bash run: pnpm test:e2e diff --git a/.gitignore b/.gitignore index bdc55c860..7e1d14c68 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,8 @@ apps/websocket/wssServer.cjs apps/nextjs/.million/ packages/cli/cli.cjs +# e2e mounts +e2e/shared/tmp #personal backgrounds apps/nextjs/public/images/background.png \ No newline at end of file diff --git a/e2e/lldap.spec.ts b/e2e/lldap.spec.ts new file mode 100644 index 000000000..f9015af55 --- /dev/null +++ b/e2e/lldap.spec.ts @@ -0,0 +1,92 @@ +import { chromium } from "playwright"; +import { GenericContainer } from "testcontainers"; +import { describe, expect, test } from "vitest"; + +import { OnboardingActions } from "./shared/actions/onboarding-actions"; +import { createHomarrContainer, withLogs } from "./shared/create-homarr-container"; +import { createSqliteDbFileAsync } from "./shared/e2e-db"; + +const defaultCredentials = { + username: "admin", + password: "password", + email: "admin@homarr.dev", + group: "lldap_admin", +}; + +const ldapBase = "dc=example,dc=com"; + +describe("LLDAP authorization", () => { + test("Authorize with LLDAP successfully", async () => { + // Arrange + const lldapContainer = await createLldapContainer().start(); + const { db, localMountPath } = await createSqliteDbFileAsync(); + const homarrContainer = await createHomarrContainer({ + environment: { + AUTH_PROVIDERS: "ldap", + AUTH_LDAP_URI: `ldap://host.docker.internal:${lldapContainer.getMappedPort(3890)}`, + AUTH_LDAP_BASE: ldapBase, + AUTH_LDAP_BIND_DN: `uid=${defaultCredentials.username},ou=People,${ldapBase}`, + AUTH_LDAP_BIND_PASSWORD: defaultCredentials.password, + }, + mounts: { + "/appdata": localMountPath, + }, + }).start(); + + const browser = await chromium.launch(); + const context = await browser.newContext(); + const page = await context.newPage(); + + const onboardingActions = new OnboardingActions(page, db); + await onboardingActions.skipOnboardingAsync({ + group: defaultCredentials.group, + }); + + // Act + await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}/auth/login`); + await page.getByLabel("Username").fill(defaultCredentials.username); + await page.getByLabel("Password").fill(defaultCredentials.password); + await page.locator("css=button[type='submit']").click(); + + // Assert + await page.waitForURL(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`); + const users = await db.query.users.findMany({ + with: { + groups: { + with: { + group: true, + }, + }, + }, + }); + expect(users).toHaveLength(1); + const user = users[0]!; + expect(user).toEqual( + expect.objectContaining({ + name: defaultCredentials.username, + email: defaultCredentials.email, + provider: "ldap", + }), + ); + + const groups = user.groups.map((g) => g.group.name); + expect(groups).toContain(defaultCredentials.group); + + // Cleanup + await browser.close(); + await homarrContainer.stop(); + await lldapContainer.stop(); + }, 120_000); +}); + +const createLldapContainer = () => { + return withLogs( + new GenericContainer("lldap/lldap:stable").withExposedPorts(3890).withEnvironment({ + LLDAP_JWT_SECRET: "REPLACE_WITH_RANDOM", + LLDAP_KEY_SEED: "REPLACE_WITH_RANDOM", + LLDAP_LDAP_BASE_DN: ldapBase, + LLDAP_LDAP_USER_PASS: defaultCredentials.password, + LLDAP_LDAP_USER_EMAIL: defaultCredentials.email, + }), + ); +}; diff --git a/e2e/onboarding.spec.ts b/e2e/onboarding.spec.ts new file mode 100644 index 000000000..061f5e6d8 --- /dev/null +++ b/e2e/onboarding.spec.ts @@ -0,0 +1,85 @@ +import { chromium } from "playwright"; +import { describe, test } from "vitest"; + +import { OnboardingActions } from "./shared/actions/onboarding-actions"; +import { OnboardingAssertions } from "./shared/assertions/onboarding-assertions"; +import { createHomarrContainer } from "./shared/create-homarr-container"; +import { createSqliteDbFileAsync } from "./shared/e2e-db"; + +describe("Onboarding", () => { + test("Credentials onboarding should be successful", async () => { + // Arrange + const { db, localMountPath } = await createSqliteDbFileAsync(); + const homarrContainer = await createHomarrContainer({ + mounts: { + "/appdata": localMountPath, + }, + }).start(); + + const browser = await chromium.launch(); + const context = await browser.newContext(); + const page = await context.newPage(); + const actions = new OnboardingActions(page, db); + const assertions = new OnboardingAssertions(page, db); + + // Act + await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`); + await actions.startOnboardingAsync("scratch"); + await actions.processUserStepAsync({ + username: "admin", + password: "Comp(exP4sswOrd", + confirmPassword: "Comp(exP4sswOrd", + }); + await actions.processSettingsStepAsync(); + + // Assert + await assertions.assertFinishStepVisibleAsync(); + await assertions.assertUserAndAdminGroupInsertedAsync("admin"); + await assertions.assertDbOnboardingStepAsync("finish"); + + // Cleanup + await browser.close(); + await homarrContainer.stop(); + }, 60_000); + + test("External provider onboarding setup should be successful", async () => { + // Arrange + const { db, localMountPath } = await createSqliteDbFileAsync(); + const homarrContainer = await createHomarrContainer({ + environment: { + AUTH_PROVIDERS: "ldap", + AUTH_LDAP_URI: "ldap://host.docker.internal:3890", + AUTH_LDAP_BASE: "", + AUTH_LDAP_BIND_DN: "", + AUTH_LDAP_BIND_PASSWORD: "", + }, + mounts: { + "/appdata": localMountPath, + }, + }).start(); + const externalGroupName = "oidc-admins"; + + const browser = await chromium.launch(); + const context = await browser.newContext(); + const page = await context.newPage(); + const actions = new OnboardingActions(page, db); + const assertions = new OnboardingAssertions(page, db); + + // Act + await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`); + await actions.startOnboardingAsync("scratch"); + await actions.processExternalGroupStepAsync({ + name: externalGroupName, + }); + await actions.processSettingsStepAsync(); + + // Assert + await assertions.assertFinishStepVisibleAsync(); + await assertions.assertExternalGroupInsertedAsync(externalGroupName); + await assertions.assertDbOnboardingStepAsync("finish"); + + // Cleanup + await browser.close(); + await homarrContainer.stop(); + }, 60_000); +}); diff --git a/e2e/shared/actions/onboarding-actions.ts b/e2e/shared/actions/onboarding-actions.ts new file mode 100644 index 000000000..8362a46a5 --- /dev/null +++ b/e2e/shared/actions/onboarding-actions.ts @@ -0,0 +1,53 @@ +import { createId } from "@paralleldrive/cuid2"; +import type { Page } from "playwright"; + +import * as sqliteSchema from "../../../packages/db/schema/sqlite"; +import type { SqliteDatabase } from "../e2e-db"; + +export class OnboardingActions { + private readonly page: Page; + private readonly db: SqliteDatabase; + + constructor(page: Page, db: SqliteDatabase) { + this.page = page; + this.db = db; + } + + public async skipOnboardingAsync(input?: { group?: string }) { + await this.db.update(sqliteSchema.onboarding).set({ + step: "finish", + }); + + if (input?.group) { + await this.db.insert(sqliteSchema.groups).values({ + id: createId(), + name: input.group, + }); + } + } + + public async startOnboardingAsync(type: "scratch" | "before 1.0") { + await this.page.locator("button", { hasText: type }).click(); + } + + public async processUserStepAsync(input: { username: string; password: string; confirmPassword: string }) { + await this.page.waitForSelector("text=administrator user"); + + await this.page.getByLabel("Username").fill(input.username); + await this.page.getByLabel("Password", { exact: true }).fill(input.password); + await this.page.getByLabel("Confirm password").fill(input.confirmPassword); + + await this.page.locator("css=button[type='submit']").click(); + } + + public async processExternalGroupStepAsync(input: { name: string }) { + await this.page.waitForSelector("text=external provider"); + await this.page.locator("input").fill(input.name); + await this.page.locator("css=button[type='submit']").click(); + } + + public async processSettingsStepAsync() { + await this.page.waitForSelector("text=Analytics"); + await this.page.locator("css=button[type='submit']").click(); + } +} diff --git a/e2e/shared/assertions/onboarding-assertions.ts b/e2e/shared/assertions/onboarding-assertions.ts new file mode 100644 index 000000000..a2f9ccb2f --- /dev/null +++ b/e2e/shared/assertions/onboarding-assertions.ts @@ -0,0 +1,62 @@ +import { eq } from "drizzle-orm"; +import type { Page } from "playwright"; +import { expect } from "vitest"; + +import * as sqliteSchema from "../../../packages/db/schema/sqlite"; +import { OnboardingStep } from "../../../packages/definitions/src"; +import { credentialsAdminGroup } from "../../../packages/definitions/src/group"; +import type { SqliteDatabase } from "../e2e-db"; + +export class OnboardingAssertions { + private readonly page: Page; + private readonly db: SqliteDatabase; + + constructor(page: Page, db: SqliteDatabase) { + this.page = page; + this.db = db; + } + + public async assertDbOnboardingStepAsync(expectedStep: OnboardingStep) { + const onboarding = await this.db.query.onboarding.findFirst(); + expect(onboarding?.step).toEqual(expectedStep); + } + + public async assertUserAndAdminGroupInsertedAsync(expectedUsername: string) { + const users = await this.db.query.users.findMany({ + with: { + groups: { + with: { + group: { + with: { + permissions: true, + }, + }, + }, + }, + }, + }); + + const user = users.find((u) => u.name === expectedUsername); + expect(user).toBeDefined(); + + const adminGroup = user!.groups.find((g) => g.group.name === credentialsAdminGroup); + expect(adminGroup).toBeDefined(); + expect(adminGroup!.group.permissions).toEqual([expect.objectContaining({ permission: "admin" })]); + } + + public async assertExternalGroupInsertedAsync(expectedGroupName: string) { + const group = await this.db.query.groups.findFirst({ + where: eq(sqliteSchema.groups.name, expectedGroupName), + with: { + permissions: true, + }, + }); + + expect(group).toBeDefined(); + expect(group!.permissions).toEqual([expect.objectContaining({ permission: "admin" })]); + } + + public async assertFinishStepVisibleAsync() { + await this.page.waitForSelector("text=completed the setup", { timeout: 5000 }); + } +} diff --git a/e2e/shared/create-homarr-container.ts b/e2e/shared/create-homarr-container.ts index 3183e66ca..7e5bcd5c4 100644 --- a/e2e/shared/create-homarr-container.ts +++ b/e2e/shared/create-homarr-container.ts @@ -1,18 +1,43 @@ import { GenericContainer, Wait } from "testcontainers"; +import { Environment } from "testcontainers/build/types"; -export const createHomarrContainer = () => { +export const createHomarrContainer = ( + options: { + environment?: Environment; + mounts?: { + "/appdata"?: string; + "/var/run/docker.sock"?: string; + }; + } = {}, +) => { if (!process.env.CI) { throw new Error("This test should only be run in CI or with a homarr image named 'homarr-e2e'"); } - return withLogs( - new GenericContainer("homarr-e2e") - .withExposedPorts(7575) - .withEnvironment({ - SECRET_ENCRYPTION_KEY: "0".repeat(64), - }) - .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)), - ); + const container = new GenericContainer("homarr-e2e") + .withExposedPorts(7575) + .withEnvironment({ + ...options.environment, + SECRET_ENCRYPTION_KEY: "0".repeat(64), + }) + .withBindMounts( + Object.entries(options.mounts ?? {}) + .filter((item) => item?.[0] !== undefined) + .map(([container, local]) => ({ + source: local, + target: container, + })), + ) + .withWaitStrategy(Wait.forHttp("/api/health/ready", 7575)) + .withExtraHosts([ + { + // This enabled the usage of host.docker.internal as hostname in the container + host: "host.docker.internal", + ipAddress: "host-gateway", + }, + ]); + + return withLogs(container); }; export const withLogs = (container: GenericContainer) => { diff --git a/e2e/shared/e2e-db.ts b/e2e/shared/e2e-db.ts new file mode 100644 index 000000000..0abc87823 --- /dev/null +++ b/e2e/shared/e2e-db.ts @@ -0,0 +1,32 @@ +import { mkdir } from "fs/promises"; +import path from "path"; +import { createId } from "@paralleldrive/cuid2"; +import Database from "better-sqlite3"; +import { BetterSQLite3Database, drizzle } from "drizzle-orm/better-sqlite3"; +import { migrate } from "drizzle-orm/better-sqlite3/migrator"; + +import * as sqliteSchema from "../../packages/db/schema/sqlite"; + +export const createSqliteDbFileAsync = async () => { + const localMountPath = path.join(__dirname, "tmp", createId()); + await mkdir(path.join(localMountPath, "db"), { recursive: true }); + + const localDbUrl = path.join(localMountPath, "db", "db.sqlite"); + + const connection = new Database(localDbUrl); + const db = drizzle(connection, { + schema: sqliteSchema, + casing: "snake_case", + }); + + await migrate(db, { + migrationsFolder: path.join(__dirname, "..", "..", "packages", "db", "migrations", "sqlite"), + }); + + return { + db, + localMountPath, + }; +}; + +export type SqliteDatabase = BetterSQLite3Database; diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 1ef500ee0..b733a9b67 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -9,6 +9,7 @@ export type HomarrDocumentationPath = | "/blog/2023/12/22/updated-documentation" | "/blog/2024/09/23/version-1.0" | "/blog/2024/12/17/open-beta-1.0" + | "/blog/2024/12/31/migrate-secret-enryption-key" | "/blog/archive" | "/blog/authors" | "/blog/authors/ajnart" @@ -100,11 +101,13 @@ export type HomarrDocumentationPath = | "/docs/tags/open-media-vault" | "/docs/tags/overseerr" | "/docs/tags/permissions" + | "/docs/tags/pgid" | "/docs/tags/pi-hole" | "/docs/tags/ping" | "/docs/tags/programming" | "/docs/tags/proxmox" | "/docs/tags/proxy" + | "/docs/tags/puid" | "/docs/tags/roles" | "/docs/tags/rss" | "/docs/tags/search" @@ -135,6 +138,7 @@ export type HomarrDocumentationPath = | "/docs/advanced/icons" | "/docs/advanced/keyboard-shortcuts" | "/docs/advanced/proxy" + | "/docs/advanced/running-as-different-user" | "/docs/advanced/single-sign-on" | "/docs/category/advanced" | "/docs/category/community" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8619d666..05bd7e0fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -183,13 +183,13 @@ importers: version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.62.12 - version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) @@ -231,7 +231,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -556,7 +556,7 @@ importers: version: 4.5.0 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -626,10 +626,10 @@ importers: version: 7.3.0 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -706,7 +706,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1195,7 +1195,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1290,7 +1290,7 @@ importers: version: 0.5.16 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1530,7 +1530,7 @@ importers: version: 2.11.0(@types/react@18.3.13)(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1573,10 +1573,10 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) next-intl: specifier: 3.26.3 - version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1631,7 +1631,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1804,7 +1804,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -3341,6 +3341,11 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@playwright/test@1.49.1': + resolution: {integrity: sha512-Ky+BVzPz8pL6PQxHqNRW1k3mIyv933LML7HktS8uik0bUXNCdPhoS/kLihiO1tMf/egaJb4IutXd7UywvXEW+g==} + engines: {node: '>=18'} + hasBin: true + '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -7577,11 +7582,21 @@ packages: engines: {node: '>=18'} hasBin: true + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} + engines: {node: '>=18'} + hasBin: true + playwright@1.49.0: resolution: {integrity: sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==} engines: {node: '>=18'} hasBin: true + playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} + engines: {node: '>=18'} + hasBin: true + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -10772,6 +10787,11 @@ snapshots: '@pkgr/core@0.1.1': {} + '@playwright/test@1.49.1': + dependencies: + playwright: 1.49.1 + optional: true + '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -11335,10 +11355,10 @@ snapshots: '@tanstack/react-query': 5.62.12(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.62.12(react@19.0.0) - next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 '@tanstack/react-query@5.62.12(react@19.0.0)': @@ -11582,11 +11602,11 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) - next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 @@ -15219,21 +15239,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): + next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): + next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@14.2.22(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0): + next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0): dependencies: '@next/env': 14.2.22 '@swc/helpers': 0.5.5 @@ -15254,6 +15274,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.22 '@next/swc-win32-ia32-msvc': 14.2.22 '@next/swc-win32-x64-msvc': 14.2.22 + '@playwright/test': 1.49.1 sass: 1.83.0 transitivePeerDependencies: - '@babel/core' @@ -15687,12 +15708,22 @@ snapshots: playwright-core@1.49.0: {} + playwright-core@1.49.1: + optional: true + playwright@1.49.0: dependencies: playwright-core: 1.49.0 optionalDependencies: fsevents: 2.3.2 + playwright@1.49.1: + dependencies: + playwright-core: 1.49.1 + optionalDependencies: + fsevents: 2.3.2 + optional: true + possible-typed-array-names@1.0.0: {} postcss-js@4.0.1(postcss@8.4.47): From 024ec9235da1481d58fba390725dc4fd0f888875 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:13:36 +0000 Subject: [PATCH 162/262] chore(release): 1.0.0-beta.11 [skip ci] --- CHANGELOG.md | 14 ++++++++++++++ package.json | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84fccd4ac..14e353ebe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## [1.0.0-beta.11](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2025-01-03) + +### Features + +* remove import beta badge ([#1829](https://github.com/homarr-labs/homarr/issues/1829)) ([6305c74](https://github.com/homarr-labs/homarr/commit/6305c74f90d943722c915ffbf54b5fd7e68a7dca)) + +### Bug Fixes + +* **deps:** update dependency zod-form-data to ^2.0.5 ([#1822](https://github.com/homarr-labs/homarr/issues/1822)) ([a234fc8](https://github.com/homarr-labs/homarr/commit/a234fc844e5edcef9935efb0725b6ccceadfe69d)) +* **deps:** update tanstack-query monorepo to ^5.62.12 ([#1843](https://github.com/homarr-labs/homarr/issues/1843)) ([bc5e25e](https://github.com/homarr-labs/homarr/commit/bc5e25e9cd3269a3d8cc8ef521ae75aff50088be)) +* **icons:** picker does not allow multiple words ([#1827](https://github.com/homarr-labs/homarr/issues/1827)) ([6e21863](https://github.com/homarr-labs/homarr/commit/6e21863d04f7d0598e7e7ca3fb707f9beb09d7ef)) +* login page in light mode is always black ([#1821](https://github.com/homarr-labs/homarr/issues/1821)) ([cc7d53e](https://github.com/homarr-labs/homarr/commit/cc7d53e84ec8c2dd3698a178ca6f35099194b5d7)) +* prowlarr integration indexers status changed from id to indexerId ([#1837](https://github.com/homarr-labs/homarr/issues/1837)) ([ee8831a](https://github.com/homarr-labs/homarr/commit/ee8831affe34a33b80a0993aa538c2b16c035f11)) + ## [1.0.0-beta.10](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.9...v1.0.0-beta.10) (2024-12-31) ### Features diff --git a/package.json b/package.json index da1fb4eca..427101e29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0-beta.10", + "version": "1.0.0-beta.11", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From 2358f6f5ebf4bbb9eb4ccd91990f967d9cc44e3b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 20:17:03 +0000 Subject: [PATCH 163/262] fix(deps): update tanstack-query monorepo to ^5.62.14 (#1846) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++--- pnpm-lock.yaml | 54 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 9c4864f44..dc7c16f6b 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.26.0", - "@tanstack/react-query": "^5.62.12", - "@tanstack/react-query-devtools": "^5.62.12", - "@tanstack/react-query-next-experimental": "5.62.12", + "@tanstack/react-query": "^5.62.14", + "@tanstack/react-query-devtools": "^5.62.14", + "@tanstack/react-query-next-experimental": "5.62.14", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05bd7e0fb..9bba34aea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.26.0 version: 3.26.0(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.12 - version: 5.62.12(react@19.0.0) + specifier: ^5.62.14 + version: 5.62.14(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.12 - version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(react@19.0.0) + specifier: ^5.62.14 + version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.12 - version: 5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + specifier: 5.62.14 + version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -3658,21 +3658,21 @@ packages: '@tanstack/query-devtools@5.62.9': resolution: {integrity: sha512-b1NZzDLVf6laJsB1Cfm3ieuYzM+WqoO8qpm9v+3Etwd+Ph4zkhUMiT+wcWj5AhEPsXiRodKYiiW048VDNdBxNg==} - '@tanstack/react-query-devtools@5.62.12': - resolution: {integrity: sha512-UvkqYOplVRn6D5wMC14XHu1MCJC0ssi3FJuiQW1iSYA4cxh4GD/cy8ScMCEOtcY7j2JCFw2d3grSWxT4c66cdg==} + '@tanstack/react-query-devtools@5.62.14': + resolution: {integrity: sha512-5OEOWzO9gLovbKozIaSRHXXPd30dooa+MZTG0gfMMTKXhH5lct6SLozQ5ngRvzrbYpfL4c9i2+6bX8Hwu8sT0w==} peerDependencies: - '@tanstack/react-query': ^5.62.12 + '@tanstack/react-query': ^5.62.14 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.12': - resolution: {integrity: sha512-6otw/+R4pm6OBnf6mO6Icw37ViNS4Sc7RuzHWIr8z7J9tBwt3xZKD2HPDXs3AbzJCY9s4bJAOsCzhUPwQO1SiA==} + '@tanstack/react-query-next-experimental@5.62.14': + resolution: {integrity: sha512-akAkDDdYh1wy6sKLGSFItmhEBijZO+WkxChV1QCEPEfCynCynPsZ+fUr58l+XYJwWYihrVFuPlgM8Mlth+bvVQ==} peerDependencies: - '@tanstack/react-query': ^5.62.12 + '@tanstack/react-query': ^5.62.14 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.12': - resolution: {integrity: sha512-yt8p7l5MlHA3QCt6xF1Cu9dw1Anf93yTK+DMDJQ64h/mshAymVAtcwj8TpsyyBrZNWAAZvza/m76bnTSR79ZtQ==} + '@tanstack/react-query@5.62.14': + resolution: {integrity: sha512-ev/6eVdJvX9vpomKmFuXsrQb6TwqqBn/7OeB0KZkHjEYk/Bo1XBMj8wRmobn8pqdU8lK271tUjt+0B0UQ9MZ6A==} peerDependencies: react: ^18 || ^19 @@ -11349,19 +11349,19 @@ snapshots: '@tanstack/query-devtools@5.62.9': {} - '@tanstack/react-query-devtools@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.62.9 - '@tanstack/react-query': 5.62.12(react@19.0.0) + '@tanstack/react-query': 5.62.14(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.12(@tanstack/react-query@5.62.12(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.12(react@19.0.0) + '@tanstack/react-query': 5.62.14(react@19.0.0) next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) react: 19.0.0 - '@tanstack/react-query@5.62.12(react@19.0.0)': + '@tanstack/react-query@5.62.14(react@19.0.0)': dependencies: '@tanstack/query-core': 5.62.12 react: 19.0.0 @@ -11602,7 +11602,7 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) @@ -11611,12 +11611,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.12(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.62.14(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.12(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.12(react@19.0.0) + '@tanstack/react-query': 5.62.14(react@19.0.0) '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) react: 19.0.0 From e2b211cf34e9ee6a7939e5b25ebc1029e300bb10 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 00:43:27 +0000 Subject: [PATCH 164/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/pl.json | 802 +++++++++++++------------- 1 file changed, 401 insertions(+), 401 deletions(-) diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 197ec08ae..796dcc0a9 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -2,130 +2,130 @@ "init": { "step": { "start": { - "title": "", - "subtitle": "", - "description": "", + "title": "Witaj w Homarrze", + "subtitle": "Zacznijmy od konfiguracji twojego Homarra.", + "description": "Aby rozpocząć, wybierz jak chcesz skonfigurować Homarra.", "action": { - "scratch": "", - "importOldmarr": "" + "scratch": "Zacznij od zera", + "importOldmarr": "Importuj z Homarr przed 1.0" } }, "import": { - "title": "", - "subtitle": "", + "title": "Importuj dane", + "subtitle": "Możesz zaimportować dane z istniejącej instancji Homarra.", "dropzone": { - "title": "", - "description": "" + "title": "Przeciągnij tutaj plik zip lub kliknij, aby przeglądać", + "description": "Przesłany zip zostanie przetworzony i będziesz mógł wybrać co chcesz zaimportować" }, "fileInfo": { "action": { - "change": "" + "change": "Zmień plik" } }, "importSettings": { - "title": "", - "description": "" + "title": "Importuj ustawienia", + "description": "Skonfiguruj zachowanie importu" }, "boardSelection": { - "title": "", - "description": "", + "title": "Znaleziono {count} tablic", + "description": "Wybierz wszystkie działy o rozmiarze do zaimportowania", "action": { - "selectAll": "", - "unselectAll": "" + "selectAll": "Zaznacz wszystkie", + "unselectAll": "Odznacz wszystkie" } }, "summary": { - "title": "", - "description": "", + "title": "Podsumowanie importu", + "description": "W poniższym podsumowaniu możesz zobaczyć, co zostanie zaimportowane", "action": { - "import": "" + "import": "Potwierdź import i kontynuuj" }, "entities": { "apps": "Aplikacje", "boards": "Tablice", - "integrations": "", - "credentialUsers": "" + "integrations": "Integracje", + "credentialUsers": "Dane użytkowników" } }, "tokenModal": { - "title": "", + "title": "Wpisz token importu", "field": { "token": { - "label": "", - "description": "" + "label": "Token", + "description": "Wprowadź token importu z poprzedniej instancji hommara" } }, "notification": { "error": { - "title": "", - "message": "" + "title": "Nieprawidłowy token", + "message": "Wprowadzony token jest nieprawidłowy" } } } }, "user": { - "title": "", - "subtitle": "", + "title": "Administrator", + "subtitle": "Określ dane uwierzytelniające dla administratora", "notification": { "success": { - "title": "", - "message": "" + "title": "Użytkownik został utworzony", + "message": "Użytkownik został pomyślnie utworzony" }, "error": { - "title": "" + "title": "Błąd podczas tworzenia użytkownika" } } }, "group": { - "title": "", - "subtitle": "", + "title": "Zewnętrzna grupa", + "subtitle": "Określ grupę, która powinna być używana przez użytkowników zewnętrznych.", "form": { "name": { - "label": "", - "description": "" + "label": "Nazwa grupy", + "description": "Nazwa musi być zgodna z grupą administratora zewnętrznego dostawcy" } } }, "settings": { "title": "Ustawienia", - "subtitle": "" + "subtitle": "Konfiguruj ustawienia serwera" }, "finish": { - "title": "", - "subtitle": "", - "description": "", + "title": "Zakończ konfigurację", + "subtitle": "Gotowe!", + "description": "Pomyślnie zakończyłeś proces konfiguracji. Teraz możesz zacząć używać Homarr. Wybierz następną akcję:", "action": { - "goToBoard": "", - "createBoard": "", - "inviteUser": "", - "docs": "" + "goToBoard": "Idź do tablicy {name}", + "createBoard": "Stwórz swoją pierwszą tablicę", + "inviteUser": "Zaproś innych użytkowników", + "docs": "Przeczytaj dokumentację!" } } }, - "backToStart": "" + "backToStart": "Powrót do początku" }, "user": { "title": "Użytkownicy", "name": "Użytkownik", "page": { "login": { - "title": "", - "subtitle": "" + "title": "Zaloguj się do swojego konta", + "subtitle": "Witamy ponownie! Wprowadź swoje dane logowania" }, "invite": { - "title": "", - "subtitle": "", - "description": "" + "title": "Dołącz do Homarr", + "subtitle": "Witamy w Homarr! Utwórz swoje konto", + "description": "Zostałeś(aś) zaproszony(a) przez {username}" }, "init": { - "title": "", - "subtitle": "" + "title": "Nowa instalacja Homarra", + "subtitle": "Proszę utworzyć użytkownika dla podstawowego administratora" } }, "field": { "email": { "label": "E-mail", - "verified": "" + "verified": "Zweryfikowany" }, "username": { "label": "Nazwa użytkownika" @@ -133,46 +133,46 @@ "password": { "label": "Hasło", "requirement": { - "length": "", + "length": "Zawiera co najmniej 8 znaków", "lowercase": "Zawiera małą literę", "uppercase": "Zawiera wielką literę", "number": "Zawiera cyfrę", - "special": "" + "special": "Zawiera specjalny symbol" } }, "passwordConfirm": { "label": "Potwierdź hasło" }, "previousPassword": { - "label": "" + "label": "Stare hasło:" }, "homeBoard": { - "label": "" + "label": "Tablica główna" }, "pingIconsEnabled": { - "label": "" + "label": "Użyj ikon dla pingów" } }, "error": { - "usernameTaken": "" + "usernameTaken": "Nazwa użytkownika jest już zajęta" }, "action": { "login": { "label": "Zaloguj się", - "labelWith": "", + "labelWith": "Zaloguj się przez {provider}", "notification": { "success": { - "title": "", - "message": "" + "title": "Logowanie zakończone pomyślnie", + "message": "Jesteś teraz zalogowany!" }, "error": { - "title": "", - "message": "" + "title": "Logowanie nieudane", + "message": "Twoje logowanie nie powiodło się" } }, "forgotPassword": { - "label": "", - "description": "" + "label": "Zapomniałeś(aś) hasła?", + "description": "Administrator może użyć następującej komendy do zresetowania hasła:" } }, "register": { @@ -180,81 +180,81 @@ "notification": { "success": { "title": "Utworzono konto", - "message": "" + "message": "Zaloguj się, aby kontynuować" }, "error": { - "title": "", - "message": "" + "title": "Tworzenie konta nie powiodło się", + "message": "Twoje konto nie może zostać utworzone" } } }, "create": "Dodaj użytkownika", "changePassword": { - "label": "", + "label": "Zmień hasło", "notification": { "success": { - "message": "" + "message": "Hasło zostało pomyślnie zmienione" }, "error": { - "message": "" + "message": "Problem ze zmianą hasła" } } }, "changeHomeBoard": { "notification": { "success": { - "message": "" + "message": "Tablica główna zmieniona pomyślnie" }, "error": { - "message": "" + "message": "Nie można zmienić tablicy głównej" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "Pierwszy dzień tygodnia został pomyślnie zmieniony" }, "error": { - "message": "" + "message": "Nie można zmienić pierwszego dnia tygodnia" } } }, "changePingIconsEnabled": { "notification": { "success": { - "message": "" + "message": "Włączono ping na ikonach" }, "error": { - "message": "" + "message": "Nie można włączyć pingowania ikon" } } }, "manageAvatar": { "changeImage": { - "label": "", + "label": "Zmień obraz", "notification": { "success": { - "message": "" + "message": "Obraz zmieniony pomyślnie" }, "error": { - "message": "" + "message": "Nie można zmienić obrazu" }, "toLarge": { - "title": "", - "message": "" + "title": "Obraz jest zbyt duży", + "message": "Maksymalny rozmiar obrazu to {size}" } } }, "removeImage": { - "label": "", - "confirm": "", + "label": "Usuń obraz", + "confirm": "Czy na pewno chcesz usunąć ten obraz?", "notification": { "success": { - "message": "" + "message": "Obraz został pomyślnie usunięty." }, "error": { - "message": "" + "message": "Nie można usunąć obrazu" } } } @@ -262,42 +262,42 @@ "editProfile": { "notification": { "success": { - "message": "" + "message": "Pomyślnie zaktualizowano profil" }, "error": { - "message": "" + "message": "Problem z aktualizacją profilu" } } }, "delete": { - "label": "", - "description": "", - "confirm": "" + "label": "Usuń trwale użytkownika", + "description": "Usuwa tego użytkownika, w tym jego preferencje. To nie usunie żadnych tablic. Użytkownik nie będzie powiadamiany.", + "confirm": "Czy na pewno chcesz usunąć użytkownika {username} z jego preferencjami?" }, "select": { - "label": "", - "notFound": "" + "label": "Wybierz użytkownika", + "notFound": "Nie znaleziono użytkownika" }, "transfer": { - "label": "" + "label": "Wybierz nowego właściciela" } } }, "group": { - "title": "", - "name": "", - "search": "", + "title": "Grupy", + "name": "Grupa", + "search": "Znajdź grupę", "field": { "name": "Nazwa", - "members": "" + "members": "Członkowie" }, "permission": { "admin": { - "title": "", + "title": "Admin", "item": { "admin": { - "label": "", - "description": "" + "label": "Administrator", + "description": "Członkowie z tym uprawnieniem mają pełny dostęp do wszystkich funkcji i ustawień" } } }, @@ -305,20 +305,20 @@ "title": "Aplikacje", "item": { "create": { - "label": "", - "description": "" + "label": "Utwórz aplikacje", + "description": "Zezwól użytkownikom na tworzenie aplikacji" }, "use-all": { - "label": "", - "description": "" + "label": "Używaj wszystkich aplikacji", + "description": "Zezwalaj użytkownikom na dodawanie aplikacji do ich tablic" }, "modify-all": { - "label": "", - "description": "" + "label": "Modyfikuj wszystkie aplikacje", + "description": "Zezwalaj użytkownikom na modyfikowanie wszystkich aplikacji" }, "full-all": { - "label": "", - "description": "" + "label": "Pełny dostęp do aplikacji", + "description": "Zezwalaj użytkownikom na zarządzanie, używanie i usuwanie dowolnej aplikacji" } } }, @@ -326,165 +326,165 @@ "title": "Tablice", "item": { "create": { - "label": "", - "description": "" + "label": "Utwórz tablice", + "description": "Zezwalaj użytkownikom na tworzenie tablic" }, "view-all": { - "label": "", - "description": "" + "label": "Wyświetl wszystkie tablice", + "description": "Zezwalaj użytkownikom na wyświetlanie wszystkich tablic" }, "modify-all": { - "label": "", - "description": "" + "label": "Modyfikuj wszystkie tablice", + "description": "Zezwalaj użytkownikom na modyfikowanie wszystkich tablic (nie uwzględnia kontroli dostępu i strefy niebezpiecznej)" }, "full-all": { - "label": "", - "description": "" + "label": "Pełny dostęp do tablicy", + "description": "Zezwalaj użytkownikom na przeglądanie, modyfikowanie i usuwanie wszystkich tablic (w tym kontroli dostępu i strefy niebezpiecznej)" } } }, "integration": { - "title": "", + "title": "Integracje", "item": { "create": { - "label": "", - "description": "" + "label": "Utwórz integracje", + "description": "Zezwalaj użytkownikom na tworzenie integracji" }, "use-all": { - "label": "", - "description": "" + "label": "Używaj wszystkich integracji", + "description": "Pozwala członkom na dodawanie integracji do ich tablic" }, "interact-all": { - "label": "", - "description": "" + "label": "Interakcja z dowolną integracją", + "description": "Zezwalaj użytkownikom na interakcję z dowolną integracją" }, "full-all": { - "label": "", - "description": "" + "label": "Pełny dostęp do integracji", + "description": "Zezwalaj użytkownikom na zarządzanie, używanie i interakcję z dowolną integracją" } } }, "media": { - "title": "", + "title": "Media", "item": { "upload": { - "label": "", - "description": "" + "label": "Prześlij media", + "description": "Zezwalaj użytkownikom na przesyłanie mediów" }, "view-all": { - "label": "", - "description": "" + "label": "Wyświetl wszystkie media", + "description": "Zezwalaj użytkownikom na wyświetlanie wszystkich mediów" }, "full-all": { - "label": "", - "description": "" + "label": "Pełny dostęp do mediów", + "description": "Zezwalaj użytkownikom na zarządzanie i usuwanie wszelkich mediów" } } }, "other": { - "title": "", + "title": "Inne", "item": { "view-logs": { - "label": "", - "description": "" + "label": "Wyświetl logi", + "description": "Zezwalaj użytkownikom na przeglądanie logów" } } }, "search-engine": { - "title": "", + "title": "Wyszukiwarki", "item": { "create": { - "label": "", - "description": "" + "label": "Utwórz wyszukiwarki", + "description": "Zezwalaj użytkownikom na tworzenie wyszukiwarek" }, "modify-all": { - "label": "", - "description": "" + "label": "Modyfikuj wszystkie wyszukiwarki", + "description": "Zezwalaj użytkownikom na modyfikację wszystkich wyszukiwarek" }, "full-all": { - "label": "", - "description": "" + "label": "Pełny dostęp do wyszukiwarki", + "description": "Zezwól użytkownikom na zarządzanie i usuwanie dowolnej wyszukiwarki" } } } }, "memberNotice": { - "mixed": "", - "external": "" + "mixed": "Niektórzy członkowie pochodzą od zewnętrznych dostawców i nie mogą być tutaj zarządzani", + "external": "Wszyscy członkowie pochodzą od zewnętrznych dostawców i nie mogą być tutaj zarządzani" }, "reservedNotice": { - "message": "" + "message": "Ta grupa jest zarezerwowana dla użycia systemowego i ogranicza niektóre działania. " }, "action": { "create": { - "label": "", + "label": "Nowa grupa", "notification": { "success": { - "message": "" + "message": "Grupa została pomyślnie utworzona" }, "error": { - "message": "" + "message": "Nie udało się utworzyć grupy" } } }, "transfer": { - "label": "", - "description": "", - "confirm": "", + "label": "Przenieś własność", + "description": "Przenieś właściciela tej grupy na innego użytkownika.", + "confirm": "Czy na pewno chcesz przenieść właściciela grupy {name} na {username}?", "notification": { "success": { - "message": "" + "message": "Przeniesiono pomyślnie właściciela grupy {group} do {user} " }, "error": { - "message": "" + "message": "Nie można przenieść właściciela" } } }, "addMember": { - "label": "" + "label": "Dodaj członka" }, "removeMember": { - "label": "", - "confirm": "" + "label": "Usuń użytkownika", + "confirm": "Czy na pewno chcesz usunąć {user} z tej grupy?" }, "delete": { - "label": "", - "description": "", - "confirm": "", + "label": "Usuń grupę", + "description": "Kiedy usuniesz grupę, nie da się jej przywrócić. Proszę się upewnić czy na pewno chcesz to zrobić.", + "confirm": "Czy na pewno chcesz usunąć grupę {name}?", "notification": { "success": { - "message": "" + "message": "Usunięto grupę {name}" }, "error": { - "message": "" + "message": "Nie udało się usunąć grupy {name}" } } }, "changePermissions": { "notification": { "success": { - "title": "", - "message": "" + "title": "Uprawnienia zostały zapisane", + "message": "Uprawnienia zostały pomyślnie zapisane" }, "error": { - "title": "", - "message": "" + "title": "Nie zapisano uprawnień", + "message": "Uprawnienia nie zostały zapisane" } } }, "update": { "notification": { "success": { - "message": "" + "message": "Grupa {name} została pomyślnie zapisana" }, "error": { - "message": "" + "message": "Nie udało się zapisać grupy {name}" } } }, "select": { - "label": "", - "notFound": "" + "label": "Wybierz grupę", + "notFound": "Nie znaleziono grupy" } } }, @@ -493,47 +493,47 @@ "list": { "title": "Aplikacje", "noResults": { - "title": "", - "action": "" + "title": "Nie ma jeszcze żadnych aplikacji", + "action": "Utwórz swoją pierwszą aplikację" } }, "create": { - "title": "", + "title": "Nowa aplikacja", "notification": { "success": { - "title": "", - "message": "" + "title": "Pomyślnie utworzono", + "message": "Aplikacja została pomyślnie utworzona" }, "error": { - "title": "", - "message": "" + "title": "Tworzenie nieudane", + "message": "Aplikacja nie mogła zostać utworzona" } } }, "edit": { - "title": "", + "title": "Edytuj aplikację", "notification": { "success": { - "title": "", - "message": "" + "title": "Zmiany zostały pomyślnie zastosowane", + "message": "Aplikacja została pomyślnie zapisana" }, "error": { - "title": "", - "message": "" + "title": "Nie można wprowadzić zmian", + "message": "Nie można zapisać aplikacji" } } }, "delete": { - "title": "", - "message": "", + "title": "Usuń aplikację", + "message": "Czy na pewno chcesz usunąć aplikację {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Usunięto pomyślnie", + "message": "Aplikacja została pomyślnie usunięta" }, "error": { - "title": "", - "message": "" + "title": "Nie udało się usunąć", + "message": "Nie można usunąć aplikacji" } } } @@ -543,65 +543,65 @@ "label": "Nazwa" }, "description": { - "label": "" + "label": "Opis" }, "url": { - "label": "" + "label": "Adres URL" } }, "action": { "select": { - "label": "", - "notFound": "" + "label": "Wybierz aplikację", + "notFound": "Nie znaleziono aplikacji" } } }, "integration": { "page": { "list": { - "title": "", - "search": "", + "title": "Integracje", + "search": "Wyszukaj integrację", "noResults": { - "title": "" + "title": "Nie ma jeszcze integracji" } }, "create": { - "title": "", + "title": "Nowa integracja {name}", "notification": { "success": { - "title": "", - "message": "" + "title": "Utworzenie udało się", + "message": "Integracja została pomyślnie utworzona" }, "error": { - "title": "", - "message": "" + "title": "Nie udało się utworzyć", + "message": "Integracja nie może zostać utworzona" } } }, "edit": { - "title": "", + "title": "Edytuj integrację z {name}", "notification": { "success": { - "title": "", - "message": "" + "title": "Zmiany zostały pomyślnie zastosowane", + "message": "Integracja została pomyślnie zapisana" }, "error": { - "title": "", - "message": "" + "title": "Nie można wprowadzić zmian", + "message": "Integracja nie mogła zostać zapisana" } } }, "delete": { - "title": "", - "message": "", + "title": "Usuń integrację", + "message": "Czy na pewno chcesz usunąć integrację z {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Usunięto pomyślnie", + "message": "Integracja została pomyślnie usunięta" }, "error": { - "title": "", - "message": "" + "title": "Nie udało się usunąć", + "message": "Nie udało się usunąć integracji" } } } @@ -611,113 +611,113 @@ "label": "Nazwa" }, "url": { - "label": "" + "label": "Adres URL" }, "attemptSearchEngineCreation": { - "label": "", - "description": "" + "label": "Utwórz wyszukiwarkę", + "description": "Integracja \"{kind}\" może być używana z wyszukiwarkami. Zaznacz to, aby automatycznie skonfigurować wyszukiwarkę." } }, "action": { - "create": "" + "create": "Nowa integracja" }, "testConnection": { "action": { - "create": "", - "edit": "" + "create": "Sprawdź połączenie i utwórz", + "edit": "Sprawdź połączenie i zapisz" }, - "alertNotice": "", + "alertNotice": "Przycisk Zapisz jest włączony po nawiązaniu pomyślnego połączenia", "notification": { "success": { - "title": "", - "message": "" + "title": "Połączenie przebiegło pomyślnie", + "message": "Połączenie zostało pomyślnie nawiązane" }, "invalidUrl": { "title": "Nieprawidłowy URL", - "message": "" + "message": "Adres URL jest nieprawidłowy" }, "secretNotDefined": { - "title": "", - "message": "" + "title": "Brakujące poświadczenia", + "message": "Nie podano wszystkich poświadczeń" }, "invalidCredentials": { - "title": "", - "message": "" + "title": "Nieprawidłowe poświadczenia", + "message": "Poświadczenia są nieprawidłowe" }, "commonError": { - "title": "", - "message": "" + "title": "Nie udało się połączyć", + "message": "Nie udało się nawiązać połączenia" }, "badRequest": { - "title": "", - "message": "" + "title": "Błędne zapytanie", + "message": "Zapytanie zostało uszkodzone" }, "unauthorized": { - "title": "", - "message": "" + "title": "Błąd uwierzytelnienia", + "message": "Prawdopodobnie nieprawidłowe poświadczenia" }, "forbidden": { - "title": "", - "message": "" + "title": "Odmowa dostępu", + "message": "Prawdopodobnie brakuje uprawnień" }, "notFound": { - "title": "", - "message": "" + "title": "Nie znaleziono", + "message": "Prawdopodobnie błędny adres URL lub ścieżka" }, "internalServerError": { - "title": "", - "message": "" + "title": "Wewnętrzny błąd serwera", + "message": "Wystąpił błąd serwera" }, "serviceUnavailable": { - "title": "", - "message": "" + "title": "Usługa niedostępna", + "message": "Serwer jest obecnie niedostępny" }, "connectionAborted": { - "title": "", - "message": "" + "title": "Połączenie przerwano", + "message": "Połączenie zostało przerwane" }, "domainNotFound": { - "title": "", - "message": "" + "title": "Domena nie została znaleziona", + "message": "Nie można odnaleźć domeny" }, "connectionRefused": { - "title": "", - "message": "" + "title": "Połączenie odrzucone", + "message": "Połączenie zostało odrzucone" }, "invalidJson": { - "title": "", - "message": "" + "title": "Nieprawidłowy JSON", + "message": "Odpowiedź nie była prawidłowym JSON'em" }, "wrongPath": { - "title": "", - "message": "" + "title": "Błędna ścieżka", + "message": "Ścieżka jest prawdopodobnie niepoprawna" } } }, "secrets": { - "title": "", - "lastUpdated": "", + "title": "Sekrety", + "lastUpdated": "Data ostatniej aktualizacji: {date}", "notSet": { "label": "", - "tooltip": "" + "tooltip": "Ten wymagany sekret nie został jeszcze ustawiony" }, - "secureNotice": "", + "secureNotice": "Ten sekret nie może zostać pobrany po utworzeniu", "reset": { - "title": "", - "message": "" + "title": "Resetuj sekret", + "message": "Czy na pewno chcesz zresetować ten sekret?" }, "noSecretsRequired": { - "segmentTitle": "", - "text": "" + "segmentTitle": "Brak sekretów", + "text": "Dla tej integracji nie są wymagane żadne sekrety" }, "kind": { "username": { "label": "Nazwa użytkownika", - "newLabel": "" + "newLabel": "Nowa nazwa użytkownika" }, "apiKey": { - "label": "", - "newLabel": "" + "label": "Klucz API", + "newLabel": "Nowy klucz API" }, "password": { "label": "Hasło", @@ -726,14 +726,14 @@ } }, "permission": { - "use": "", - "interact": "", - "full": "" + "use": "Wybierz integrację w elementach", + "interact": "Interakcja z integracjami", + "full": "Pełny dostęp do integracji" } }, "media": { - "plural": "", - "search": "", + "plural": "Medias", + "search": "Znajdź media", "field": { "name": "Nazwa", "size": "Rozmiar", @@ -741,127 +741,127 @@ }, "action": { "upload": { - "label": "", - "file": "", + "label": "Prześlij media", + "file": "Wybierz plik", "notification": { "success": { - "message": "" + "message": "Plik multimedialny został przesłany pomyślnie" }, "error": { - "message": "" + "message": "Nie można przesłać multimediów" } } }, "delete": { - "label": "", - "description": "", + "label": "Usuń media", + "description": "Czy na pewno chcesz usunąć media ?", "notification": { "success": { - "message": "" + "message": "Plik został usunięty pomyślnie" }, "error": { - "message": "" + "message": "Nie udało się usunąć mediów" } } }, "copy": { - "label": "" + "label": "Kopiuj adres URL" } } }, "common": { - "beta": "", + "beta": "Wersja beta", "error": "Błąd", "action": { "add": "Dodaj", "apply": "Zastosuj", - "backToOverview": "", + "backToOverview": "Powrót do widoku ogólnego", "create": "Utwórz", "edit": "Edytuj", - "import": "", + "import": "Importuj", "insert": "Wstaw", "remove": "Usuń", "save": "Zapisz", "saveChanges": "Zapisz zmiany", "cancel": "Anuluj", "delete": "Usuń", - "discard": "", + "discard": "Odrzuć", "confirm": "Potwierdź", - "continue": "", + "continue": "Kontynuuj", "previous": "Poprzedni", "next": "Dalej", - "checkoutDocs": "", - "checkLogs": "", + "checkoutDocs": "Sprawdź dokumentację", + "checkLogs": "Sprawdź logi, aby uzyskać więcej informacji.", "tryAgain": "Spróbuj ponownie", - "loading": "" + "loading": "Ładowanie" }, - "here": "", + "here": "tutaj", "iconPicker": { - "label": "", - "header": "" + "label": "adres URL ikony", + "header": "Wpisz nazwę lub obiekty do filtrowania ikon... Homarr przeszuka dla Ciebie ikony {countIcons}." }, "colorScheme": { "options": { - "light": "", - "dark": "" + "light": "Jasny", + "dark": "Ciemny" } }, "information": { - "min": "", - "max": "", - "days": "", - "hours": "", - "minutes": "" + "min": "Min", + "max": "Max.", + "days": "Dni", + "hours": "Godziny", + "minutes": "Minuty" }, "notification": { "create": { - "success": "", - "error": "" + "success": "Utworzenie udało się", + "error": "Tworzenie nie powiodło się" }, "delete": { - "success": "", - "error": "" + "success": "Usunięto pomyślnie", + "error": "Nie udało się usunąć" }, "update": { - "success": "", - "error": "" + "success": "Zmiany zostały pomyślnie zastosowane", + "error": "Nie można wprowadzić zmian" }, "transfer": { - "success": "", - "error": "" + "success": "Pomyślnie przesłano", + "error": "Przesłanie się nie powiodło" } }, "multiSelect": { - "placeholder": "" + "placeholder": "Wybierz jedną lub więcej wartości" }, "multiText": { "placeholder": "", - "addLabel": "" + "addLabel": "Dodaj {value}" }, "select": { - "placeholder": "", + "placeholder": "Wybierz wartość", "badge": { - "recommended": "" + "recommended": "Rekomendowane" } }, "userAvatar": { "menu": { - "switchToDarkMode": "", - "switchToLightMode": "", - "management": "", + "switchToDarkMode": "Przełącz na tryb nocny", + "switchToLightMode": "Przełącz na tryb jasny", + "management": "Zarządzanie", "preferences": "Twoje preferencje", - "logout": "", + "logout": "Wyloguj się", "login": "Zaloguj się", - "homeBoard": "", - "loggedOut": "", - "updateAvailable": "" + "homeBoard": "Twoja tablica główna", + "loggedOut": "Wylogowano", + "updateAvailable": "Dostępne aktualizacje {countUpdates} : {tag}" } }, "dangerZone": "Strefa zagrożenia", "noResults": "Nie znaleziono żadnych wyników", "preview": { - "show": "", - "hide": "" + "show": "Pokaż podgląd", + "hide": "Ukryj podgląd" }, "zod": { "errors": { @@ -871,7 +871,7 @@ "startsWith": "To pole musi zaczynać się od {startsWith}", "endsWith": "To pole musi kończyć się na {endsWith}", "includes": "Pole to musi zawierać {includes}", - "invalidEmail": "" + "invalidEmail": "W tym polu musi znajdować się prawidłowy adres e-mail" }, "tooSmall": { "string": "To pole musi mieć co najmniej {minimum} znaków", @@ -882,13 +882,13 @@ "number": "Wartość tego pola musi być mniejsza lub równa {maximum}" }, "custom": { - "passwordsDoNotMatch": "", - "passwordRequirements": "", - "boardAlreadyExists": "", - "invalidFileType": "", - "fileTooLarge": "", - "invalidConfiguration": "", - "groupNameTaken": "" + "passwordsDoNotMatch": "Wprowadzone hasła nie zgadzają się", + "passwordRequirements": "Twoje hasło nie spełnia wymagań.", + "boardAlreadyExists": "Tablica o tej nazwie już istnieje", + "invalidFileType": "Nieprawidłowy typ pliku, oczekiwany {expected}", + "fileTooLarge": "Plik jest zbyt duży, maksymalny rozmiar to {maxSize}", + "invalidConfiguration": "Nieprawidłowa konfiguracja", + "groupNameTaken": "Nazwa użytkownika jest już zajęta" } } } @@ -896,12 +896,12 @@ "section": { "dynamic": { "action": { - "create": "", - "remove": "" + "create": "Nowa sekcja dynamiczna", + "remove": "Usuń sekcję dynamiczną" }, "remove": { - "title": "", - "message": "" + "title": "Usuń sekcję dynamiczną", + "message": "Czy na pewno chcesz usunąć tę sekcję dynamiczną? Elementy zostaną przeniesione w tej samej lokalizacji w sekcji nadrzędnej." } }, "category": { @@ -911,29 +911,29 @@ } }, "action": { - "create": "", - "edit": "", - "remove": "", + "create": "Nowa kategoria", + "edit": "Zmień nazwę kategorii", + "remove": "Usuń kategorię", "moveUp": "Przenieś w górę", "moveDown": "Przenieś w dół", - "createAbove": "", - "createBelow": "" + "createAbove": "Nowa kategoria powyżej", + "createBelow": "Nowa kategoria poniżej" }, "create": { - "title": "", - "submit": "" + "title": "Nowa kategoria", + "submit": "Dodaj kategorię" }, "remove": { - "title": "", - "message": "" + "title": "Usuń kategorię", + "message": "Czy na pewno chcesz usunąć kategorię {name}?" }, "edit": { - "title": "", - "submit": "" + "title": "Zmień nazwę kategorii", + "submit": "Zmień nazwę kategorii" }, "menu": { "label": { - "create": "", + "create": "Nowa kategoria", "changePosition": "Zmiana pozycji" } } @@ -941,12 +941,12 @@ }, "item": { "action": { - "create": "", - "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "create": "Nowa pozycja", + "import": "Importuj pozycję", + "edit": "Edytuj pozycję", + "moveResize": "Przenieś / zmień rozmiar pozycji", + "duplicate": "Duplikuj pozycję", + "remove": "Usuń pozycję" }, "menu": { "label": { @@ -954,11 +954,11 @@ } }, "create": { - "title": "", - "addToBoard": "" + "title": "Wybierz element do dodania", + "addToBoard": "Dodaj do tablicy" }, "moveResize": { - "title": "", + "title": "Przenieś / zmień rozmiar pozycji", "field": { "width": { "label": "Szerokość" @@ -967,67 +967,67 @@ "label": "Wysokość" }, "xOffset": { - "label": "" + "label": "Przesunięcie X" }, "yOffset": { - "label": "" + "label": "Przesunięcie Y" } } }, "edit": { - "title": "", + "title": "Edytuj pozycje", "advancedOptions": { - "label": "", - "title": "" + "label": "Ustawienia zaawansowane", + "title": "Zaawansowane opcje pozycji" }, "field": { "integrations": { "label": "" }, "customCssClasses": { - "label": "" + "label": "Niestandardowe klasy CSS" } } }, "remove": { - "title": "", - "message": "" + "title": "Usuń pozycję", + "message": "Jesteś pewien, że chcesz usunąć ten element?" } }, "widget": { "app": { - "name": "", - "description": "", + "name": "Aplikacja", + "description": "Osadza aplikację w płytce.", "option": { "appId": { - "label": "" + "label": "Wybierz aplikację" }, "openInNewTab": { "label": "Otwórz w nowej karcie" }, "showTitle": { - "label": "" + "label": "Pokaż nazwę aplikacji" }, "showDescriptionTooltip": { - "label": "" + "label": "Pokaż opis podpowiedzi" }, "pingEnabled": { - "label": "" + "label": "Włącz prosty ping" } }, "error": { "notFound": { - "label": "", - "tooltip": "" + "label": "Brak aplikacji", + "tooltip": "Nie wybrano prawidłowej aplikacji" } } }, "bookmarks": { - "name": "", - "description": "", + "name": "Zakładki", + "description": "Wyświetla wiele linków do aplikacji", "option": { "title": { - "label": "" + "label": "Tytuł" }, "layout": { "label": "Układ", @@ -1039,19 +1039,19 @@ "label": "Pionowy" }, "grid": { - "label": "" + "label": "Siatka" } } }, "items": { - "label": "", - "add": "" + "label": "Zakładki", + "add": "Dodaj zakładkę" } } }, "dnsHoleSummary": { - "name": "", - "description": "", + "name": "Podsumowanie Hole DNS", + "description": "Wyświetla podsumowanie Twojego hosta DNS", "option": { "layout": { "label": "Układ", @@ -1063,27 +1063,27 @@ "label": "Pionowy" }, "grid": { - "label": "" + "label": "Siatka" } } }, "usePiHoleColors": { - "label": "" + "label": "Użyj kolorów Pi-Hole" } }, "error": { - "internalServerError": "", - "integrationsDisconnected": "" + "internalServerError": "Nie udało się pobrać podsumowanie Hole DNS", + "integrationsDisconnected": "Brak dostępnych danych, wszystkie integracje odłączone" }, "data": { "adsBlockedToday": "Zablokowane dzisiaj", "adsBlockedTodayPercentage": "Zablokowane dzisiaj", "dnsQueriesToday": "Zapytania dzisiaj", - "domainsBeingBlocked": "" + "domainsBeingBlocked": "Domeny na liście blokowanych" } }, "dnsHoleControls": { - "name": "", + "name": "Sterowanie dziurami DNS", "description": "Kontroluj PiHole lub AdGuard ze swojego pulpitu", "option": { "layout": { @@ -1096,67 +1096,67 @@ "label": "Pionowy" }, "grid": { - "label": "" + "label": "Siatka" } } }, "showToggleAllButtons": { - "label": "" + "label": "Pokaż \"pokaż wszystkie przyciski\" przycisk" } }, "error": { - "internalServerError": "" + "internalServerError": "Nie udało się kontrolować funkcji DNS Hole" }, "controls": { - "enableAll": "", - "disableAll": "", - "setTimer": "", - "set": "", + "enableAll": "Włącz wszystkie", + "disableAll": "Wyłącz wszystkie", + "setTimer": "Ustaw wyłącznik czasowy", + "set": "Ustaw", "enabled": "Włączony", "disabled": "Wyłączony", - "processing": "", - "disconnected": "", - "hours": "", - "minutes": "", - "unlimited": "" + "processing": "Przetwarzanie", + "disconnected": "Rozłączono", + "hours": "Godziny", + "minutes": "Minuty", + "unlimited": "Pozostaw puste do nieograniczonej" } }, "clock": { - "name": "", + "name": "Data i czas", "description": "Wyświetla bieżącą datę i godzinę.", "option": { "customTitleToggle": { - "label": "", - "description": "" + "label": "Niestandardowe wyświetlanie tytułu/miasta", + "description": "Pokaż własny tytuł lub nazwę miasta/kraju na górze zegara." }, "customTitle": { - "label": "" + "label": "Tytuł" }, "is24HourFormat": { - "label": "", - "description": "" + "label": "Format 24-godzinny", + "description": "Użyj 24-godzinnego formatu zamiast 12-godzinnego" }, "showSeconds": { - "label": "" + "label": "Wyświetlaj sekundy" }, "useCustomTimezone": { - "label": "" + "label": "Użyj stałej strefy czasowej" }, "timezone": { "label": "Strefa czasowa", - "description": "" + "description": "Wybierz strefę czasową zgodnie ze standardem IANA" }, "showDate": { - "label": "" + "label": "Pokaż datę" }, "dateFormat": { - "label": "", - "description": "" + "label": "Format daty", + "description": "Jak powinna wyglądać data" } } }, "minecraftServerStatus": { - "name": "", + "name": "Status serwera Minecraft", "description": "", "option": { "title": { From 812469db827badee63c73a8c819922c24fdefd13 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 02:16:26 +0000 Subject: [PATCH 165/262] fix(deps): update dependency sass to ^1.83.1 (#1852) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 96 ++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index dc7c16f6b..e42221404 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -72,7 +72,7 @@ "react-dom": "^19.0.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.83.0", + "sass": "^1.83.1", "superjson": "2.2.2", "swagger-ui-react": "^5.18.2", "use-deep-compare-effect": "^1.8.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9bba34aea..be33d275c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: version: 2.3.3(@types/node@22.10.5)(typescript@5.7.2) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -72,10 +72,10 @@ importers: version: 5.7.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -183,13 +183,13 @@ importers: version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.62.14 - version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) @@ -231,7 +231,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -251,8 +251,8 @@ importers: specifier: ^0.14.1 version: 0.14.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) sass: - specifier: ^1.83.0 - version: 1.83.0 + specifier: ^1.83.1 + version: 1.83.1 superjson: specifier: 2.2.2 version: 2.2.2 @@ -556,7 +556,7 @@ importers: version: 4.5.0 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -626,10 +626,10 @@ importers: version: 7.3.0 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -706,7 +706,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -1195,7 +1195,7 @@ importers: version: 1.11.13 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -1290,7 +1290,7 @@ importers: version: 0.5.16 next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -1530,7 +1530,7 @@ importers: version: 2.11.0(@types/react@18.3.13)(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -1573,10 +1573,10 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-intl: specifier: 3.26.3 - version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0) + version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1631,7 +1631,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -1804,7 +1804,7 @@ importers: version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: ^19.0.0 version: 19.0.0 @@ -8191,8 +8191,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.83.0: - resolution: {integrity: sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==} + sass@1.83.1: + resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} engines: {node: '>=14.0.0'} hasBin: true @@ -11355,10 +11355,10 @@ snapshots: '@tanstack/react-query': 5.62.14(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.62.14(react@19.0.0) - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 '@tanstack/react-query@5.62.14(react@19.0.0)': @@ -11602,11 +11602,11 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 @@ -12004,14 +12004,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12029,7 +12029,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12040,13 +12040,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.8': dependencies: @@ -12076,7 +12076,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.8': dependencies: @@ -15239,21 +15239,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): + next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0))(react@19.0.0): + next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0) + next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.0): + next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): dependencies: '@next/env': 14.2.22 '@swc/helpers': 0.5.5 @@ -15275,7 +15275,7 @@ snapshots: '@next/swc-win32-ia32-msvc': 14.2.22 '@next/swc-win32-x64-msvc': 14.2.22 '@playwright/test': 1.49.1 - sass: 1.83.0 + sass: 1.83.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -16468,7 +16468,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.83.0: + sass@1.83.1: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -17694,13 +17694,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.8(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.8(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -17712,18 +17712,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.2) optionalDependencies: - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -17731,14 +17731,14 @@ snapshots: optionalDependencies: '@types/node': 22.10.5 fsevents: 2.3.3 - sass: 1.83.0 + sass: 1.83.1 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -17754,8 +17754,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.8(@types/node@22.10.5)(sass@1.83.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.8(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.5 From 53f07f87b8d600ce57fa94d2ffb4d6f0105102d0 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 11:39:29 +0000 Subject: [PATCH 166/262] fix(deps): update tanstack-query monorepo to ^5.62.15 (#1853) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index e42221404..1dbb4e343 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.26.0", - "@tanstack/react-query": "^5.62.14", - "@tanstack/react-query-devtools": "^5.62.14", - "@tanstack/react-query-next-experimental": "5.62.14", + "@tanstack/react-query": "^5.62.15", + "@tanstack/react-query-devtools": "^5.62.15", + "@tanstack/react-query-next-experimental": "5.62.15", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be33d275c..a8e3989aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.26.0 version: 3.26.0(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.14 - version: 5.62.14(react@19.0.0) + specifier: ^5.62.15 + version: 5.62.15(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.14 - version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(react@19.0.0) + specifier: ^5.62.15 + version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.14 - version: 5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + specifier: 5.62.15 + version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -3652,27 +3652,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.12': - resolution: {integrity: sha512-6igFeBgymHkCxVgaEk+yiLwkMf9haui/EQLmI3o9CatOyDThEoFKe8toLWvWliZC/Jf+h7NwHi/zjfyLArr1ow==} + '@tanstack/query-core@5.62.15': + resolution: {integrity: sha512-wT20X14CxcWY8YLJ/1pnsXn/y1Q2uRJZYWW93PWRtZt+3/JlGZyiyTcO4pGnqycnP7CokCROAyatsraosqZsDA==} '@tanstack/query-devtools@5.62.9': resolution: {integrity: sha512-b1NZzDLVf6laJsB1Cfm3ieuYzM+WqoO8qpm9v+3Etwd+Ph4zkhUMiT+wcWj5AhEPsXiRodKYiiW048VDNdBxNg==} - '@tanstack/react-query-devtools@5.62.14': - resolution: {integrity: sha512-5OEOWzO9gLovbKozIaSRHXXPd30dooa+MZTG0gfMMTKXhH5lct6SLozQ5ngRvzrbYpfL4c9i2+6bX8Hwu8sT0w==} + '@tanstack/react-query-devtools@5.62.15': + resolution: {integrity: sha512-8aE7uD45NHZgNtHMVQC7PvM9f72mKK4bqcpHr9La8TsTRX7x8dy2Kdu2ReFNLCrdlEWkxdP5843tc/lHg+Q/rg==} peerDependencies: - '@tanstack/react-query': ^5.62.14 + '@tanstack/react-query': ^5.62.15 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.14': - resolution: {integrity: sha512-akAkDDdYh1wy6sKLGSFItmhEBijZO+WkxChV1QCEPEfCynCynPsZ+fUr58l+XYJwWYihrVFuPlgM8Mlth+bvVQ==} + '@tanstack/react-query-next-experimental@5.62.15': + resolution: {integrity: sha512-HUUWfOIaW2YQIVU1G7tSM949yJJ8KIpUufiwztPOh6P0DOfma3lYq86GcxmX2HmbTMsPJkF032X0ugZIFkQ8mw==} peerDependencies: - '@tanstack/react-query': ^5.62.14 + '@tanstack/react-query': ^5.62.15 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.14': - resolution: {integrity: sha512-ev/6eVdJvX9vpomKmFuXsrQb6TwqqBn/7OeB0KZkHjEYk/Bo1XBMj8wRmobn8pqdU8lK271tUjt+0B0UQ9MZ6A==} + '@tanstack/react-query@5.62.15': + resolution: {integrity: sha512-Ny3xxsOWmEQCFyHiV3CF7t6+QAV+LpBEREiXyllKR4+tStyd8smOAa98ZHmEx0ZNy36M31K8enifB5wTSYAKJw==} peerDependencies: react: ^18 || ^19 @@ -11345,25 +11345,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.62.12': {} + '@tanstack/query-core@5.62.15': {} '@tanstack/query-devtools@5.62.9': {} - '@tanstack/react-query-devtools@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.62.9 - '@tanstack/react-query': 5.62.14(react@19.0.0) + '@tanstack/react-query': 5.62.15(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.14(@tanstack/react-query@5.62.14(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.14(react@19.0.0) + '@tanstack/react-query': 5.62.15(react@19.0.0) next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - '@tanstack/react-query@5.62.14(react@19.0.0)': + '@tanstack/react-query@5.62.15(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.62.12 + '@tanstack/query-core': 5.62.15 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -11602,7 +11602,7 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) @@ -11611,12 +11611,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.14(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.62.15(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.14(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.14(react@19.0.0) + '@tanstack/react-query': 5.62.15(react@19.0.0) '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) react: 19.0.0 From 92f4f9421e8f693e6546716f5f04922161e29cdc Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:59:23 +0000 Subject: [PATCH 167/262] fix(deps): update dependency dockerode to ^4.0.3 (#1854) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/api/package.json | 2 +- pnpm-lock.yaml | 133 +++++++++++++++++++++++++++++++++++--- 2 files changed, 124 insertions(+), 11 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index 7e7e4e959..f2b98554f 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -40,7 +40,7 @@ "@trpc/client": "next", "@trpc/react-query": "next", "@trpc/server": "next", - "dockerode": "^4.0.2", + "dockerode": "^4.0.3", "lodash.clonedeep": "^4.5.0", "next": "^14.2.22", "react": "^19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8e3989aa..6d93d3ee9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -549,8 +549,8 @@ importers: specifier: next version: 11.0.0-rc.682(typescript@5.7.2) dockerode: - specifier: ^4.0.2 - version: 4.0.2 + specifier: ^4.0.3 + version: 4.0.3 lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -2889,6 +2889,15 @@ packages: '@formatjs/intl-localematcher@0.5.5': resolution: {integrity: sha512-t5tOGMgZ/i5+ALl2/offNqAQq/lfUnKLEw0mXQI4N4bqpedhrSE+fyKLpwnd22sK0dif6AV+ufQcTsKShB9J1g==} + '@grpc/grpc-js@1.12.5': + resolution: {integrity: sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.13': + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} @@ -2970,6 +2979,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + '@libsql/client-wasm@0.14.0': resolution: {integrity: sha512-gB/jtz0xuwrqAHApBv9e9JSew2030Fhj2edyZ83InZ4yPj/Q2LTUlEhaspEYT0T0xsAGqPy38uGrmq/OGS+DdQ==} bundledDependencies: @@ -3364,6 +3376,36 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@remirror/core-constants@3.0.0': resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} @@ -5238,16 +5280,16 @@ packages: resolution: {integrity: sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==} engines: {node: '>= 8.0'} - docker-modem@5.0.3: - resolution: {integrity: sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==} + docker-modem@5.0.5: + resolution: {integrity: sha512-Cxw8uEcvNTRmsQuGqzzfiCnfGgf96tVJItLh8taOX0miTcIBALKH5TckCSuZbpbjP7uhAl81dOL9sxfa6HgCIg==} engines: {node: '>= 8.0'} dockerode@3.3.5: resolution: {integrity: sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==} engines: {node: '>= 8.0'} - dockerode@4.0.2: - resolution: {integrity: sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==} + dockerode@4.0.3: + resolution: {integrity: sha512-QSXJFcBQNaGZO6U3qWW4B7p8yRIJn/dWmvL2AQWfO/bjptBBO6QYdVkYSYFz9qoivP2jsOHZfmXMAfrK0BMKyg==} engines: {node: '>= 8.0'} doctrine@2.1.0: @@ -6746,6 +6788,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -7783,6 +7828,10 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} @@ -9168,6 +9217,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@10.0.0: + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + hasBin: true + uuid@11.0.3: resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} hasBin: true @@ -10266,6 +10319,18 @@ snapshots: dependencies: tslib: 2.7.0 + '@grpc/grpc-js@1.12.5': + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.13': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.4.0 + yargs: 17.7.2 + '@hapi/bourne@3.0.0': {} '@homarr/gridstack@1.11.2': {} @@ -10342,6 +10407,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@js-sdsl/ordered-map@4.4.2': {} + '@libsql/client-wasm@0.14.0': dependencies: '@libsql/core': 0.14.0 @@ -10808,6 +10875,29 @@ snapshots: '@popperjs/core@2.11.8': {} + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + '@remirror/core-constants@3.0.0': {} '@rollup/pluginutils@5.1.0(rollup@4.21.3)': @@ -13130,9 +13220,9 @@ snapshots: transitivePeerDependencies: - supports-color - docker-modem@5.0.3: + docker-modem@5.0.5: dependencies: - debug: 4.3.7 + debug: 4.4.0 readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.16.0 @@ -13147,11 +13237,15 @@ snapshots: transitivePeerDependencies: - supports-color - dockerode@4.0.2: + dockerode@4.0.3: dependencies: '@balena/dockerignore': 1.0.2 - docker-modem: 5.0.3 + '@grpc/grpc-js': 1.12.5 + '@grpc/proto-loader': 0.7.13 + docker-modem: 5.0.5 + protobufjs: 7.4.0 tar-fs: 2.0.1 + uuid: 10.0.0 transitivePeerDependencies: - supports-color @@ -14939,6 +15033,8 @@ snapshots: lodash-es@4.17.21: {} + lodash.camelcase@4.3.0: {} + lodash.capitalize@4.2.1: {} lodash.clonedeep@4.5.0: {} @@ -15957,6 +16053,21 @@ snapshots: proto-list@1.2.4: {} + protobufjs@7.4.0: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 22.10.5 + long: 5.2.3 + proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 @@ -17653,6 +17764,8 @@ snapshots: util-deprecate@1.0.2: {} + uuid@10.0.0: {} + uuid@11.0.3: {} uuid@8.3.2: {} From d98552540a9eb3c24ba92a490f921c2b1911b1f6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 19:47:23 +0100 Subject: [PATCH 168/262] fix(deps): update nextjs monorepo to v15 (major) (#1844) --- apps/nextjs/package.json | 14 +- .../app/[locale]/_client-providers/trpc.tsx | 3 +- .../app/[locale]/auth/invite/[id]/page.tsx | 12 +- .../src/app/[locale]/auth/login/page.tsx | 7 +- .../[locale]/boards/[name]/settings/page.tsx | 14 +- .../app/[locale]/boards/_layout-creator.tsx | 4 +- apps/nextjs/src/app/[locale]/layout.tsx | 12 +- .../src/app/[locale]/manage/about/page.tsx | 6 +- .../[locale]/manage/apps/edit/[id]/page.tsx | 5 +- .../manage/integrations/edit/[id]/page.tsx | 5 +- .../[locale]/manage/integrations/new/page.tsx | 11 +- .../app/[locale]/manage/integrations/page.tsx | 7 +- .../src/app/[locale]/manage/medias/page.tsx | 4 +- .../manage/search-engines/edit/[id]/page.tsx | 5 +- .../[locale]/manage/search-engines/page.tsx | 4 +- .../app/[locale]/manage/tools/api/page.tsx | 2 +- .../manage/users/[userId]/general/page.tsx | 10 +- .../[locale]/manage/users/[userId]/layout.tsx | 8 +- .../manage/users/[userId]/security/page.tsx | 7 +- .../manage/users/groups/[id]/layout.tsx | 8 +- .../manage/users/groups/[id]/members/page.tsx | 12 +- .../manage/users/groups/[id]/page.tsx | 7 +- .../users/groups/[id]/permissions/page.tsx | 7 +- .../app/[locale]/manage/users/groups/page.tsx | 4 +- .../src/app/[locale]/widgets/[kind]/page.tsx | 6 +- apps/nextjs/src/app/api/[...trpc]/route.ts | 11 +- .../src/app/api/auth/[...nextauth]/route.ts | 11 +- .../src/app/api/user-medias/[id]/route.ts | 3 +- .../src/components/user-avatar-menu.tsx | 4 +- apps/nextjs/src/middleware.ts | 2 +- apps/nextjs/src/theme/color-scheme.ts | 2 +- packages/api/package.json | 8 +- packages/api/src/client.ts | 42 +- packages/api/src/server.ts | 2 +- packages/api/src/shared.ts | 38 ++ packages/auth/configuration.ts | 7 +- packages/auth/events.ts | 2 +- packages/auth/index.ts | 4 +- packages/auth/package.json | 6 +- packages/auth/test/events.spec.ts | 4 +- packages/common/package.json | 5 +- packages/modals-collection/package.json | 5 +- packages/modals/package.json | 2 +- packages/old-import/package.json | 5 +- packages/spotlight/package.json | 5 +- packages/translation/package.json | 5 +- packages/ui/package.json | 5 +- packages/widgets/package.json | 5 +- packages/widgets/src/notebook/component.tsx | 2 + pnpm-lock.yaml | 544 +++++++++++++----- tooling/eslint/package.json | 2 +- 51 files changed, 601 insertions(+), 314 deletions(-) create mode 100644 packages/api/src/shared.ts diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 1dbb4e343..1cda72129 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "pnpm with-env next build", "clean": "git clean -xdf .next .turbo node_modules", - "dev": "pnpm with-env next dev", + "dev": "pnpm with-env next dev --turbopack", "format": "prettier --check . --ignore-path ../../.gitignore", "lint": "eslint", "start": "pnpm with-env next start", @@ -23,7 +23,7 @@ "@homarr/db": "workspace:^0.1.0", "@homarr/definitions": "workspace:^0.1.0", "@homarr/form": "workspace:^0.1.0", - "@homarr/gridstack": "^1.11.2", + "@homarr/gridstack": "^1.11.3", "@homarr/integrations": "workspace:^0.1.0", "@homarr/log": "workspace:^", "@homarr/modals": "workspace:^0.1.0", @@ -65,11 +65,11 @@ "glob": "^11.0.0", "jotai": "^2.11.0", "mantine-react-table": "2.0.0-beta.7", - "next": "^14.2.22", + "next": "15.1.3", "postcss-preset-mantine": "^1.17.0", "prismjs": "^1.29.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "react": "19.0.0", + "react-dom": "19.0.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", "sass": "^1.83.1", @@ -84,8 +84,8 @@ "@types/chroma-js": "2.4.5", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", - "@types/react": "^19.0.2", - "@types/react-dom": "^19.0.2", + "@types/react": "19.0.2", + "@types/react-dom": "19.0.2", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", "eslint": "^9.17.0", diff --git a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx index 45249c800..52d5c10b7 100644 --- a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx +++ b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx @@ -18,7 +18,8 @@ import superjson from "superjson"; import type { SuperJSONResult } from "superjson"; import type { AppRouter } from "@homarr/api"; -import { clientApi, createHeadersCallbackForSource, getTrpcUrl } from "@homarr/api/client"; +import { clientApi, getTrpcUrl } from "@homarr/api/client"; +import { createHeadersCallbackForSource } from "@homarr/api/shared"; import { env } from "~/env.mjs"; diff --git a/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx b/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx index 5edeabcd0..7de11ff0f 100644 --- a/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx @@ -11,15 +11,17 @@ import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo"; import { RegistrationForm } from "./_registration-form"; interface InviteUsagePageProps { - params: { + params: Promise<{ id: string; - }; - searchParams: { + }>; + searchParams: Promise<{ token: string; - }; + }>; } -export default async function InviteUsagePage({ params, searchParams }: InviteUsagePageProps) { +export default async function InviteUsagePage(props: InviteUsagePageProps) { + const searchParams = await props.searchParams; + const params = await props.params; if (!isProviderEnabled("credentials")) notFound(); const session = await auth(); diff --git a/apps/nextjs/src/app/[locale]/auth/login/page.tsx b/apps/nextjs/src/app/[locale]/auth/login/page.tsx index b20d3fce1..9b5dfbd83 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/page.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/page.tsx @@ -9,12 +9,13 @@ import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo"; import { LoginForm } from "./_login-form"; interface LoginProps { - searchParams: { + searchParams: Promise<{ callbackUrl?: string; - }; + }>; } -export default async function Login({ searchParams }: LoginProps) { +export default async function Login(props: LoginProps) { + const searchParams = await props.searchParams; const session = await auth(); if (session) { diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx index e5d634e33..36818573a 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx @@ -31,15 +31,15 @@ import { GeneralSettingsContent } from "./_general"; import { LayoutSettingsContent } from "./_layout"; interface Props { - params: { + params: Promise<{ name: string; - }; - searchParams: { + }>; + searchParams: Promise<{ tab?: keyof TranslationObject["board"]["setting"]["section"]; - }; + }>; } -const getBoardAndPermissionsAsync = async (params: Props["params"]) => { +const getBoardAndPermissionsAsync = async (params: Awaited) => { try { const board = await api.board.getBoardByName({ name: params.name }); const { hasFullAccess } = await getBoardPermissionsAsync(board); @@ -63,7 +63,9 @@ const getBoardAndPermissionsAsync = async (params: Props["params"]) => { } }; -export default async function BoardSettingsPage({ params, searchParams }: Props) { +export default async function BoardSettingsPage(props: Props) { + const searchParams = await props.searchParams; + const params = await props.params; const { board, permissions } = await getBoardAndPermissionsAsync(params); const boardSettings = await getServerSettingByKeyAsync(db, "board"); const { hasFullAccess, hasChangeAccess } = await getBoardPermissionsAsync(board); diff --git a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx index 9172515b9..22a4e53c0 100644 --- a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx +++ b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx @@ -28,9 +28,9 @@ export const createBoardLayout = ({ params, children, }: PropsWithChildren<{ - params: TParams; + params: Promise; }>) => { - const initialBoard = await getInitialBoard(params).catch((error) => { + const initialBoard = await getInitialBoard(await params).catch((error) => { if (error instanceof TRPCError && error.code === "NOT_FOUND") { logger.warn(error); notFound(); diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx index afa2e413e..6469ddd39 100644 --- a/apps/nextjs/src/app/[locale]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/layout.tsx @@ -14,6 +14,7 @@ import { auth } from "@homarr/auth/next"; import { ModalProvider } from "@homarr/modals"; import { Notifications } from "@homarr/notifications"; import { SpotlightProvider } from "@homarr/spotlight"; +import type { SupportedLanguage } from "@homarr/translation"; import { isLocaleRTL, isLocaleSupported } from "@homarr/translation"; import { getI18nMessages } from "@homarr/translation/server"; @@ -63,14 +64,17 @@ export const viewport: Viewport = { ], }; -export default async function Layout(props: { children: React.ReactNode; params: { locale: string } }) { - if (!isLocaleSupported(props.params.locale)) { +export default async function Layout(props: { + children: React.ReactNode; + params: Promise<{ locale: SupportedLanguage }>; +}) { + if (!isLocaleSupported((await props.params).locale)) { notFound(); } const session = await auth(); const colorScheme = await getCurrentColorSchemeAsync(); - const direction = isLocaleRTL(props.params.locale) ? "rtl" : "ltr"; + const direction = isLocaleRTL((await props.params).locale) ? "rtl" : "ltr"; const i18nMessages = await getI18nMessages(); const StackedProvider = composeWrappers([ @@ -89,7 +93,7 @@ export default async function Layout(props: { children: React.ReactNode; params: return ( // Instead of ColorSchemScript we use data-mantine-color-scheme to prevent flickering { +const getHostAsync = async () => { if (process.env.HOSTNAME) { return `${process.env.HOSTNAME}:3000`; } - return headers().get("host"); + return (await headers()).get("host"); }; export default async function AboutPage() { - const baseServerUrl = `http://${getHost()}`; + const baseServerUrl = `http://${await getHostAsync()}`; const t = await getScopedI18n("management.page.about"); const attributes = await getPackageAttributesAsync(); const githubContributors = (await fetch(`${baseServerUrl}/api/about/contributors/github`).then((res) => diff --git a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/page.tsx index f5fbc5d6f..a931b2ece 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/page.tsx @@ -9,10 +9,11 @@ import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { AppEditForm } from "./_app-edit-form"; interface AppEditPageProps { - params: { id: string }; + params: Promise<{ id: string }>; } -export default async function AppEditPage({ params }: AppEditPageProps) { +export default async function AppEditPage(props: AppEditPageProps) { + const params = await props.params; const session = await auth(); if (!session?.user.permissions.includes("app-modify-all")) { diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx index ede3d7a71..8cd8bf01b 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/page.tsx @@ -11,10 +11,11 @@ import { IntegrationAccessSettings } from "../../_components/integration-access- import { EditIntegrationForm } from "./_integration-edit-form"; interface EditIntegrationPageProps { - params: { id: string }; + params: Promise<{ id: string }>; } -export default async function EditIntegrationPage({ params }: EditIntegrationPageProps) { +export default async function EditIntegrationPage(props: EditIntegrationPageProps) { + const params = await props.params; const editT = await getScopedI18n("integration.page.edit"); const t = await getI18n(); const integration = await api.integration.byId({ id: params.id }).catch(catchTrpcNotFound); diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx index fc77ba479..4237c1422 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx @@ -13,12 +13,15 @@ import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NewIntegrationForm } from "./_integration-new-form"; interface NewIntegrationPageProps { - searchParams: Partial> & { - kind: IntegrationKind; - }; + searchParams: Promise< + Partial> & { + kind: IntegrationKind; + } + >; } -export default async function IntegrationsNewPage({ searchParams }: NewIntegrationPageProps) { +export default async function IntegrationsNewPage(props: NewIntegrationPageProps) { + const searchParams = await props.searchParams; const session = await auth(); if (!session?.user.permissions.includes("integration-create")) { notFound(); diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx index 853630698..38a0a2cdf 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/page.tsx @@ -46,12 +46,13 @@ import { DeleteIntegrationActionButton } from "./_integration-buttons"; import { IntegrationCreateDropdownContent } from "./new/_integration-new-dropdown"; interface IntegrationsPageProps { - searchParams: { + searchParams: Promise<{ tab?: IntegrationKind; - }; + }>; } -export default async function IntegrationsPage({ searchParams }: IntegrationsPageProps) { +export default async function IntegrationsPage(props: IntegrationsPageProps) { + const searchParams = await props.searchParams; const session = await auth(); if (!session) { diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index 5052194c9..17c01f519 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -34,7 +34,7 @@ type SearchParamsSchemaInputFromSchema> }>; interface MediaListPageProps { - searchParams: SearchParamsSchemaInputFromSchema>; + searchParams: Promise>>; } export default async function GroupsListPage(props: MediaListPageProps) { @@ -45,7 +45,7 @@ export default async function GroupsListPage(props: MediaListPageProps) { } const t = await getI18n(); - const searchParams = searchParamsSchema.parse(props.searchParams); + const searchParams = searchParamsSchema.parse(await props.searchParams); const { items: medias, totalCount } = await api.media.getPaginated(searchParams); return ( diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/page.tsx index 39dfd8f63..9d618ad82 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/page.tsx @@ -10,10 +10,11 @@ import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { SearchEngineEditForm } from "./_search-engine-edit-form"; interface SearchEngineEditPageProps { - params: { id: string }; + params: Promise<{ id: string }>; } -export default async function SearchEngineEditPage({ params }: SearchEngineEditPageProps) { +export default async function SearchEngineEditPage(props: SearchEngineEditPageProps) { + const params = await props.params; const session = await auth(); if (!session?.user.permissions.includes("search-engine-modify-all")) { diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index 8fe7254ec..e7af60531 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -27,7 +27,7 @@ type SearchParamsSchemaInputFromSchema> }>; interface SearchEnginesPageProps { - searchParams: SearchParamsSchemaInputFromSchema>; + searchParams: Promise>>; } export default async function SearchEnginesPage(props: SearchEnginesPageProps) { @@ -37,7 +37,7 @@ export default async function SearchEnginesPage(props: SearchEnginesPageProps) { redirect("/auth/login"); } - const searchParams = searchParamsSchema.parse(props.searchParams); + const searchParams = searchParamsSchema.parse(await props.searchParams); const { items: searchEngines, totalCount } = await api.searchEngine.getPaginated(searchParams); const tEngine = await getScopedI18n("search.engine"); diff --git a/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx b/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx index d91fdd3f7..adfa1648a 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/api/page.tsx @@ -30,7 +30,7 @@ export default async function ApiPage() { if (!session?.user || !session.user.permissions.includes("admin")) { notFound(); } - const document = openApiDocument(extractBaseUrlFromHeaders(headers())); + const document = openApiDocument(extractBaseUrlFromHeaders(await headers())); const apiKeys = await api.apiKeys.getAll(); const t = await getScopedI18n("management.page.tool.api.tab"); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx index e41d38536..9acc8ff34 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx @@ -19,12 +19,13 @@ import { UserProfileAvatarForm } from "./_components/_profile-avatar-form"; import { UserProfileForm } from "./_components/_profile-form"; interface Props { - params: { + params: Promise<{ userId: string; - }; + }>; } -export async function generateMetadata({ params }: Props) { +export async function generateMetadata(props: Props) { + const params = await props.params; const session = await auth(); const user = await api.user .getById({ @@ -43,7 +44,8 @@ export async function generateMetadata({ params }: Props) { }; } -export default async function EditUserPage({ params }: Props) { +export default async function EditUserPage(props: Props) { + const params = await props.params; const t = await getI18n(); const tGeneral = await getScopedI18n("management.page.user.setting.general"); const session = await auth(); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/layout.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/layout.tsx index c7158379d..e2a43ccef 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/layout.tsx @@ -15,10 +15,14 @@ import { NavigationLink } from "../groups/[id]/_navigation"; import { canAccessUserEditPage } from "./access"; interface LayoutProps { - params: { userId: string }; + params: Promise<{ userId: string }>; } -export default async function Layout({ children, params }: PropsWithChildren) { +export default async function Layout(props: PropsWithChildren) { + const params = await props.params; + + const { children } = props; + const session = await auth(); const t = await getI18n(); const tUser = await getScopedI18n("management.page.user"); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/security/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/security/page.tsx index 9897268b2..f3098258b 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/security/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/security/page.tsx @@ -10,12 +10,13 @@ import { canAccessUserEditPage } from "../access"; import { ChangePasswordForm } from "./_components/_change-password-form"; interface Props { - params: { + params: Promise<{ userId: string; - }; + }>; } -export default async function UserSecurityPage({ params }: Props) { +export default async function UserSecurityPage(props: Props) { + const params = await props.params; const session = await auth(); const tSecurity = await getScopedI18n("management.page.user.setting.security"); const user = await api.user diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx index 42d9acbc6..c10037abd 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/layout.tsx @@ -10,10 +10,14 @@ import { ManageContainer } from "~/components/manage/manage-container"; import { NavigationLink } from "./_navigation"; interface LayoutProps { - params: { id: string }; + params: Promise<{ id: string }>; } -export default async function Layout({ children, params }: PropsWithChildren) { +export default async function Layout(props: PropsWithChildren) { + const params = await props.params; + + const { children } = props; + const t = await getI18n(); const tGroup = await getScopedI18n("management.page.group"); const group = await api.group.getById({ id: params.id }); diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx index 11c6d1dad..9609a2089 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx @@ -17,15 +17,17 @@ import { AddGroupMember } from "./_add-group-member"; import { RemoveGroupMember } from "./_remove-group-member"; interface GroupsDetailPageProps { - params: { + params: Promise<{ id: string; - }; - searchParams: { + }>; + searchParams: Promise<{ search: string | undefined; - }; + }>; } -export default async function GroupsDetailPage({ params, searchParams }: GroupsDetailPageProps) { +export default async function GroupsDetailPage(props: GroupsDetailPageProps) { + const searchParams = await props.searchParams; + const params = await props.params; const session = await auth(); if (!session?.user.permissions.includes("admin")) { diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx index 8ec60e2f3..9a99aebc7 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/page.tsx @@ -14,12 +14,13 @@ import { ReservedGroupAlert } from "./_reserved-group-alert"; import { TransferGroupOwnership } from "./_transfer-group-ownership"; interface GroupsDetailPageProps { - params: { + params: Promise<{ id: string; - }; + }>; } -export default async function GroupsDetailPage({ params }: GroupsDetailPageProps) { +export default async function GroupsDetailPage(props: GroupsDetailPageProps) { + const params = await props.params; const session = await auth(); if (!session?.user.permissions.includes("admin")) { diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx index f44397ab4..037c040c9 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/permissions/page.tsx @@ -12,12 +12,13 @@ import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { PermissionForm, PermissionSwitch, SaveAffix } from "./_group-permission-form"; interface GroupPermissionsPageProps { - params: { + params: Promise<{ id: string; - }; + }>; } -export default async function GroupPermissionsPage({ params }: GroupPermissionsPageProps) { +export default async function GroupPermissionsPage(props: GroupPermissionsPageProps) { + const params = await props.params; const session = await auth(); if (!session?.user.permissions.includes("admin")) { diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx index 3fce6db2a..80c128c03 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx @@ -24,7 +24,7 @@ type SearchParamsSchemaInputFromSchema> }>; interface GroupsListPageProps { - searchParams: SearchParamsSchemaInputFromSchema>; + searchParams: Promise>>; } export default async function GroupsListPage(props: GroupsListPageProps) { @@ -35,7 +35,7 @@ export default async function GroupsListPage(props: GroupsListPageProps) { } const t = await getI18n(); - const searchParams = searchParamsSchema.parse(props.searchParams); + const searchParams = searchParamsSchema.parse(await props.searchParams); const { items: groups, totalCount } = await api.group.getPaginated(searchParams); return ( diff --git a/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx b/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx index 87be98a9b..bc3af8b27 100644 --- a/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx +++ b/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx @@ -9,11 +9,11 @@ import { env } from "~/env.mjs"; import { WidgetPreviewPageContent } from "./_content"; interface Props { - params: { kind: string }; + params: Promise<{ kind: string }>; } export default async function WidgetPreview(props: Props) { - if (!(props.params.kind in widgetImports || env.NODE_ENV !== "development")) { + if (!((await props.params).kind in widgetImports || env.NODE_ENV !== "development")) { notFound(); } @@ -26,7 +26,7 @@ export default async function WidgetPreview(props: Props) { }, }); - const sort = props.params.kind as WidgetKind; + const sort = (await props.params).kind as WidgetKind; return (
diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts index 8d1d30f26..42a09e316 100644 --- a/apps/nextjs/src/app/api/[...trpc]/route.ts +++ b/apps/nextjs/src/app/api/[...trpc]/route.ts @@ -1,11 +1,10 @@ -import { headers } from "next/headers"; -import { userAgent } from "next/server"; import type { NextRequest } from "next/server"; +import { userAgent } from "next/server"; import { createOpenApiFetchHandler } from "trpc-to-openapi"; import { appRouter, createTRPCContext } from "@homarr/api"; -import { hashPasswordAsync } from "@homarr/auth"; import type { Session } from "@homarr/auth"; +import { hashPasswordAsync } from "@homarr/auth"; import { createSessionAsync } from "@homarr/auth/server"; import { db, eq } from "@homarr/db"; import { apiKeys } from "@homarr/db/schema"; @@ -13,7 +12,7 @@ import { logger } from "@homarr/log"; const handlerAsync = async (req: NextRequest) => { const apiKeyHeaderValue = req.headers.get("ApiKey"); - const ipAddress = req.ip ?? headers().get("x-forwarded-for"); + const ipAddress = req.headers.get("x-forwarded-for"); const { ua } = userAgent(req); const session: Session | null = await getSessionOrDefaultFromHeadersAsync(apiKeyHeaderValue, ipAddress, ua); @@ -88,9 +87,9 @@ const getSessionOrDefaultFromHeadersAsync = async ( }; export { + handlerAsync as DELETE, handlerAsync as GET, + handlerAsync as PATCH, handlerAsync as POST, handlerAsync as PUT, - handlerAsync as DELETE, - handlerAsync as PATCH, }; diff --git a/apps/nextjs/src/app/api/auth/[...nextauth]/route.ts b/apps/nextjs/src/app/api/auth/[...nextauth]/route.ts index ec6065d0c..e04a79859 100644 --- a/apps/nextjs/src/app/api/auth/[...nextauth]/route.ts +++ b/apps/nextjs/src/app/api/auth/[...nextauth]/route.ts @@ -1,16 +1,17 @@ import { NextRequest } from "next/server"; -import { createHandlers } from "@homarr/auth"; +import { createHandlersAsync } from "@homarr/auth"; import type { SupportedAuthProvider } from "@homarr/definitions"; import { logger } from "@homarr/log"; export const GET = async (req: NextRequest) => { - return await createHandlers(extractProvider(req), isSecureCookieEnabled(req)).handlers.GET(reqWithTrustedOrigin(req)); + const { handlers } = await createHandlersAsync(extractProvider(req), isSecureCookieEnabled(req)); + + return await handlers.GET(reqWithTrustedOrigin(req)); }; export const POST = async (req: NextRequest) => { - return await createHandlers(extractProvider(req), isSecureCookieEnabled(req)).handlers.POST( - reqWithTrustedOrigin(req), - ); + const { handlers } = await createHandlersAsync(extractProvider(req), isSecureCookieEnabled(req)); + return await handlers.POST(reqWithTrustedOrigin(req)); }; /** diff --git a/apps/nextjs/src/app/api/user-medias/[id]/route.ts b/apps/nextjs/src/app/api/user-medias/[id]/route.ts index 751895381..f00b3e089 100644 --- a/apps/nextjs/src/app/api/user-medias/[id]/route.ts +++ b/apps/nextjs/src/app/api/user-medias/[id]/route.ts @@ -5,7 +5,8 @@ import type { NextRequest } from "next/server"; import { db, eq } from "@homarr/db"; import { medias } from "@homarr/db/schema"; -export async function GET(_req: NextRequest, { params }: { params: { id: string } }) { +export async function GET(_req: NextRequest, props: { params: Promise<{ id: string }> }) { + const params = await props.params; const image = await db.query.medias.findFirst({ where: eq(medias.id, params.id), columns: { diff --git a/apps/nextjs/src/components/user-avatar-menu.tsx b/apps/nextjs/src/components/user-avatar-menu.tsx index df5f63549..d7a53f901 100644 --- a/apps/nextjs/src/components/user-avatar-menu.tsx +++ b/apps/nextjs/src/components/user-avatar-menu.tsx @@ -88,7 +88,7 @@ export const UserAvatarMenu = ({ children, availableUpdates }: UserAvatarMenuPro - + @@ -113,7 +113,7 @@ export const UserAvatarMenu = ({ children, availableUpdates }: UserAvatarMenuPro {t("logout")} ) : ( - router.push("/auth/login")} leftSection={}> + }> {t("login")} )} diff --git a/apps/nextjs/src/middleware.ts b/apps/nextjs/src/middleware.ts index 7d38cfa48..8db4c4108 100644 --- a/apps/nextjs/src/middleware.ts +++ b/apps/nextjs/src/middleware.ts @@ -4,7 +4,7 @@ import { createTRPCClient, httpLink } from "@trpc/client"; import SuperJSON from "superjson"; import type { AppRouter } from "@homarr/api"; -import { createHeadersCallbackForSource } from "@homarr/api/client"; +import { createHeadersCallbackForSource } from "@homarr/api/shared"; import { createI18nMiddleware } from "@homarr/translation/middleware"; export async function middleware(request: NextRequest) { diff --git a/apps/nextjs/src/theme/color-scheme.ts b/apps/nextjs/src/theme/color-scheme.ts index 4f069a1ef..284b636b4 100644 --- a/apps/nextjs/src/theme/color-scheme.ts +++ b/apps/nextjs/src/theme/color-scheme.ts @@ -7,7 +7,7 @@ import type { ColorScheme } from "@homarr/definitions"; import { colorSchemeCookieKey } from "@homarr/definitions"; export const getCurrentColorSchemeAsync = cache(async () => { - const cookieValue = cookies().get(colorSchemeCookieKey)?.value; + const cookieValue = (await cookies()).get(colorSchemeCookieKey)?.value; if (cookieValue) { return cookieValue as ColorScheme; diff --git a/packages/api/package.json b/packages/api/package.json index f2b98554f..da5ccfc5e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -8,7 +8,8 @@ ".": "./src/index.ts", "./client": "./src/client.ts", "./server": "./src/server.ts", - "./websocket": "./src/websocket.ts" + "./websocket": "./src/websocket.ts", + "./shared": "./src/shared.ts" }, "main": "./index.ts", "types": "./index.ts", @@ -42,8 +43,9 @@ "@trpc/server": "next", "dockerode": "^4.0.3", "lodash.clonedeep": "^4.5.0", - "next": "^14.2.22", - "react": "^19.0.0", + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0", "superjson": "2.2.2", "trpc-to-openapi": "^2.1.1" }, diff --git a/packages/api/src/client.ts b/packages/api/src/client.ts index f39a3eba6..985446a6b 100644 --- a/packages/api/src/client.ts +++ b/packages/api/src/client.ts @@ -1,7 +1,10 @@ +"use client"; + import { createTRPCClient, createTRPCReact, httpLink } from "@trpc/react-query"; import SuperJSON from "superjson"; import type { AppRouter } from "."; +import { createHeadersCallbackForSource } from "./shared"; export const clientApi = createTRPCReact(); export const fetchApi = createTRPCClient({ @@ -26,42 +29,3 @@ function getBaseUrl() { export function getTrpcUrl() { return `${getBaseUrl()}/api/trpc`; } - -/** - * Creates a headers callback for a given source - * It will set the x-trpc-source header and cookies if needed - * @param source trpc source request comes from - * @returns headers callback - */ -export function createHeadersCallbackForSource(source: string) { - return async () => { - const headers = new Headers(); - headers.set("x-trpc-source", source); - - const cookies = await importCookiesAsync(); - // We need to set cookie for ssr requests (for example with useSuspenseQuery or middleware) - if (cookies) { - headers.set("cookie", cookies); - } - - return headers; - }; -} - -/** - * This is a workarround as cookies are not passed to the server - * when using useSuspenseQuery or middleware - * @returns cookie string on server or null on client - */ -async function importCookiesAsync() { - if (typeof window === "undefined") { - return await import("next/headers").then(({ cookies }) => - cookies() - .getAll() - .map(({ name, value }) => `${name}=${value}`) - .join(";"), - ); - } - - return null; -} diff --git a/packages/api/src/server.ts b/packages/api/src/server.ts index c7522c0af..08fc5e1e3 100644 --- a/packages/api/src/server.ts +++ b/packages/api/src/server.ts @@ -9,7 +9,7 @@ import { auth } from "@homarr/auth/next"; * handling a tRPC call from a React Server Component. */ const createContext = cache(async () => { - const heads = new Headers(headers()); + const heads = new Headers(await headers()); heads.set("x-trpc-source", "rsc"); return createTRPCContext({ diff --git a/packages/api/src/shared.ts b/packages/api/src/shared.ts new file mode 100644 index 000000000..b8ebcfcc6 --- /dev/null +++ b/packages/api/src/shared.ts @@ -0,0 +1,38 @@ +/** + * Creates a headers callback for a given source + * It will set the x-trpc-source header and cookies if needed + * @param source trpc source request comes from + * @returns headers callback + */ +export function createHeadersCallbackForSource(source: string) { + return async () => { + const headers = new Headers(); + headers.set("x-trpc-source", source); + + const cookies = await importCookiesAsync(); + // We need to set cookie for ssr requests (for example with useSuspenseQuery or middleware) + if (cookies) { + headers.set("cookie", cookies); + } + + return headers; + }; +} + +/** + * This is a workarround as cookies are not passed to the server + * when using useSuspenseQuery or middleware + * @returns cookie string on server or null on client + */ +async function importCookiesAsync() { + if (typeof window !== "undefined") { + return null; + } + + const { cookies } = await import("next/headers"); + + return (await cookies()) + .getAll() + .map(({ name, value }) => `${name}=${value}`) + .join(";"); +} diff --git a/packages/auth/configuration.ts b/packages/auth/configuration.ts index f13765536..49dd7126a 100644 --- a/packages/auth/configuration.ts +++ b/packages/auth/configuration.ts @@ -74,7 +74,7 @@ export const createConfiguration = ( userId: user.id, }); - cookies().set(sessionTokenCookieName, sessionToken, { + (await cookies()).set(sessionTokenCookieName, sessionToken, { path: "/", expires: expires, httpOnly: true, @@ -99,8 +99,9 @@ export const createConfiguration = ( error: "/auth/login", }, jwt: { - encode() { - const cookie = cookies().get(sessionTokenCookieName)?.value; + // eslint-disable-next-line no-restricted-syntax + async encode() { + const cookie = (await cookies()).get(sessionTokenCookieName)?.value; return cookie ?? ""; }, diff --git a/packages/auth/events.ts b/packages/auth/events.ts index 92987e0cf..6b299d0a9 100644 --- a/packages/auth/events.ts +++ b/packages/auth/events.ts @@ -54,7 +54,7 @@ export const createSignInEventHandler = (db: Database): Exclude - createConfiguration(provider, headers(), useSecureCookies); +export const createHandlersAsync = async (provider: SupportedAuthProvider | "unknown", useSecureCookies: boolean) => + createConfiguration(provider, await headers(), useSecureCookies); export { getSessionFromTokenAsync as getSessionFromToken, sessionTokenCookieName } from "./session"; diff --git a/packages/auth/package.json b/packages/auth/package.json index 3ade1c401..801554c42 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -34,10 +34,10 @@ "bcrypt": "^5.1.1", "cookies": "^0.9.1", "ldapts": "7.3.0", - "next": "^14.2.22", + "next": "15.1.3", "next-auth": "5.0.0-beta.25", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "19.0.0", + "react-dom": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/auth/test/events.spec.ts b/packages/auth/test/events.spec.ts index 5fb37a9a2..2bd4ad921 100644 --- a/packages/auth/test/events.spec.ts +++ b/packages/auth/test/events.spec.ts @@ -29,7 +29,7 @@ vi.mock("next/headers", async (importOriginal) => { vi.spyOn(result, "set"); - const cookies = () => result; + const cookies = () => Promise.resolve(result); return { ...mod, cookies } satisfies HeadersExport; }); @@ -238,7 +238,7 @@ describe("createSignInEventHandler should create signInEventHandler", () => { }); // Assert - expect(cookies().set).toHaveBeenCalledWith( + expect((await cookies()).set).toHaveBeenCalledWith( colorSchemeCookieKey, "dark", expect.objectContaining({ diff --git a/packages/common/package.json b/packages/common/package.json index b294e9abf..a2d0d2130 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -28,8 +28,9 @@ "dependencies": { "@homarr/log": "workspace:^0.1.0", "dayjs": "^1.11.13", - "next": "^14.2.22", - "react": "^19.0.0" + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index e7afee8fa..c7998951a 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -35,8 +35,9 @@ "@mantine/core": "^7.15.2", "@tabler/icons-react": "^3.26.0", "dayjs": "^1.11.13", - "next": "^14.2.22", - "react": "^19.0.0" + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals/package.json b/packages/modals/package.json index e940aa1f6..915afa700 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -26,7 +26,7 @@ "@homarr/ui": "workspace:^0.1.0", "@mantine/core": "^7.15.2", "@mantine/hooks": "^7.15.2", - "react": "^19.0.0" + "react": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/old-import/package.json b/packages/old-import/package.json index ec29f8684..11aee0b44 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -40,8 +40,9 @@ "@mantine/core": "^7.15.2", "@mantine/hooks": "^7.15.2", "adm-zip": "0.5.16", - "next": "^14.2.22", - "react": "^19.0.0", + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0", "superjson": "2.2.2", "zod": "^3.24.1", "zod-form-data": "^2.0.5" diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 0c18f9c04..87433e780 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -37,8 +37,9 @@ "@mantine/spotlight": "^7.15.2", "@tabler/icons-react": "^3.26.0", "jotai": "^2.11.0", - "next": "^14.2.22", - "react": "^19.0.0", + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0", "use-deep-compare-effect": "^1.8.1" }, "devDependencies": { diff --git a/packages/translation/package.json b/packages/translation/package.json index fa20dedd4..230189471 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,9 +32,10 @@ "dayjs": "^1.11.13", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.7", - "next": "^14.2.22", + "next": "15.1.3", "next-intl": "3.26.3", - "react": "^19.0.0" + "react": "19.0.0", + "react-dom": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index c0272e5c5..d9b323e0e 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,8 +34,9 @@ "@mantine/hooks": "^7.15.2", "@tabler/icons-react": "^3.26.0", "mantine-react-table": "2.0.0-beta.7", - "next": "^14.2.22", - "react": "^19.0.0" + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index a6bc44136..6da26e990 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -62,8 +62,9 @@ "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.7", - "next": "^14.2.22", - "react": "^19.0.0", + "next": "15.1.3", + "react": "19.0.0", + "react-dom": "19.0.0", "video.js": "^8.21.0" }, "devDependencies": { diff --git a/packages/widgets/src/notebook/component.tsx b/packages/widgets/src/notebook/component.tsx index 5231e1db9..a9847eceb 100644 --- a/packages/widgets/src/notebook/component.tsx +++ b/packages/widgets/src/notebook/component.tsx @@ -1,3 +1,5 @@ +"use client"; + import dynamic from "next/dynamic"; import "@mantine/tiptap/styles.css"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d93d3ee9..c20399c34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,8 +104,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/form '@homarr/gridstack': - specifier: ^1.11.2 - version: 1.11.2 + specifier: ^1.11.3 + version: 1.11.3 '@homarr/integrations': specifier: workspace:^0.1.0 version: link:../../packages/integrations @@ -183,13 +183,13 @@ importers: version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.62.15 - version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) @@ -230,8 +230,8 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -239,10 +239,10 @@ importers: specifier: ^1.29.0 version: 1.29.0 react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 react-dom: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-error-boundary: specifier: ^5.0.0 @@ -282,10 +282,10 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: ^19.0.2 + specifier: 19.0.2 version: 19.0.2 '@types/react-dom': - specifier: ^19.0.2 + specifier: 19.0.2 version: 19.0.2(@types/react@19.0.2) '@types/swagger-ui-react': specifier: ^4.18.3 @@ -555,11 +555,14 @@ importers: specifier: ^4.5.0 version: 4.5.0 next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) superjson: specifier: 2.2.2 version: 2.2.2 @@ -625,16 +628,16 @@ importers: specifier: 7.3.0 version: 7.3.0 next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.0.0-beta.25(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 react-dom: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0(react@19.0.0) devDependencies: '@homarr/eslint-config': @@ -705,11 +708,14 @@ importers: specifier: ^1.11.13 version: 1.11.13 next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1133,7 +1139,7 @@ importers: specifier: ^7.15.2 version: 7.15.2(react@19.0.0) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 devDependencies: '@homarr/eslint-config': @@ -1194,11 +1200,14 @@ importers: specifier: ^1.11.13 version: 1.11.13 next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1289,11 +1298,14 @@ importers: specifier: 0.5.16 version: 0.5.16 next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) superjson: specifier: 2.2.2 version: 2.2.2 @@ -1529,11 +1541,14 @@ importers: specifier: ^2.11.0 version: 2.11.0(@types/react@18.3.13)(react@19.0.0) next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -1572,14 +1587,17 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-intl: specifier: 3.26.3 - version: 3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 3.26.3(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1630,11 +1648,14 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1803,11 +1824,14 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: ^14.2.22 - version: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.3 + version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: - specifier: ^19.0.0 + specifier: 19.0.0 version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) video.js: specifier: ^8.21.0 version: 8.21.0 @@ -1834,8 +1858,8 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: ^14.2.22 - version: 14.2.22 + specifier: ^15.1.3 + version: 15.1.3 eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.17.0) @@ -2113,6 +2137,9 @@ packages: '@drizzle-team/brocli@0.11.0': resolution: {integrity: sha512-hD3pekGiPg0WPCCGAZmusBBJsDqGUR66Y452YgQsZOnkdQ7ViEPKuyP4huUGEZQefp8g34RRodXYmJ2TbCH+tg==} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@esbuild-kit/core-utils@3.3.2': resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} deprecated: 'Merged into tsx: https://tsx.is' @@ -2901,8 +2928,8 @@ packages: '@hapi/bourne@3.0.0': resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} - '@homarr/gridstack@1.11.2': - resolution: {integrity: sha512-WhoXMJtwE7N64Yajn1eoFZ+9JNZpE+6+Eea0uo8sAvVRbEKkJ0kirOK0QL1DW4j16wkvnyHZoxPfdx1DO+hRpQ==} + '@homarr/gridstack@1.11.3': + resolution: {integrity: sha512-7qVEH8DfLBQRJNHBMUTsrt1C1QwPRYcv9hq2vrQ/0M4bZXlxRxMEyUamDNJ1aBMtjDoiOkvirTUJUrZVZV6XBg==} '@hono/node-server@1.13.0': resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==} @@ -2939,6 +2966,111 @@ packages: '@vue/compiler-sfc': optional: true + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -3080,62 +3212,56 @@ packages: resolution: {integrity: sha512-u6/kglVwZRu5+GMmtkNlGLqJVkgTl0TtM+hLa9rBg7pldx+5NG5bk45NvL37uZmAr2Xfa1C6qHb7GrFwfP372g==} hasBin: true - '@next/env@14.2.22': - resolution: {integrity: sha512-EQ6y1QeNQglNmNIXvwP/Bb+lf7n9WtgcWvtoFsHquVLCJUuxRs+6SfZ5EK0/EqkkLex4RrDySvKgKNN7PXip7Q==} + '@next/env@15.1.3': + resolution: {integrity: sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==} - '@next/eslint-plugin-next@14.2.22': - resolution: {integrity: sha512-8xCmBMd+hUapMpviPp5g3oDhoWRtbE/QeN/Nvth+SZrdt7xt9TBsH8cePkRwRjXFpwHndpRDNVQROxR/1HiVbg==} + '@next/eslint-plugin-next@15.1.3': + resolution: {integrity: sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==} - '@next/swc-darwin-arm64@14.2.22': - resolution: {integrity: sha512-HUaLiehovgnqY4TMBZJ3pDaOsTE1spIXeR10pWgdQVPYqDGQmHJBj3h3V6yC0uuo/RoY2GC0YBFRkOX3dI9WVQ==} + '@next/swc-darwin-arm64@15.1.3': + resolution: {integrity: sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.22': - resolution: {integrity: sha512-ApVDANousaAGrosWvxoGdLT0uvLBUC+srqOcpXuyfglA40cP2LBFaGmBjhgpxYk5z4xmunzqQvcIgXawTzo2uQ==} + '@next/swc-darwin-x64@15.1.3': + resolution: {integrity: sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.22': - resolution: {integrity: sha512-3O2J99Bk9aM+d4CGn9eEayJXHuH9QLx0BctvWyuUGtJ3/mH6lkfAPRI4FidmHMBQBB4UcvLMfNf8vF0NZT7iKw==} + '@next/swc-linux-arm64-gnu@15.1.3': + resolution: {integrity: sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.22': - resolution: {integrity: sha512-H/hqfRz75yy60y5Eg7DxYfbmHMjv60Dsa6IWHzpJSz4MRkZNy5eDnEW9wyts9bkxwbOVZNPHeb3NkqanP+nGPg==} + '@next/swc-linux-arm64-musl@15.1.3': + resolution: {integrity: sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.22': - resolution: {integrity: sha512-LckLwlCLcGR1hlI5eiJymR8zSHPsuruuwaZ3H2uudr25+Dpzo6cRFjp/3OR5UYJt8LSwlXv9mmY4oI2QynwpqQ==} + '@next/swc-linux-x64-gnu@15.1.3': + resolution: {integrity: sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.22': - resolution: {integrity: sha512-qGUutzmh0PoFU0fCSu0XYpOfT7ydBZgDfcETIeft46abPqP+dmePhwRGLhFKwZWxNWQCPprH26TjaTxM0Nv8mw==} + '@next/swc-linux-x64-musl@15.1.3': + resolution: {integrity: sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.22': - resolution: {integrity: sha512-K6MwucMWmIvMb9GlvT0haYsfIPxfQD8yXqxwFy4uLFMeXIb2TcVYQimxkaFZv86I7sn1NOZnpOaVk5eaxThGIw==} + '@next/swc-win32-arm64-msvc@15.1.3': + resolution: {integrity: sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.22': - resolution: {integrity: sha512-5IhDDTPEbzPR31ZzqHe90LnNe7BlJUZvC4sA1thPJV6oN5WmtWjZ0bOYfNsyZx00FJt7gggNs6SrsX0UEIcIpA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.22': - resolution: {integrity: sha512-nvRaB1PyG4scn9/qNzlkwEwLzuoPH3Gjp7Q/pLuwUgOTt1oPMlnCI3A3rgkt+eZnU71emOiEv/mR201HoURPGg==} + '@next/swc-win32-x64-msvc@15.1.3': + resolution: {integrity: sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3661,8 +3787,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@t3-oss/env-core@0.11.1': resolution: {integrity: sha512-MaxOwEoG1ntCFoKJsS7nqwgcxLW1SJw238AJwfJeaz3P/8GtkxXZsPPolsz1AdYvUTbe3XvqZ/VCdfjt+3zmKw==} @@ -4926,6 +5052,10 @@ packages: color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorspace@1.1.4: resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} @@ -5771,6 +5901,10 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -6032,11 +6166,6 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -6621,10 +6750,6 @@ packages: resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==} engines: {node: '>= 0.4'} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -7137,21 +7262,24 @@ packages: next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - next@14.2.22: - resolution: {integrity: sha512-Ps2caobQ9hlEhscLPiPm3J3SYhfwfpMqzsoCMZGWxt9jBRK9hoBZj2A37i8joKhsyth2EuVKDVJCTF5/H4iEDw==} - engines: {node: '>=18.17.0'} + next@15.1.3: + resolution: {integrity: sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true @@ -8324,6 +8452,10 @@ packages: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8594,13 +8726,13 @@ packages: strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -8904,6 +9036,9 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} @@ -9864,6 +9999,11 @@ snapshots: '@drizzle-team/brocli@0.11.0': {} + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild-kit/core-utils@3.3.2': dependencies: esbuild: 0.18.20 @@ -10298,7 +10438,7 @@ snapshots: dependencies: '@formatjs/fast-memoize': 2.2.1 '@formatjs/intl-localematcher': 0.5.5 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/fast-memoize@2.2.1': dependencies: @@ -10308,12 +10448,12 @@ snapshots: dependencies: '@formatjs/ecma402-abstract': 2.2.0 '@formatjs/icu-skeleton-parser': 1.8.4 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/icu-skeleton-parser@1.8.4': dependencies: '@formatjs/ecma402-abstract': 2.2.0 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/intl-localematcher@0.5.5': dependencies: @@ -10333,7 +10473,7 @@ snapshots: '@hapi/bourne@3.0.0': {} - '@homarr/gridstack@1.11.2': {} + '@homarr/gridstack@1.11.3': {} '@hono/node-server@1.13.0(hono@4.6.1)': dependencies: @@ -10363,6 +10503,81 @@ snapshots: transitivePeerDependencies: - supports-color + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -10593,37 +10808,34 @@ snapshots: - utf-8-validate - webpack-sources - '@next/env@14.2.22': {} + '@next/env@15.1.3': {} - '@next/eslint-plugin-next@14.2.22': + '@next/eslint-plugin-next@15.1.3': dependencies: - glob: 10.3.10 + fast-glob: 3.3.1 - '@next/swc-darwin-arm64@14.2.22': + '@next/swc-darwin-arm64@15.1.3': optional: true - '@next/swc-darwin-x64@14.2.22': + '@next/swc-darwin-x64@15.1.3': optional: true - '@next/swc-linux-arm64-gnu@14.2.22': + '@next/swc-linux-arm64-gnu@15.1.3': optional: true - '@next/swc-linux-arm64-musl@14.2.22': + '@next/swc-linux-arm64-musl@15.1.3': optional: true - '@next/swc-linux-x64-gnu@14.2.22': + '@next/swc-linux-x64-gnu@15.1.3': optional: true - '@next/swc-linux-x64-musl@14.2.22': + '@next/swc-linux-x64-musl@15.1.3': optional: true - '@next/swc-win32-arm64-msvc@14.2.22': + '@next/swc-win32-arm64-msvc@15.1.3': optional: true - '@next/swc-win32-ia32-msvc@14.2.22': - optional: true - - '@next/swc-win32-x64-msvc@14.2.22': + '@next/swc-win32-x64-msvc@15.1.3': optional: true '@noble/hashes@1.5.0': {} @@ -11406,10 +11618,9 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.5': + '@swc/helpers@0.5.15': dependencies: - '@swc/counter': 0.1.3 - tslib: 2.7.0 + tslib: 2.8.1 '@t3-oss/env-core@0.11.1(typescript@5.7.2)(zod@3.24.1)': dependencies: @@ -11445,10 +11656,10 @@ snapshots: '@tanstack/react-query': 5.62.15(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.62.15(react@19.0.0) - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 '@tanstack/react-query@5.62.15(react@19.0.0)': @@ -11692,11 +11903,11 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 @@ -12505,15 +12716,15 @@ snapshots: ast-types@0.13.4: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 ast-types@0.14.2: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 ast-types@0.16.1: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 async-lock@1.4.1: {} @@ -12881,6 +13092,12 @@ snapshots: color-convert: 1.9.3 color-string: 1.9.1 + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + colorspace@1.1.4: dependencies: color: 3.2.1 @@ -13942,6 +14159,14 @@ snapshots: fast-fifo@1.3.2: {} + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14211,14 +14436,6 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.3.10: - dependencies: - foreground-child: 3.3.0 - jackspeak: 2.3.6 - minimatch: 9.0.5 - minipass: 7.1.2 - path-scurry: 1.11.1 - glob@10.4.5: dependencies: foreground-child: 3.3.0 @@ -14847,12 +15064,6 @@ snapshots: reflect.getprototypeof: 1.0.9 set-function-name: 2.0.2 - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -15335,43 +15546,43 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-auth@5.0.0-beta.25(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - next-intl@3.26.3(next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-intl@3.26.3(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@14.2.22(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): + next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): dependencies: - '@next/env': 14.2.22 - '@swc/helpers': 0.5.5 + '@next/env': 15.1.3 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 busboy: 1.6.0 caniuse-lite: 1.0.30001679 - graceful-fs: 4.2.11 postcss: 8.4.31 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - styled-jsx: 5.1.1(@babel/core@7.26.0)(react@19.0.0) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.22 - '@next/swc-darwin-x64': 14.2.22 - '@next/swc-linux-arm64-gnu': 14.2.22 - '@next/swc-linux-arm64-musl': 14.2.22 - '@next/swc-linux-x64-gnu': 14.2.22 - '@next/swc-linux-x64-musl': 14.2.22 - '@next/swc-win32-arm64-msvc': 14.2.22 - '@next/swc-win32-ia32-msvc': 14.2.22 - '@next/swc-win32-x64-msvc': 14.2.22 + '@next/swc-darwin-arm64': 15.1.3 + '@next/swc-darwin-x64': 15.1.3 + '@next/swc-linux-arm64-gnu': 15.1.3 + '@next/swc-linux-arm64-musl': 15.1.3 + '@next/swc-linux-x64-gnu': 15.1.3 + '@next/swc-linux-x64-musl': 15.1.3 + '@next/swc-win32-arm64-msvc': 15.1.3 + '@next/swc-win32-x64-msvc': 15.1.3 '@playwright/test': 1.49.1 sass: 1.83.1 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -16354,7 +16565,7 @@ snapshots: esprima: 4.0.1 source-map: 0.6.1 tiny-invariant: 1.3.3 - tslib: 2.7.0 + tslib: 2.8.1 redis-errors@1.2.0: {} @@ -16694,6 +16905,33 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -17029,7 +17267,7 @@ snapshots: strnum@1.0.5: {} - styled-jsx@5.1.1(@babel/core@7.26.0)(react@19.0.0): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0): dependencies: client-only: 0.0.1 react: 19.0.0 @@ -17413,6 +17651,8 @@ snapshots: tslib@2.7.0: {} + tslib@2.8.1: {} + tsscmp@1.0.6: {} tsx@4.19.2: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index cc04a35c2..5f82c57b0 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,7 +17,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "^14.2.22", + "@next/eslint-plugin-next": "^15.1.3", "eslint-config-prettier": "^9.1.0", "eslint-config-turbo": "^2.3.3", "eslint-plugin-import": "^2.31.0", From 49d10f7ad0f58b577ed72c2a46a062af263ff225 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 19:53:57 +0100 Subject: [PATCH 169/262] feat(board): add board duplication (#1856) Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com> --- .../_components/board-card-menu-dropdown.tsx | 25 +++- packages/api/src/router/board.ts | 109 +++++++++++++++++- .../src/boards/duplicate-board-modal.tsx | 96 +++++++++++++++ .../modals-collection/src/boards/index.ts | 1 + packages/translation/src/lang/en.json | 17 +++ packages/validation/src/board.ts | 6 + 6 files changed, 251 insertions(+), 3 deletions(-) create mode 100644 packages/modals-collection/src/boards/duplicate-board-modal.tsx diff --git a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx index dd7794db8..eef7dedb2 100644 --- a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx +++ b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx @@ -3,12 +3,14 @@ import { useCallback } from "react"; import Link from "next/link"; import { Menu } from "@mantine/core"; -import { IconHome, IconSettings, IconTrash } from "@tabler/icons-react"; +import { IconCopy, IconHome, IconSettings, IconTrash } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; +import { useSession } from "@homarr/auth/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; -import { useConfirmModal } from "@homarr/modals"; +import { useConfirmModal, useModalAction } from "@homarr/modals"; +import { DuplicateBoardModal } from "@homarr/modals-collection"; import { useScopedI18n } from "@homarr/translation/client"; import { useBoardPermissions } from "~/components/board/permissions/client"; @@ -30,8 +32,10 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => const tCommon = useScopedI18n("common"); const { hasFullAccess, hasChangeAccess } = useBoardPermissions(board); + const { data: session } = useSession(); const { openConfirmModal } = useConfirmModal(); + const { openModal: openDuplicateModal } = useModalAction(DuplicateBoardModal); const setHomeBoardMutation = clientApi.board.setHomeBoard.useMutation({ onSettled: async () => { @@ -64,11 +68,28 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => await setHomeBoardMutation.mutateAsync({ id: board.id }); }, [board.id, setHomeBoardMutation]); + const handleDuplicateBoard = useCallback(() => { + openDuplicateModal({ + board: { + id: board.id, + name: board.name, + }, + onSuccess: async () => { + await revalidatePathActionAsync("/manage/boards"); + }, + }); + }, [board.id, board.name, openDuplicateModal]); + return ( }> {t("setHomeBoard.label")} + {session?.user.permissions.includes("board-create") && ( + }> + {t("duplicate.label")} + + )} {hasChangeAccess && ( <> diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 291ce54a4..182fc90d4 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -2,7 +2,7 @@ import { TRPCError } from "@trpc/server"; import superjson from "superjson"; import { constructBoardPermissions } from "@homarr/auth/shared"; -import type { Database, SQL } from "@homarr/db"; +import type { Database, InferInsertModel, SQL } from "@homarr/db"; import { and, createId, eq, inArray, like, or } from "@homarr/db"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { @@ -11,7 +11,9 @@ import { boardUserPermissions, groupMembers, groupPermissions, + integrationGroupPermissions, integrationItems, + integrationUserPermissions, items, sections, users, @@ -216,6 +218,111 @@ export const boardRouter = createTRPCRouter({ }); }); }), + duplicateBoard: permissionRequiredProcedure + .requiresPermission("board-create") + .input(validation.board.duplicate) + .mutation(async ({ ctx, input }) => { + await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view"); + await noBoardWithSimilarNameAsync(ctx.db, input.name); + + const board = await ctx.db.query.boards.findFirst({ + where: eq(boards.id, input.id), + with: { + sections: { + with: { + items: { + with: { + integrations: true, + }, + }, + }, + }, + }, + }); + + if (!board) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "Board not found", + }); + } + + const { sections: boardSections, ...boardProps } = board; + + const newBoardId = createId(); + const sectionMap = new Map(boardSections.map((section) => [section.id, createId()])); + const sectionsToInsert: InferInsertModel[] = boardSections.map(({ items: _, ...section }) => ({ + ...section, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + id: sectionMap.get(section.id)!, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + parentSectionId: section.parentSectionId ? sectionMap.get(section.parentSectionId)! : null, + boardId: newBoardId, + })); + const flatItems = boardSections.flatMap((section) => section.items); + const itemMap = new Map(flatItems.map((item) => [item.id, createId()])); + const itemsToInsert: InferInsertModel[] = flatItems.map(({ integrations: _, ...item }) => ({ + ...item, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + id: itemMap.get(item.id)!, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + sectionId: sectionMap.get(item.sectionId)!, + })); + + // Creates a list with all integration ids the user has access to + const hasAccessForAll = ctx.session.user.permissions.includes("integration-use-all"); + const integrationIdsWithAccess = hasAccessForAll + ? [] + : await ctx.db + .selectDistinct({ + id: integrationGroupPermissions.integrationId, + }) + .from(integrationGroupPermissions) + .leftJoin(groupMembers, eq(integrationGroupPermissions.groupId, groupMembers.groupId)) + .where(eq(groupMembers.userId, ctx.session.user.id)) + .union( + ctx.db + .selectDistinct({ id: integrationUserPermissions.integrationId }) + .from(integrationUserPermissions) + .where(eq(integrationUserPermissions.userId, ctx.session.user.id)), + ) + .then((result) => result.map((row) => row.id)); + + const itemIntegrationsToInsert = flatItems.flatMap((item) => + item.integrations + // Restrict integrations to only those the user has access to + .filter(({ integrationId }) => integrationIdsWithAccess.includes(integrationId) || hasAccessForAll) + .map((integration) => ({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + itemId: itemMap.get(item.id)!, + integrationId: integration.integrationId, + })), + ); + + ctx.db.transaction((transaction) => { + transaction + .insert(boards) + .values({ + ...boardProps, + id: newBoardId, + name: input.name, + creatorId: ctx.session.user.id, + }) + .run(); + + if (sectionsToInsert.length > 0) { + transaction.insert(sections).values(sectionsToInsert).run(); + } + + if (itemsToInsert.length > 0) { + transaction.insert(items).values(itemsToInsert).run(); + } + + if (itemIntegrationsToInsert.length > 0) { + transaction.insert(integrationItems).values(itemIntegrationsToInsert).run(); + } + }); + }), renameBoard: protectedProcedure.input(validation.board.rename).mutation(async ({ ctx, input }) => { await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full"); diff --git a/packages/modals-collection/src/boards/duplicate-board-modal.tsx b/packages/modals-collection/src/boards/duplicate-board-modal.tsx new file mode 100644 index 000000000..083cb716b --- /dev/null +++ b/packages/modals-collection/src/boards/duplicate-board-modal.tsx @@ -0,0 +1,96 @@ +import { Button, Group, Stack, Text, TextInput } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import type { MaybePromise } from "@homarr/common/types"; +import { useZodForm } from "@homarr/form"; +import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; +import { useI18n } from "@homarr/translation/client"; +import { validation } from "@homarr/validation"; + +import { createModal } from "../../../modals/src/creator"; +import { useBoardNameStatus } from "./add-board-modal"; + +interface InnerProps { + board: { + id: string; + name: string; + }; + onSuccess: () => MaybePromise; +} + +export const DuplicateBoardModal = createModal(({ actions, innerProps }) => { + const t = useI18n(); + const form = useZodForm(validation.board.duplicate.omit({ id: true }), { + mode: "controlled", + initialValues: { + name: innerProps.board.name, + }, + }); + const boardNameStatus = useBoardNameStatus(form.values.name); + const { mutateAsync, isPending } = clientApi.board.duplicateBoard.useMutation(); + + return ( + { + // Prevent submit before name availability check + if (!boardNameStatus.canSubmit) return; + await mutateAsync( + { + ...values, + id: innerProps.board.id, + }, + { + async onSuccess() { + actions.closeModal(); + showSuccessNotification({ + title: t("board.action.duplicate.notification.success.title"), + message: t("board.action.duplicate.notification.success.message"), + }); + await innerProps.onSuccess(); + }, + onError() { + showErrorNotification({ + title: t("board.action.duplicate.notification.error.title"), + message: t("board.action.duplicate.notification.error.message"), + }); + }, + }, + ); + })} + > + + + {t("board.action.duplicate.message", { name: innerProps.board.name })} + + + + {boardNameStatus.description.icon ? : null} + {boardNameStatus.description.label} + + ) : null + } + withAsterisk + /> + + + + + + + + ); +}).withOptions({ + defaultTitle(t) { + return t("board.action.duplicate.title"); + }, +}); diff --git a/packages/modals-collection/src/boards/index.ts b/packages/modals-collection/src/boards/index.ts index 3da35c853..8594bb424 100644 --- a/packages/modals-collection/src/boards/index.ts +++ b/packages/modals-collection/src/boards/index.ts @@ -1,2 +1,3 @@ export { AddBoardModal } from "./add-board-modal"; export { ImportBoardModal } from "./import-board-modal"; +export { DuplicateBoardModal } from "./duplicate-board-modal"; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 9a87ad643..5e0754650 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1760,6 +1760,20 @@ }, "board": { "action": { + "duplicate": { + "title": "Duplicate board", + "message": "This will duplicate the board {name} with all its content. If widgets reference integrations, that you are not allowed to use, they will be removed.", + "notification": { + "success": { + "title": "Board duplicated", + "message": "The board was successfully duplicated" + }, + "error": { + "title": "Unable to duplicate board", + "message": "The board could not be duplicated" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2139,9 @@ "tooltip": "This board will show as your home board" } }, + "duplicate": { + "label": "Duplicate board" + }, "delete": { "label": "Delete permanently", "confirm": { diff --git a/packages/validation/src/board.ts b/packages/validation/src/board.ts index 2783f7a88..1fd121a95 100644 --- a/packages/validation/src/board.ts +++ b/packages/validation/src/board.ts @@ -28,6 +28,11 @@ const renameSchema = z.object({ name: boardNameSchema, }); +const duplicateSchema = z.object({ + id: z.string(), + name: boardNameSchema, +}); + const changeVisibilitySchema = z.object({ id: z.string(), visibility: z.enum(["public", "private"]), @@ -85,6 +90,7 @@ export const boardSchemas = { savePartialSettings: savePartialSettingsSchema, save: saveSchema, create: createSchema, + duplicate: duplicateSchema, rename: renameSchema, changeVisibility: changeVisibilitySchema, permissions: permissionsSchema, From 1f0116d725d76845df4b9cce74ef87134edc627a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:16:31 +0000 Subject: [PATCH 170/262] fix(deps): update dependency better-sqlite3 to ^11.7.2 (#1858) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/db/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 3d1ecbd43..cd3e92438 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -45,7 +45,7 @@ "@paralleldrive/cuid2": "^2.2.2", "@t3-oss/env-nextjs": "^0.11.1", "@testcontainers/mysql": "^10.16.0", - "better-sqlite3": "^11.7.0", + "better-sqlite3": "^11.7.2", "dotenv": "^16.4.7", "drizzle-kit": "^0.30.1", "drizzle-orm": "^0.38.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c20399c34..eed931c49 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -911,8 +911,8 @@ importers: specifier: ^10.16.0 version: 10.16.0 better-sqlite3: - specifier: ^11.7.0 - version: 11.7.0 + specifier: ^11.7.2 + version: 11.7.2 dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.0)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.0)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -4794,8 +4794,8 @@ packages: resolution: {integrity: sha512-Wjss+Bc674ZABPr+SCKWTqA4V1pyYFhzDTjNBJy4jdmgOv0oGIGXeKBRJyINwP5tIy+iIZD9SfgZpztduzQ5QA==} engines: {node: '>= 18.4'} - better-sqlite3@11.7.0: - resolution: {integrity: sha512-mXpa5jnIKKHeoGzBrUJrc65cXFKcILGZpU3FXR0pradUEm9MA7UZz02qfEejaMcm9iXrSOCenwwYMJ/tZ1y5Ig==} + better-sqlite3@11.7.2: + resolution: {integrity: sha512-10a57cHVDmfNQS4jrZ9AH2t+2ekzYh5Rhbcnb4ytpmYweoLdogDmyTt5D+hLiY9b44Mx9foowb/4iXBTO2yP3Q==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -12810,7 +12810,7 @@ snapshots: bellajs@11.2.0: {} - better-sqlite3@11.7.0: + better-sqlite3@11.7.2: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -13511,18 +13511,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.0)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 '@types/react': 19.0.2 - better-sqlite3: 11.7.0 + better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.0)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.0)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: From c349bf83714739ca1bc6057f2d43c9e3964fa205 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 21:49:33 +0100 Subject: [PATCH 171/262] feat(auth): add env variable for oidc-name-attribute-overwrite (#1850) --- packages/auth/env.mjs | 2 ++ packages/auth/events.ts | 19 +++++++---- packages/auth/providers/oidc/oidc-provider.ts | 32 ++++++++++++------- turbo.json | 1 + 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/auth/env.mjs b/packages/auth/env.mjs index ebc4555df..9105ee776 100644 --- a/packages/auth/env.mjs +++ b/packages/auth/env.mjs @@ -74,6 +74,7 @@ export const env = createEnv({ AUTH_OIDC_AUTO_LOGIN: booleanSchema, AUTH_OIDC_SCOPE_OVERWRITE: z.string().min(1).default("openid email profile groups"), AUTH_OIDC_GROUPS_ATTRIBUTE: z.string().default("groups"), // Is used in the signIn event to assign the correct groups, key is from object of decoded id_token + AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE: z.string().optional(), } : {}), ...(authProviders.includes("ldap") @@ -117,6 +118,7 @@ export const env = createEnv({ AUTH_LDAP_USER_MAIL_ATTRIBUTE: process.env.AUTH_LDAP_USER_MAIL_ATTRIBUTE, AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG: process.env.AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG, AUTH_OIDC_AUTO_LOGIN: process.env.AUTH_OIDC_AUTO_LOGIN, + AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE: process.env.AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE, }, skipValidation, }); diff --git a/packages/auth/events.ts b/packages/auth/events.ts index 6b299d0a9..31713ac7d 100644 --- a/packages/auth/events.ts +++ b/packages/auth/events.ts @@ -9,6 +9,7 @@ import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions"; import { logger } from "@homarr/log"; import { env } from "./env.mjs"; +import { extractProfileName } from "./providers/oidc/oidc-provider"; export const createSignInEventHandler = (db: Database): Exclude["signIn"] => { return async ({ user, profile }) => { @@ -43,12 +44,18 @@ export const createSignInEventHandler = (db: Database): Exclude => ({ id: "oidc", name: env.AUTH_OIDC_CLIENT_NAME, @@ -28,12 +20,28 @@ export const OidcProvider = (headers: ReadonlyHeaders | null): OIDCConfig { + if (!env.AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE) { + // Use the name as the username if the preferred_username is an email address + return profile.preferred_username?.includes("@") ? profile.name : profile.preferred_username; + } + + return profile[env.AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE as keyof typeof profile] as string; +}; diff --git a/turbo.json b/turbo.json index b3732c66e..e259bcb22 100644 --- a/turbo.json +++ b/turbo.json @@ -17,6 +17,7 @@ "AUTH_OIDC_ISSUER", "AUTH_OIDC_SCOPE_OVERWRITE", "AUTH_OIDC_GROUPS_ATTRIBUTE", + "AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE", "AUTH_LDAP_USERNAME_ATTRIBUTE", "AUTH_LDAP_USER_MAIL_ATTRIBUTE", "AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG", From 1562eae4d7bb1265138bf49fe2fa7f9790f1b320 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 22:38:40 +0100 Subject: [PATCH 172/262] refactor: remove sharp image optimization (#1862) --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index a799e8152..1dc496491 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,9 +12,6 @@ COPY . . RUN corepack enable pnpm && pnpm install --recursive --frozen-lockfile -# Install sharp for image optimization -RUN corepack enable pnpm && pnpm install sharp -w - # Copy static data as it is not part of the build COPY static-data ./static-data ARG SKIP_ENV_VALIDATION='true' From 1e9098d052801fe7d53ce15e9f22ed89de04d644 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 22:43:30 +0100 Subject: [PATCH 173/262] feat(icons): add upload button to icon picker (#1859) --- .../manage/medias/_actions/upload-media.tsx | 41 ++++++-- .../src/app/[locale]/manage/medias/page.tsx | 4 +- .../components/icons/picker/icon-picker.tsx | 95 ++++++++++++------- 3 files changed, 96 insertions(+), 44 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/medias/_actions/upload-media.tsx b/apps/nextjs/src/app/[locale]/manage/medias/_actions/upload-media.tsx index 72b880fc9..f8164cdac 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/_actions/upload-media.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/_actions/upload-media.tsx @@ -1,15 +1,40 @@ "use client"; +import type { JSX } from "react"; import { Button, FileButton } from "@mantine/core"; import { IconUpload } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; +import type { MaybePromise } from "@homarr/common/types"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; import { supportedMediaUploadFormats } from "@homarr/validation"; -export const UploadMedia = () => { +export const UploadMediaButton = () => { + const t = useI18n(); + const onSettledAsync = async () => { + await revalidatePathActionAsync("/manage/medias"); + }; + + return ( + + {({ onClick, loading }) => ( + + )} + + ); +}; + +interface UploadMediaProps { + children: (props: { onClick: () => void; loading: boolean }) => JSX.Element; + onSettled?: () => MaybePromise; + onSuccess?: (media: { id: string; url: string }) => MaybePromise; +} + +export const UploadMedia = ({ children, onSettled, onSuccess }: UploadMediaProps) => { const t = useI18n(); const { mutateAsync, isPending } = clientApi.media.uploadMedia.useMutation(); @@ -18,10 +43,14 @@ export const UploadMedia = () => { const formData = new FormData(); formData.append("file", file); await mutateAsync(formData, { - onSuccess() { + async onSuccess(mediaId) { showSuccessNotification({ message: t("media.action.upload.notification.success.message"), }); + await onSuccess?.({ + id: mediaId, + url: `/api/user-medias/${mediaId}`, + }); }, onError() { showErrorNotification({ @@ -29,18 +58,14 @@ export const UploadMedia = () => { }); }, async onSettled() { - await revalidatePathActionAsync("/manage/medias"); + await onSettled?.(); }, }); }; return ( - {({ onClick }) => ( - - )} + {({ onClick }) => children({ onClick, loading: isPending })} ); }; diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index 17c01f519..ed50a18ad 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -16,7 +16,7 @@ import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { CopyMedia } from "./_actions/copy-media"; import { DeleteMedia } from "./_actions/delete-media"; import { IncludeFromAllUsersSwitch } from "./_actions/show-all"; -import { UploadMedia } from "./_actions/upload-media"; +import { UploadMediaButton } from "./_actions/upload-media"; const searchParamsSchema = z.object({ search: z.string().optional(), @@ -61,7 +61,7 @@ export default async function GroupsListPage(props: MediaListPageProps) { )} - {session.user.permissions.includes("media-upload") && } + {session.user.permissions.includes("media-upload") && } diff --git a/apps/nextjs/src/components/icons/picker/icon-picker.tsx b/apps/nextjs/src/components/icons/picker/icon-picker.tsx index 432142dbf..d0758a66e 100644 --- a/apps/nextjs/src/components/icons/picker/icon-picker.tsx +++ b/apps/nextjs/src/components/icons/picker/icon-picker.tsx @@ -1,10 +1,12 @@ import type { FocusEventHandler } from "react"; import { startTransition, useState } from "react"; import { + ActionIcon, Box, Card, Combobox, Flex, + Group, Image, Indicator, InputBase, @@ -16,10 +18,13 @@ import { useCombobox, } from "@mantine/core"; import { useDebouncedValue } from "@mantine/hooks"; +import { IconUpload } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; +import { useSession } from "@homarr/auth/client"; import { useScopedI18n } from "@homarr/translation/client"; +import { UploadMedia } from "~/app/[locale]/manage/medias/_actions/upload-media"; import classes from "./icon-picker.module.css"; interface IconPickerProps { @@ -34,6 +39,7 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I const [value, setValue] = useState(initialValue ?? ""); const [search, setSearch] = useState(initialValue ?? ""); const [previewUrl, setPreviewUrl] = useState(initialValue ?? null); + const { data: session } = useSession(); const tCommon = useScopedI18n("common"); @@ -105,40 +111,61 @@ export const IconPicker = ({ initialValue, onChange, error, onFocus, onBlur }: I return ( - } - leftSection={ - previewUrl ? ( - // eslint-disable-next-line @next/next/no-img-element - - ) : null - } - value={search} - onChange={(event) => { - combobox.openDropdown(); - combobox.updateSelectedOptionIndex(); - setSearch(event.currentTarget.value); - setValue(event.currentTarget.value); - setPreviewUrl(null); - onChange(event.currentTarget.value); - }} - onClick={() => combobox.openDropdown()} - onFocus={(event) => { - onFocus?.(event); - combobox.openDropdown(); - }} - onBlur={(event) => { - onBlur?.(event); - combobox.closeDropdown(); - setPreviewUrl(value); - setSearch(value || ""); - }} - rightSectionPointerEvents="none" - withAsterisk - error={error} - label={tCommon("iconPicker.label")} - placeholder={tCommon("iconPicker.header", { countIcons: data?.countIcons ?? 0 })} - /> + + } + leftSection={ + previewUrl ? ( + // eslint-disable-next-line @next/next/no-img-element + + ) : null + } + value={search} + onChange={(event) => { + combobox.openDropdown(); + combobox.updateSelectedOptionIndex(); + setSearch(event.currentTarget.value); + setValue(event.currentTarget.value); + setPreviewUrl(null); + onChange(event.currentTarget.value); + }} + onClick={() => combobox.openDropdown()} + onFocus={(event) => { + onFocus?.(event); + combobox.openDropdown(); + }} + onBlur={(event) => { + onBlur?.(event); + combobox.closeDropdown(); + setPreviewUrl(value); + setSearch(value || ""); + }} + rightSectionPointerEvents="none" + withAsterisk + error={error} + label={tCommon("iconPicker.label")} + placeholder={tCommon("iconPicker.header", { countIcons: data?.countIcons ?? 0 })} + /> + {session?.user.permissions.includes("media-upload") && ( + { + startTransition(() => { + setValue(url); + setPreviewUrl(url); + setSearch(url); + onChange(url); + }); + }} + > + {({ onClick, loading }) => ( + + + + )} + + )} + From bf1294476867fabc896f94c9326a1acfe6bffa50 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 22:47:33 +0100 Subject: [PATCH 174/262] fix(iframe): remove second scrollbar from item card (#1828) --- apps/nextjs/src/components/board/items/item-content.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index bd9d7c8e3..b8aff4fb2 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -36,6 +36,7 @@ export const BoardItemContent = ({ item }: BoardItemContentProps) => { root: { "--opacity": board.opacity / 100, containerType: "size", + overflow: item.kind === "iframe" ? "hidden" : undefined, }, }} p={0} From ccb19e06c192029a81c851900982d52b045185a6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 4 Jan 2025 23:06:34 +0100 Subject: [PATCH 175/262] feat(app): add search and pagination (#1860) --- .../src/app/[locale]/manage/apps/page.tsx | 26 ++++++++++++++++--- .../src/app/[locale]/manage/medias/page.tsx | 7 ++--- .../[locale]/manage/search-engines/page.tsx | 7 ++--- .../app/[locale]/manage/users/groups/page.tsx | 7 ++--- packages/api/src/router/app.ts | 20 ++++++++++++++ packages/common/src/types.ts | 10 +++++++ packages/translation/src/lang/en.json | 1 + 7 files changed, 60 insertions(+), 18 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index f95882a56..5193166f3 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -6,7 +6,10 @@ import { IconBox, IconPencil } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; +import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; +import { SearchInput, TablePagination } from "@homarr/ui"; +import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; @@ -14,22 +17,35 @@ import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NoResults } from "~/components/no-results"; import { AppDeleteButton } from "./_app-delete-button"; -export default async function AppsPage() { +const searchParamsSchema = z.object({ + search: z.string().optional(), + pageSize: z.string().regex(/\d+/).transform(Number).catch(10), + page: z.string().regex(/\d+/).transform(Number).catch(1), +}); + +interface AppsPageProps { + searchParams: Promise>; +} + +export default async function AppsPage(props: AppsPageProps) { const session = await auth(); if (!session) { redirect("/auth/login"); } - const apps = await api.app.all(); + const searchParams = searchParamsSchema.parse(await props.searchParams); + + const { items: apps, totalCount } = await api.app.getPaginated(searchParams); const t = await getScopedI18n("app"); return ( + {t("page.list.title")} - {t("page.list.title")} + {session.user.permissions.includes("app-create") && ( {t("page.create.title")} @@ -44,6 +60,10 @@ export default async function AppsPage() { ))} )} + + + + ); diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index ed50a18ad..102e54cd8 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -7,6 +7,7 @@ import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; import { humanFileSize } from "@homarr/common"; +import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatar } from "@homarr/ui"; import { z } from "@homarr/validation"; @@ -29,12 +30,8 @@ const searchParamsSchema = z.object({ page: z.string().regex(/\d+/).transform(Number).catch(1), }); -type SearchParamsSchemaInputFromSchema> = Partial<{ - [K in keyof TSchema]: Exclude extends unknown[] ? string[] : string; -}>; - interface MediaListPageProps { - searchParams: Promise>>; + searchParams: Promise>; } export default async function GroupsListPage(props: MediaListPageProps) { diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index e7af60531..8caeefbe7 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -6,6 +6,7 @@ import { IconPencil, IconSearch } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; +import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination } from "@homarr/ui"; import { z } from "@homarr/validation"; @@ -22,12 +23,8 @@ const searchParamsSchema = z.object({ page: z.string().regex(/\d+/).transform(Number).catch(1), }); -type SearchParamsSchemaInputFromSchema> = Partial<{ - [K in keyof TSchema]: Exclude extends unknown[] ? string[] : string; -}>; - interface SearchEnginesPageProps { - searchParams: Promise>>; + searchParams: Promise>; } export default async function SearchEnginesPage(props: SearchEnginesPageProps) { diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx index 80c128c03..d1113bf4f 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx @@ -5,6 +5,7 @@ import { Anchor, Group, Stack, Table, TableTbody, TableTd, TableTh, TableThead, import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; import { auth } from "@homarr/auth/next"; +import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatarGroup } from "@homarr/ui"; import { z } from "@homarr/validation"; @@ -19,12 +20,8 @@ const searchParamsSchema = z.object({ page: z.string().regex(/\d+/).transform(Number).catch(1), }); -type SearchParamsSchemaInputFromSchema> = Partial<{ - [K in keyof TSchema]: Exclude extends unknown[] ? string[] : string; -}>; - interface GroupsListPageProps { - searchParams: Promise>>; + searchParams: Promise>; } export default async function GroupsListPage(props: GroupsListPageProps) { diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index da4184e89..5eb65804b 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -10,6 +10,26 @@ import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publ import { canUserSeeAppAsync } from "./app/app-access-control"; export const appRouter = createTRPCRouter({ + getPaginated: protectedProcedure + .input(validation.common.paginated) + .output(z.object({ items: z.array(selectAppSchema), totalCount: z.number() })) + .meta({ openapi: { method: "GET", path: "/api/apps/paginated", tags: ["apps"], protect: true } }) + .query(async ({ input, ctx }) => { + const whereQuery = input.search ? like(apps.name, `%${input.search.trim()}%`) : undefined; + const totalCount = await ctx.db.$count(apps, whereQuery); + + const dbApps = await ctx.db.query.apps.findMany({ + limit: input.pageSize, + offset: (input.page - 1) * input.pageSize, + where: whereQuery, + orderBy: asc(apps.name), + }); + + return { + items: dbApps, + totalCount, + }; + }), all: protectedProcedure .input(z.void()) .output(z.array(selectAppSchema)) diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index 1dcd019bc..e6b0621ff 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -1,3 +1,5 @@ +import type { z } from "zod"; + export type MaybePromise = T | Promise; export type AtLeastOneOf = [T, ...T[]]; @@ -16,3 +18,11 @@ export type Inverse = { }; type Invertible = Record; + +export type inferSearchParamsFromSchema = inferSearchParamsFromSchemaInner< + z.infer +>; + +type inferSearchParamsFromSchemaInner> = Partial<{ + [K in keyof TSchema]: Exclude extends unknown[] ? string[] : string; +}>; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 5e0754650..11cf49ac6 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "Find an app", "page": { "list": { "title": "Apps", From a160f16772839d3d20e8ab04b250b5c5e339059e Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 5 Jan 2025 00:48:20 +0000 Subject: [PATCH 176/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 18 + packages/translation/src/lang/cs.json | 26 +- packages/translation/src/lang/da.json | 18 + packages/translation/src/lang/de.json | 18 + packages/translation/src/lang/el.json | 18 + packages/translation/src/lang/es.json | 18 + packages/translation/src/lang/et.json | 18 + packages/translation/src/lang/fr.json | 18 + packages/translation/src/lang/he.json | 18 + packages/translation/src/lang/hr.json | 18 + packages/translation/src/lang/hu.json | 18 + packages/translation/src/lang/it.json | 18 + packages/translation/src/lang/ja.json | 18 + packages/translation/src/lang/ko.json | 18 + packages/translation/src/lang/lt.json | 18 + packages/translation/src/lang/lv.json | 18 + packages/translation/src/lang/nl.json | 18 + packages/translation/src/lang/no.json | 18 + packages/translation/src/lang/pl.json | 274 +-- packages/translation/src/lang/pt.json | 18 + packages/translation/src/lang/ro.json | 18 + packages/translation/src/lang/ru.json | 18 + packages/translation/src/lang/sk.json | 20 +- packages/translation/src/lang/sl.json | 18 + packages/translation/src/lang/sv.json | 18 + packages/translation/src/lang/tr.json | 20 +- packages/translation/src/lang/uk.json | 18 + packages/translation/src/lang/vi.json | 18 + packages/translation/src/lang/zh.json | 2522 +++++++++++++------------ 29 files changed, 1908 insertions(+), 1386 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 6bfa200b6..53dc68ea4 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "应用", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "此面板将显示为您的主面板" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "永久删除", "confirm": { diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index a3c7712fd..5df748e3f 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -36,7 +36,7 @@ }, "summary": { "title": "Přehled importu", - "description": "", + "description": "V následujícím přehledu můžete vidět, co bude importováno", "action": { "import": "Potvrdit import a pokračovat" }, @@ -88,7 +88,7 @@ }, "settings": { "title": "Nastavení", - "subtitle": "" + "subtitle": "Konfigurace nastavení serveru." }, "finish": { "title": "Dokončit nastavení", @@ -113,7 +113,7 @@ "subtitle": "Vítejte zpět! Zadejte prosím Vaše přihlašovací údaje" }, "invite": { - "title": "", + "title": "Připojit se k Homarrovi", "subtitle": "Vítejte v Homarru! Vytvořte si prosím svůj účet", "description": "Byli jste pozváni {username}" }, @@ -125,7 +125,7 @@ "field": { "email": { "label": "E-mail", - "verified": "" + "verified": "Ověřeno" }, "username": { "label": "Uživatelské jméno" @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplikace", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Trvale smazat", "confirm": { diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 20e1491d1..b429c6302 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Slet permanent", "confirm": { diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index e9a188f18..246dd0669 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Apps", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Dauerhaft löschen", "confirm": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index cce979434..cafc35a3d 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Εφαρμογές", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Οριστική διαγραφή", "confirm": { diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index d6a1419aa..cd92cd4b1 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplicaciones", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Eliminar permanentemente", "confirm": { diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index fcd6e1d09..41565301e 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "", "confirm": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index c0b186944..8a6c48ba0 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Applications", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Supprimer définitivement", "confirm": { diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index d31e6b2f2..c84129bb2 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "אפליקציות", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "מחיקה לצמיתות", "confirm": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index f78c4fce4..9b0a7c5fb 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "aplikacije", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Izbriši trajno", "confirm": { diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index d1d74ed35..727a6ce17 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Alkalmazások", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Végleges törlés", "confirm": { diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 0eaf3a837..854d547e7 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Applicazioni", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Elimina definitivamente", "confirm": { diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index ac57e8a0d..4ae9f65ec 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "アプリ", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "永久削除", "confirm": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 279e9da68..dd7b05c5f 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "앱", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "영구 삭제", "confirm": { diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index d7ca7ec58..a898bb9eb 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Programėlės", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Ištrinti visam laikui", "confirm": { diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 6ecae92c3..054a5d2f4 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Lietotnes", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Neatgriezeniski dzēst", "confirm": { diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 20a8f8b91..ed502e14a 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Apps", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "Dit bord wordt weergegeven als je home-bord" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Permanent verwijderen", "confirm": { diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 6a92b3006..a0a450d33 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Apper", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Slett permanent", "confirm": { diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 796dcc0a9..6dae0b902 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplikacje", @@ -698,7 +699,7 @@ "title": "Sekrety", "lastUpdated": "Data ostatniej aktualizacji: {date}", "notSet": { - "label": "", + "label": "Nie ustawiono wartości", "tooltip": "Ten wymagany sekret nie został jeszcze ustawiony" }, "secureNotice": "Ten sekret nie może zostać pobrany po utworzeniu", @@ -835,7 +836,7 @@ "placeholder": "Wybierz jedną lub więcej wartości" }, "multiText": { - "placeholder": "", + "placeholder": "Dodaj więcej wartości", "addLabel": "Dodaj {value}" }, "select": { @@ -982,7 +983,7 @@ }, "field": { "integrations": { - "label": "" + "label": "Integracje" }, "customCssClasses": { "label": "Niestandardowe klasy CSS" @@ -1157,26 +1158,26 @@ }, "minecraftServerStatus": { "name": "Status serwera Minecraft", - "description": "", + "description": "Wyświetla status serwera Minecraft", "option": { "title": { - "label": "" + "label": "Tytuł" }, "domain": { - "label": "" + "label": "Adres serwera" }, "isBedrockServer": { - "label": "" + "label": "Serwer Bedrock" } }, "status": { - "online": "", - "offline": "" + "online": "Dostępny", + "offline": "Niedostępny" } }, "notebook": { "name": "Notatnik", - "description": "", + "description": "Prosty widżet notatnika obsługujący markdown", "option": { "showToolbar": { "label": "Pokaż pasek narzędzi ułatwiający pisanie w markdown" @@ -1236,7 +1237,7 @@ } }, "iframe": { - "name": "", + "name": "iFrame", "description": "Osadzaj dowolne treści z internetu. Niektóre strony internetowe mogą ograniczać dostęp.", "option": { "embedUrl": { @@ -1268,31 +1269,31 @@ } }, "error": { - "noUrl": "", + "noUrl": "Adres URL iFrame nie został podany", "noBrowerSupport": "Twoja przeglądarka nie obsługuje ramek iframe. Zaktualizuj przeglądarkę." } }, "smartHome-entityState": { - "name": "", - "description": "", + "name": "Stan obiektu", + "description": "Wyświetl stan obiektu i przełącz go opcjonalnie", "option": { "entityId": { "label": "ID obiektu" }, "displayName": { - "label": "" + "label": "Wyświetlana nazwa" }, "entityUnit": { - "label": "" + "label": "Jednostka" }, "clickable": { - "label": "" + "label": "Element klikalny" } } }, "smartHome-executeAutomation": { - "name": "", - "description": "", + "name": "Wykonaj automatyzację", + "description": "Uruchom automatyzację jednym kliknięciem", "option": { "displayName": { "label": "Nazwa wyświetlana" @@ -1302,26 +1303,26 @@ } }, "spotlightAction": { - "run": "" + "run": "Uruchom {name}" } }, "calendar": { "name": "Kalendarz", - "description": "", + "description": "Wyświetlaj zdarzenia z integracji w widoku kalendarza w określonym okresie czasowym", "option": { "releaseType": { "label": "Rodzaj premiery w Radarr", "options": { - "inCinemas": "", - "digitalRelease": "", - "physicalRelease": "" + "inCinemas": "W kinach", + "digitalRelease": "Wydanie cyfrowe", + "physicalRelease": "Wydanie fizyczne" } }, "filterPastMonths": { - "label": "" + "label": "Początek od" }, "filterFutureMonths": { - "label": "" + "label": "Koniec o" } } }, @@ -1330,24 +1331,24 @@ "description": "Wyświetla aktualne informacje o pogodzie w ustawionej lokalizacji.", "option": { "isFormatFahrenheit": { - "label": "" + "label": "Temperatura w Fahrenheit" }, "location": { "label": "Lokalizacja pogody" }, "showCity": { - "label": "" + "label": "Pokaż miasto" }, "hasForecast": { - "label": "" + "label": "Pokaż Prognozę" }, "forecastDayCount": { - "label": "", - "description": "" + "label": "Liczba dni prognozy", + "description": "Kiedy widżet nie jest wystarczająco szeroki, mniej dni jest wyświetlane" }, "dateFormat": { - "label": "", - "description": "" + "label": "Format daty", + "description": "Jak powinna wyglądać data" } }, "kind": { @@ -1368,72 +1369,72 @@ } }, "indexerManager": { - "name": "", - "description": "", + "name": "Status menedżera indeksu", + "description": "Status Twoich indeksów", "option": { "openIndexerSiteInNewTab": { - "label": "" + "label": "Otwórz stronę indeksującą w nowej karcie" } }, - "title": "", - "testAll": "", + "title": "Menedżer indeksów", + "testAll": "Przetestuj wszystkie", "error": { - "internalServerError": "" + "internalServerError": "Nie udało się pobrać statusu indeksów" } }, "healthMonitoring": { - "name": "", - "description": "", + "name": "Monitorowanie zdrowia systemu", + "description": "Wyświetla informacje o stanie Twojego systemu(ów).", "option": { "fahrenheit": { - "label": "" + "label": "Temperatura procesora w Fahrenheit" }, "cpu": { - "label": "" + "label": "Pokaż informacje o procesorze" }, "memory": { - "label": "" + "label": "Pokaż informacje o pamięci" }, "fileSystem": { - "label": "" + "label": "Pokaż informacje o systemie plików" } }, "popover": { - "information": "", - "processor": "", - "memory": "", - "memoryAvailable": "", - "version": "", + "information": "Informacja", + "processor": "Procesor: {cpuModelName}", + "memory": "Pamięć: {memory}GiB", + "memoryAvailable": "Dostępna pamięć {memoryAvailable} GB ({percent}%)", + "version": "Wersja: {version}", "uptime": "", - "loadAverage": "", - "minute": "", - "minutes": "", - "used": "", - "available": "", - "lastSeen": "" + "loadAverage": "Średnie obciążenie", + "minute": "1 minuta", + "minutes": "{count} minut", + "used": "Używane", + "available": "Dostępne", + "lastSeen": "Ostatnia aktualizacja statusu: {lastSeen}" }, "memory": {}, "error": { - "internalServerError": "" + "internalServerError": "Nie udało się pobrać stanu zdrowia" } }, "common": { "location": { - "query": "", - "latitude": "", - "longitude": "", - "disabledTooltip": "", - "unknownLocation": "", + "query": "Miasto / kod pocztowy", + "latitude": "Szerokość geograficzna (Latitude)", + "longitude": "Długość geograficzna (Longitude)", + "disabledTooltip": "Podaj miasto lub kod pocztowy.", + "unknownLocation": "Nieznana lokalizacja", "search": "Szukaj", "table": { "header": { - "city": "", - "country": "", - "coordinates": "", - "population": "" + "city": "Miasto", + "country": "Kraj", + "coordinates": "Współrzędne", + "population": "Populacja" }, "action": { - "select": "" + "select": "Wybierz {city}, {countryCode}" }, "population": { "fallback": "Nieznany" @@ -1441,16 +1442,16 @@ } }, "integration": { - "noData": "", - "description": "" + "noData": "Nie znaleziono integracji", + "description": "Kliknij aby utworzyć nową integrację" }, "app": { - "noData": "", - "description": "" + "noData": "Nie znaleziono aplikacji", + "description": "Kliknij aby utworzyć nową aplikację" }, "error": { - "noIntegration": "", - "noData": "" + "noIntegration": "Nie wybrano integracji", + "noData": "Brak danych dotyczących integracji" }, "option": {} }, @@ -1463,79 +1464,79 @@ }, "hasAutoPlay": { "label": "Autoodtwarzanie", - "description": "" + "description": "Automatyczne odtwarzanie działa tylko po wyciszeniu odtwarzacza z powodu ograniczeń przeglądarki" }, "isMuted": { - "label": "" + "label": "Wyciszono" }, "hasControls": { - "label": "" + "label": "Pokaż klawisze nawigacyjne" } }, "error": { - "noUrl": "", - "forYoutubeUseIframe": "" + "noUrl": "Nie podano adresu URL wideo", + "forYoutubeUseIframe": "Dla filmów YouTube użyj opcji iframe" } }, "mediaServer": { - "name": "", - "description": "", + "name": "Bieżące strumienie serwera multimediów", + "description": "Pokaż bieżące strumienie na serwerach multimedialnych", "option": {}, "items": { - "user": "", - "name": "", - "id": "" + "user": "Użytkownik", + "name": "Nazwa", + "id": "ID" } }, "downloads": { - "name": "", - "description": "", + "name": "Klient pobierania", + "description": "Pozwala na oglądanie i zarządzanie pobieraniem zarówno przez klientów Torrent, jak i Usenet.", "option": { "columns": { - "label": "" + "label": "Kolumny do pokazania" }, "enableRowSorting": { - "label": "" + "label": "Włącz sortowanie przedmiotów" }, "defaultSort": { - "label": "" + "label": "Kolumna używana do sortowania domyślnie" }, "descendingDefaultSort": { - "label": "" + "label": "Odwróć sortowanie" }, "showCompletedUsenet": { - "label": "" + "label": "Pokaż wpisy usenet oznaczone jako zakończone" }, "showCompletedTorrent": { - "label": "" + "label": "Pokaż wpisy torrent oznaczone jako ukończone" }, "activeTorrentThreshold": { - "label": "" + "label": "Ukryj ukończony torrent poniżej tego progu (w kiB/s)" }, "categoryFilter": { - "label": "" + "label": "Kategorie/etykiety do filtrowania" }, "filterIsWhitelist": { - "label": "" + "label": "Filtruj jako białą listę" }, "applyFilterToRatio": { - "label": "" + "label": "Użyj filtra do obliczenia współczynnika" } }, "errors": { - "noColumns": "", - "noCommunications": "" + "noColumns": "Wybierz kolumny w elementach", + "noCommunications": "Nie można załadować danych z integracji" }, "items": { "actions": { - "columnTitle": "" + "columnTitle": "Sterowanie" }, "added": { - "columnTitle": "", + "columnTitle": "Dodano", "detailsTitle": "Data dodania" }, "category": { - "columnTitle": "", + "columnTitle": "Dodatki", "detailsTitle": "" }, "downSpeed": { @@ -1543,66 +1544,66 @@ "detailsTitle": "Prędkość pobierania" }, "index": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "#", + "detailsTitle": "Bieżący indeks w ramach klienta" }, "id": { - "columnTitle": "" + "columnTitle": "ID" }, "integration": { "columnTitle": "Integracja" }, "name": { - "columnTitle": "" + "columnTitle": "Nazwa zlecenia" }, "progress": { "columnTitle": "Postęp", - "detailsTitle": "" + "detailsTitle": "Postęp pobierania" }, "ratio": { "columnTitle": "Proporcja", - "detailsTitle": "" + "detailsTitle": "Współczynnik torrenta (otrzymany/wysłany)" }, "received": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Łączne pobieranie", + "detailsTitle": "Łącznie pobrano" }, "sent": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Łączne wysyłanie", + "detailsTitle": "Łącznie wysłano" }, "size": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Rozmiar pliku", + "detailsTitle": "Całkowity rozmiar zaznaczenia/plików" }, "state": { "columnTitle": "Status", - "detailsTitle": "" + "detailsTitle": "Stan pracy" }, "time": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Czas zakończenia", + "detailsTitle": "Czas od/do zakończenia" }, "type": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Typ", + "detailsTitle": "Pobierz typ klienta" }, "upSpeed": { "columnTitle": "Udostępnianie", - "detailsTitle": "" + "detailsTitle": "Prędkość wysyłania" } }, "states": { "downloading": "Pobieranie", - "queued": "", + "queued": "W kolejce", "paused": "Zatrzymane", "completed": "Zakończono", - "failed": "", - "processing": "", - "leeching": "", - "stalled": "", + "failed": "Nieudane", + "processing": "Przetwarzanie", + "leeching": "Leeching", + "stalled": "Zatrzymano", "unknown": "Nieznany", - "seeding": "" + "seeding": "Wysyłanie" }, "actions": { "clients": { @@ -1689,7 +1690,7 @@ }, "currentIndex": "", "healthCheck": { - "title": "", + "title": "Ocena stanu zdrowia", "queued": "", "status": { "healthy": "", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -1800,7 +1815,7 @@ "description": "" }, "onlyImportApps": { - "label": "", + "label": "Import tylko aplikacje", "description": "" } }, @@ -1928,7 +1943,7 @@ "metaTitle": "" }, "setting": { - "title": "", + "title": "Ustawienia tablicy {boardName}", "section": { "general": { "title": "Ogólne", @@ -1986,7 +2001,7 @@ "confirm": { "public": { "title": "", - "description": "" + "description": "Czy na pewno chcesz sprawić, by ta tablica była prywatna? Tablica nie będzie publiczna. Linki dla gości nie będą działać." }, "private": { "title": "", @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Usuń trwale", "confirm": { diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 0bc16005b..24d42bd01 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplicativos", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Excluir permanentemente", "confirm": { diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 0b9244d47..dacb9a45a 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplicații", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Șterge definitiv", "confirm": { diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 51110f68e..7ad5842f3 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Приложения", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "Эта панель будет показываться как ваша домашняя панель" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Удалить навсегда", "confirm": { diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 1f7447e38..3b43578f9 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplikácie", @@ -615,7 +616,7 @@ }, "attemptSearchEngineCreation": { "label": "Vytvorte vyhľadávače", - "description": "" + "description": "Integrácia \"{kind}\" môže byť použitá s vyhľadávačmi. Toto začiarknite, ak chcete automaticky nakonfigurovať vyhľadávací nástroj." } }, "action": { @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "Duplikovať dosku", + "message": "", + "notification": { + "success": { + "title": "", + "message": "Doska bola úspešne duplikovaná" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "Táto tabuľa sa zobrazí ako vaša domovská tabuľa" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Odstrániť natrvalo", "confirm": { diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index f7ec5401b..8399301e4 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Aplikacije", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Trajno izbriši", "confirm": { diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index b7ec6e965..2c6f1cbf0 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Appar", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Radera permanent", "confirm": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 3cae5879f..2fd13f30f 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Uygulamalar", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "Bu panel sizin öntanımlı paneliniz olarak görüntülenecektir" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Kalıcı olarak sil", "confirm": { @@ -2648,7 +2666,7 @@ } }, "search": { - "placeholder": "Ara (\"!\" İle Başlamalı)", + "placeholder": "Aramak için yaz", "nothingFound": "Hiçbir şey bulunamadı", "error": { "fetch": "Veriler alınırken bir hata oluştu" diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 70f32201f..9eaeb7378 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Додатки", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Видалити назавжди", "confirm": { diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index ca5198343..adb300520 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -489,6 +489,7 @@ } }, "app": { + "search": "", "page": { "list": { "title": "Ứng dụng", @@ -1760,6 +1761,20 @@ }, "board": { "action": { + "duplicate": { + "title": "", + "message": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + } + }, "edit": { "notification": { "success": { @@ -2125,6 +2140,9 @@ "tooltip": "" } }, + "duplicate": { + "label": "" + }, "delete": { "label": "Xóa vĩnh viễn", "confirm": { diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index aea4140da..ea4d02a4d 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -2,259 +2,259 @@ "init": { "step": { "start": { - "title": "", - "subtitle": "", - "description": "", + "title": "歡迎使用 Homarr", + "subtitle": "讓我們開始設定 Homarr", + "description": "請選擇設定 Homarr 方式", "action": { - "scratch": "", - "importOldmarr": "" + "scratch": "重新開始", + "importOldmarr": "從 1.0 版本的 Homarr 匯入設定" } }, "import": { - "title": "", - "subtitle": "", + "title": "匯入數據", + "subtitle": "從現有的 Homarr 匯入數據", "dropzone": { - "title": "", - "description": "" + "title": "將 ZIP 壓縮檔拖曳至此處或點擊瀏覽", + "description": "上傳的壓縮檔將被處理,您可以選擇要匯入的內容" }, "fileInfo": { "action": { - "change": "" + "change": "更改檔案" } }, "importSettings": { - "title": "", - "description": "" + "title": "匯入設定", + "description": "設定匯入方式" }, "boardSelection": { - "title": "", - "description": "", + "title": "找到 {count} 個面板", + "description": "選擇要匯入的面板", "action": { - "selectAll": "", - "unselectAll": "" + "selectAll": "選擇全部", + "unselectAll": "取消全選" } }, "summary": { - "title": "", - "description": "", + "title": "匯入概況", + "description": "於下方的概況中,可以看到即將匯入的內容", "action": { - "import": "" + "import": "確認匯入並繼續" }, "entities": { - "apps": "", - "boards": "", - "integrations": "", - "credentialUsers": "" + "apps": "應用程式", + "boards": "面板", + "integrations": "集成", + "credentialUsers": "使用者憑證" } }, "tokenModal": { - "title": "", + "title": "輸入匯入密鑰", "field": { "token": { - "label": "", - "description": "" + "label": "密鑰", + "description": "輸入之前 Homarr 中顯示導入之密鑰匙" } }, "notification": { "error": { - "title": "", - "message": "" + "title": "無效密鑰", + "message": "輸入的密鑰無效" } } } }, "user": { - "title": "", - "subtitle": "", + "title": "管理員", + "subtitle": "指定管理員的使用者憑證", "notification": { "success": { - "title": "", - "message": "" + "title": "創建使用者", + "message": "使用者已成功創建" }, "error": { - "title": "" + "title": "使用者創建失敗" } } }, "group": { - "title": "", - "subtitle": "", + "title": "外部使用者", + "subtitle": "指定用於外部使用者的用戶組", "form": { "name": { - "label": "", - "description": "" + "label": "用戶組名稱", + "description": "名稱必須與外部提供者的管理員匹配" } } }, "settings": { - "title": "", - "subtitle": "" + "title": "設定", + "subtitle": "設定伺服器的設定" }, "finish": { - "title": "", - "subtitle": "", - "description": "", + "title": "設定完成", + "subtitle": "已設定完成", + "description": "已成功完成設定,開始使用 Homarr,請選擇下一步操作", "action": { - "goToBoard": "", - "createBoard": "", - "inviteUser": "", - "docs": "" + "goToBoard": "進入 {name} 面板", + "createBoard": "創建第一個面板", + "inviteUser": "邀請其他使用者", + "docs": "閱讀說明書" } } }, - "backToStart": "" + "backToStart": "返回起點" }, "user": { - "title": "", - "name": "", + "title": "使用者", + "name": "使用者", "page": { "login": { - "title": "", - "subtitle": "" + "title": "登入帳戶", + "subtitle": "歡迎回來!請輸入憑證" }, "invite": { - "title": "", - "subtitle": "", - "description": "" + "title": "加入 Homarr", + "subtitle": "歡迎來到 Homarr!請創建帳戶", + "description": "您受到 {username} 的邀請" }, "init": { - "title": "", - "subtitle": "" + "title": "新建 Homarr 安裝", + "subtitle": "請創建初始管理員" } }, "field": { "email": { - "label": "", - "verified": "" + "label": "E-Mail", + "verified": "已驗證" }, "username": { - "label": "" + "label": "使用者名稱" }, "password": { - "label": "", + "label": "密碼", "requirement": { - "length": "", - "lowercase": "", - "uppercase": "", - "number": "", - "special": "" + "length": "至少包含 8 個字符", + "lowercase": "包含小寫字母", + "uppercase": "包含大寫字母", + "number": "包含數字", + "special": "包含特殊符號" } }, "passwordConfirm": { - "label": "" + "label": "確認密碼" }, "previousPassword": { - "label": "" + "label": "以前的密碼" }, "homeBoard": { - "label": "" + "label": "主面板" }, "pingIconsEnabled": { - "label": "" + "label": "為 Pings 使用 icon" } }, "error": { - "usernameTaken": "" + "usernameTaken": "使用者名稱已存在" }, "action": { "login": { - "label": "", - "labelWith": "", + "label": "登入", + "labelWith": "使用 {provider} 登入", "notification": { "success": { - "title": "", - "message": "" + "title": "登入成功", + "message": "您已登入" }, "error": { - "title": "", - "message": "" + "title": "登入失敗", + "message": "您已登入失敗" } }, "forgotPassword": { - "label": "", - "description": "" + "label": "忘記密碼嗎?", + "description": "管理員可以使用已下命令重設密碼" } }, "register": { - "label": "", + "label": "創建帳戶", "notification": { "success": { - "title": "", - "message": "" + "title": "帳戶已創建", + "message": "請登入後繼續" }, "error": { - "title": "", - "message": "" + "title": "帳戶創建失敗", + "message": "無法創建帳戶" } } }, - "create": "", + "create": "創建使用者", "changePassword": { - "label": "", + "label": "更改密碼", "notification": { "success": { - "message": "" + "message": "密碼已成功更改" }, "error": { - "message": "" + "message": "無法更改密碼" } } }, "changeHomeBoard": { "notification": { "success": { - "message": "" + "message": "主面板已更改成功" }, "error": { - "message": "" + "message": "無法更改主面板" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "成功修改一周的第一天" }, "error": { - "message": "" + "message": "無法修改一周的第一天" } } }, "changePingIconsEnabled": { "notification": { "success": { - "message": "" + "message": "Pings icon 切換成功" }, "error": { - "message": "" + "message": "無法切換 Pings icon" } } }, "manageAvatar": { "changeImage": { - "label": "", + "label": "更改圖案", "notification": { "success": { - "message": "" + "message": "圖案修改成功" }, "error": { - "message": "" + "message": "無法更改圖案" }, "toLarge": { - "title": "", - "message": "" + "title": "圖案太大", + "message": "最大圖案尺寸為 {size}" } } }, "removeImage": { - "label": "", - "confirm": "", + "label": "移除圖案", + "confirm": "確認要移除圖案嗎?", "notification": { "success": { - "message": "" + "message": "圖案移除成功" }, "error": { - "message": "" + "message": "無法移除圖案" } } } @@ -262,633 +262,634 @@ "editProfile": { "notification": { "success": { - "message": "" + "message": "數據更新成功" }, "error": { - "message": "" + "message": "數據無法更新" } } }, "delete": { - "label": "", - "description": "", - "confirm": "" + "label": "永久移除使用者", + "description": "移除此使用者,包括其偏好設定,這不會移除任何面板,且用戶不會收到通知", + "confirm": "你確認移除使用者 {username} 及其偏好設定嗎?" }, "select": { - "label": "", - "notFound": "" + "label": "選擇使用者", + "notFound": "使用者不存在" }, "transfer": { - "label": "" + "label": "選擇新所有者" } } }, "group": { - "title": "", - "name": "", - "search": "", + "title": "用戶組", + "name": "組", + "search": "查找用戶組", "field": { - "name": "", - "members": "" + "name": "名稱", + "members": "成員" }, "permission": { "admin": { - "title": "", + "title": "管理員", "item": { "admin": { - "label": "", - "description": "" + "label": "管理員", + "description": "擁有此權限的使用者可完全訪問全部功能和設定" } } }, "app": { - "title": "", + "title": "應用程式", "item": { "create": { - "label": "", - "description": "" + "label": "創建應用程式", + "description": "允許成員創建應用程式" }, "use-all": { - "label": "", - "description": "" + "label": "使用全部應用程式", + "description": "允許成員修改全部應用程式" }, "modify-all": { - "label": "", - "description": "" + "label": "修改全部應用程式", + "description": "允許成員修改全部應用程式" }, "full-all": { - "label": "", - "description": "" + "label": "完整應用程式權限", + "description": "允許成員修改全部應用程式" } } }, "board": { - "title": "", + "title": "面板", "item": { "create": { - "label": "", - "description": "" + "label": "創建面板", + "description": "允許成員創建面板" }, "view-all": { - "label": "", - "description": "" + "label": "查看全部面板", + "description": "允許成員查看全部面板" }, "modify-all": { - "label": "", - "description": "" + "label": "修改全部面板", + "description": "允許成員修改全部面板,不包括訪問控制和危險區域" }, "full-all": { - "label": "", - "description": "" + "label": "完整面板權限", + "description": "允許成員查看、修改和移除全部面板,包括訪問控制和危險區域" } } }, "integration": { - "title": "", + "title": "集成", "item": { "create": { - "label": "", - "description": "" + "label": "創建集成", + "description": "允許成員創建集成" }, "use-all": { - "label": "", - "description": "" + "label": "使用全部集成", + "description": "允許成員將任何應用程式新增至他們的面板" }, "interact-all": { - "label": "", - "description": "" + "label": "與任何集成進行互動", + "description": "允許成員與任何集成進行交互" }, "full-all": { - "label": "", - "description": "" + "label": "完整的集成訪問權限", + "description": "允許成員管理、使用並與任何集成交互" } } }, "media": { - "title": "", + "title": "多媒體", "item": { "upload": { - "label": "", - "description": "" + "label": "上傳多媒體", + "description": "允許成員上傳多媒體" }, "view-all": { - "label": "", - "description": "" + "label": "查看全部多媒體", + "description": "允許成員查看全部多媒體" }, "full-all": { - "label": "", - "description": "" + "label": "圖案移除成功", + "description": "允許使用者管理、使用、移除任何應用" } } }, "other": { - "title": "", + "title": "其他", "item": { "view-logs": { - "label": "", - "description": "" + "label": "檢視 Logs", + "description": "允許使用者檢視 Logs" } } }, "search-engine": { - "title": "", + "title": "搜尋引擎", "item": { "create": { - "label": "", - "description": "" + "label": "創建搜尋引擎", + "description": "允許使用者創建搜尋引擎" }, "modify-all": { - "label": "", - "description": "" + "label": "修改全部搜尋引擎", + "description": "允許使用者修改全部搜尋引擎" }, "full-all": { - "label": "", - "description": "" + "label": "完整搜尋引擎的訪問權限", + "description": "允許使用者管理、移除任何搜尋引擎" } } } }, "memberNotice": { - "mixed": "", - "external": "" + "mixed": "部分使用者來自外部提供者,無法在此處管理", + "external": "全部成員都來自外部提供者,無法在此處管理" }, "reservedNotice": { - "message": "" + "message": "此用戶組保留供系統使用並限制部分操作 " }, "action": { "create": { - "label": "", + "label": "創建用戶組", "notification": { "success": { - "message": "" + "message": "用戶組已創建成功" }, "error": { - "message": "" + "message": "用戶組創建失敗" } } }, "transfer": { - "label": "", - "description": "", - "confirm": "", + "label": "移轉所有權", + "description": "將此用戶組的所有權移轉至其他用戶", + "confirm": "確認將用戶組 {name} 的所有權移轉至 {username} 嗎?", "notification": { "success": { - "message": "" + "message": "將用戶組 {group} 的所有權移轉至 {user} 成功" }, "error": { - "message": "" + "message": "無法移轉所有權" } } }, "addMember": { - "label": "" + "label": "新增成員" }, "removeMember": { - "label": "", - "confirm": "" + "label": "移除成員", + "confirm": "確認將 {user} 移除此用戶組嗎?" }, "delete": { - "label": "", - "description": "", - "confirm": "", + "label": "移除用戶組", + "description": "用戶組一旦刪除將無法恢復,請謹慎操作", + "confirm": "確認移除用戶組 {name} 嗎?", "notification": { "success": { - "message": "" + "message": "移除用戶組 {name} 成功" }, "error": { - "message": "" + "message": "無法移除用戶組 {name}" } } }, "changePermissions": { "notification": { "success": { - "title": "", - "message": "" + "title": "權限已儲存", + "message": "權限已儲存成功" }, "error": { - "title": "", - "message": "" + "title": "權限未儲存", + "message": "權限尚未儲存" } } }, "update": { "notification": { "success": { - "message": "" + "message": "用戶組 {name} 已儲存成功" }, "error": { - "message": "" + "message": "無法儲存用戶組 {name}" } } }, "select": { - "label": "", - "notFound": "" + "label": "選擇用戶組", + "notFound": "用戶組不存在" } } }, "app": { + "search": "", "page": { "list": { - "title": "", + "title": "應用程式", "noResults": { - "title": "", - "action": "" + "title": "尚無應用程式", + "action": "創建第一個應用程式" } }, "create": { - "title": "", + "title": "創建應用程式", "notification": { "success": { - "title": "", - "message": "" + "title": "創建成功", + "message": "應用程式已創建成功" }, "error": { - "title": "", - "message": "" + "title": "創建失敗", + "message": "應用程式無法創建" } } }, "edit": { - "title": "", + "title": "修改應用程式", "notification": { "success": { - "title": "", - "message": "" + "title": "應用程式修改成功", + "message": "應用程式儲存成功" }, "error": { - "title": "", - "message": "" + "title": "無法更改", + "message": "應用程式無法儲存" } } }, "delete": { - "title": "", - "message": "", + "title": "移除應用程式", + "message": "確認移除此應用程式 {name} 嗎?", "notification": { "success": { - "title": "", - "message": "" + "title": "移除成功", + "message": "應用程式已移除成功" }, "error": { - "title": "", - "message": "" + "title": "移除失敗", + "message": "無法移除應用程式" } } } }, "field": { "name": { - "label": "" + "label": "名稱" }, "description": { - "label": "" + "label": "描述" }, "url": { - "label": "" + "label": "網址" } }, "action": { "select": { - "label": "", - "notFound": "" + "label": "選擇應用程式", + "notFound": "應用程式不存在" } } }, "integration": { "page": { "list": { - "title": "", - "search": "", + "title": "集成", + "search": "選擇集成", "noResults": { - "title": "" + "title": "尚無集成" } }, "create": { - "title": "", + "title": "創建 {name} 集成", "notification": { "success": { - "title": "", - "message": "" + "title": "創建成功", + "message": "集成創建成功" }, "error": { - "title": "", - "message": "" + "title": "創建失敗", + "message": "此集成無法被創建" } } }, "edit": { - "title": "", + "title": "修改 {name} 集成", "notification": { "success": { - "title": "", - "message": "" + "title": "修改成功", + "message": "集成已儲存成功" }, "error": { - "title": "", - "message": "" + "title": "無法應用變更", + "message": "集成無法被儲存" } } }, "delete": { - "title": "", - "message": "", + "title": "移除集成", + "message": "確認移除集成 {name} 嗎?", "notification": { "success": { - "title": "", - "message": "" + "title": "移除成功", + "message": "集成移除成功" }, "error": { - "title": "", - "message": "" + "title": "移除失敗", + "message": "集成移除失敗" } } } }, "field": { "name": { - "label": "" + "label": "名稱" }, "url": { - "label": "" + "label": "網址" }, "attemptSearchEngineCreation": { - "label": "", - "description": "" + "label": "創建搜尋引擎", + "description": "集成 {kind} 可以與搜尋引擎共同使用,勾選此選項可自動設定搜尋引擎" } }, "action": { - "create": "" + "create": "創建集成" }, "testConnection": { "action": { - "create": "", - "edit": "" + "create": "測試連線並創建", + "edit": "測試連線並儲存" }, - "alertNotice": "", + "alertNotice": "成功建立連線後儲存按鈕將啟用", "notification": { "success": { - "title": "", - "message": "" + "title": "連線成功", + "message": "已成功建立連線" }, "invalidUrl": { - "title": "", - "message": "" + "title": "無效網址", + "message": "此網址無效" }, "secretNotDefined": { - "title": "", - "message": "" + "title": "缺少憑證", + "message": "並非全部憑證都已提供" }, "invalidCredentials": { - "title": "", - "message": "" + "title": "無效憑證", + "message": "憑證無效" }, "commonError": { - "title": "", - "message": "" + "title": "連線失敗", + "message": "無法建立連線" }, "badRequest": { - "title": "", - "message": "" + "title": "錯誤請求", + "message": "請求格式不正確" }, "unauthorized": { - "title": "", - "message": "" + "title": "未授權", + "message": "可能是錯誤的憑證" }, "forbidden": { - "title": "", - "message": "" + "title": "禁止", + "message": "可能缺少權限" }, "notFound": { - "title": "", - "message": "" + "title": "不存在", + "message": "可能是錯誤的網址或路徑" }, "internalServerError": { - "title": "", - "message": "" + "title": "伺服器內部錯誤", + "message": "伺服器遇到錯誤" }, "serviceUnavailable": { - "title": "", - "message": "" + "title": "服務暫時不可用", + "message": "伺服器當前不可用" }, "connectionAborted": { - "title": "", - "message": "" + "title": "連線終止", + "message": "連線被終止" }, "domainNotFound": { - "title": "", - "message": "" + "title": "網域不存在", + "message": "網域不存在" }, "connectionRefused": { - "title": "", - "message": "" + "title": "連線拒絕", + "message": "連線被拒絕" }, "invalidJson": { - "title": "", - "message": "" + "title": "無效的 JSON", + "message": "無效的 JSON 回應" }, "wrongPath": { - "title": "", - "message": "" + "title": "路徑錯誤", + "message": "路徑可能是錯誤" } } }, "secrets": { - "title": "", - "lastUpdated": "", + "title": "密鑰", + "lastUpdated": "最後更新於 {date}", "notSet": { - "label": "", - "tooltip": "" + "label": "未設定值", + "tooltip": "尚未設定此必填的密鑰" }, - "secureNotice": "", + "secureNotice": "創建後無法再次取得此密鑰", "reset": { - "title": "", - "message": "" + "title": "重設密鑰", + "message": "確認重設密鑰嗎?" }, "noSecretsRequired": { - "segmentTitle": "", - "text": "" + "segmentTitle": "無密鑰", + "text": "此集成無需密鑰" }, "kind": { "username": { - "label": "", - "newLabel": "" + "label": "使用者名稱", + "newLabel": "新使用者名稱" }, "apiKey": { - "label": "", - "newLabel": "" + "label": "API Key", + "newLabel": "新 API Key" }, "password": { - "label": "", - "newLabel": "" + "label": "密碼", + "newLabel": "新密碼" } } }, "permission": { - "use": "", - "interact": "", - "full": "" + "use": "選擇項目中的集成", + "interact": "與集成進行互動", + "full": "完整的集成訪問權限" } }, "media": { - "plural": "", - "search": "", + "plural": "多媒體", + "search": "查找多媒體", "field": { - "name": "", - "size": "", - "creator": "" + "name": "名稱", + "size": "大小", + "creator": "創建者" }, "action": { "upload": { - "label": "", - "file": "", + "label": "上傳多媒體", + "file": "選擇檔案", "notification": { "success": { - "message": "" + "message": "多媒體已上傳成功" }, "error": { - "message": "" + "message": "多媒體無法上傳" } } }, "delete": { - "label": "", - "description": "", + "label": "移除多媒體", + "description": "確認移除多媒體 嗎?", "notification": { "success": { - "message": "" + "message": "多媒體已移除成功" }, "error": { - "message": "" + "message": "多媒體無法移除" } } }, "copy": { - "label": "" + "label": "複製網址" } } }, "common": { - "beta": "", - "error": "", + "beta": "測試版", + "error": "錯誤", "action": { - "add": "", - "apply": "", - "backToOverview": "", - "create": "", - "edit": "", - "import": "", - "insert": "", - "remove": "", - "save": "", - "saveChanges": "", - "cancel": "", - "delete": "", - "discard": "", - "confirm": "", - "continue": "", - "previous": "", - "next": "", - "checkoutDocs": "", - "checkLogs": "", - "tryAgain": "", - "loading": "" + "add": "新增", + "apply": "應用", + "backToOverview": "返回總覽", + "create": "創建", + "edit": "修改", + "import": "匯入", + "insert": "插入", + "remove": "移除", + "save": "儲存", + "saveChanges": "儲存變更", + "cancel": "取消", + "delete": "移除", + "discard": "丟棄", + "confirm": "確認", + "continue": "繼續", + "previous": "上一步", + "next": "下一步", + "checkoutDocs": "查閱說明書", + "checkLogs": "檢查 Logs 以取得更多詳情", + "tryAgain": "重試", + "loading": "正在讀取" }, - "here": "", + "here": "此處", "iconPicker": { - "label": "", - "header": "" + "label": "Icon 網址", + "header": "輸入名稱或物件來篩選 icons,Homarr 會自動搜尋 {countIcons}" }, "colorScheme": { "options": { - "light": "", - "dark": "" + "light": "日間", + "dark": "暗黑" } }, "information": { - "min": "", - "max": "", - "days": "", - "hours": "", - "minutes": "" + "min": "最小", + "max": "最大", + "days": "天", + "hours": "時", + "minutes": "分" }, "notification": { "create": { - "success": "", - "error": "" + "success": "創建成功", + "error": "創建失敗" }, "delete": { - "success": "", - "error": "" + "success": "移除成功", + "error": "移除失敗" }, "update": { - "success": "", - "error": "" + "success": "應用變更成功", + "error": "無法應用變更" }, "transfer": { - "success": "", - "error": "" + "success": "移轉成功", + "error": "移轉失敗" } }, "multiSelect": { - "placeholder": "" + "placeholder": "選擇一個或多個值" }, "multiText": { - "placeholder": "", - "addLabel": "" + "placeholder": "新增更多值", + "addLabel": "新增 {value}" }, "select": { - "placeholder": "", + "placeholder": "選擇值", "badge": { - "recommended": "" + "recommended": "建議" } }, "userAvatar": { "menu": { - "switchToDarkMode": "", - "switchToLightMode": "", - "management": "", - "preferences": "", - "logout": "", - "login": "", - "homeBoard": "", - "loggedOut": "", - "updateAvailable": "" + "switchToDarkMode": "切換至暗黑模式", + "switchToLightMode": "切換至日間模式", + "management": "管理中心", + "preferences": "偏好設定", + "logout": "登出", + "login": "登入", + "homeBoard": "首頁", + "loggedOut": "已登出", + "updateAvailable": "{countUpdates} 可用更新:{tag}" } }, - "dangerZone": "", - "noResults": "", + "dangerZone": "危險區域", + "noResults": "未找到結果", "preview": { - "show": "", - "hide": "" + "show": "顯示預覽", + "hide": "隱藏預覽" }, "zod": { "errors": { - "default": "", - "required": "", + "default": "此欄位無效", + "required": "此欄位為必填", "string": { - "startsWith": "", - "endsWith": "", - "includes": "", - "invalidEmail": "" + "startsWith": "此欄位必須以 {startsWith} 開頭", + "endsWith": "此欄位必須以 {endsWith} 結尾", + "includes": "此欄位必須包含 {includes}", + "invalidEmail": "此欄位必須是有效的 E-Mail" }, "tooSmall": { - "string": "", - "number": "" + "string": "此欄位必須至少為 {minimum} 個字符", + "number": "此欄位必須大於或等於 {minimum}" }, "tooBig": { - "string": "", - "number": "" + "string": "此欄位長度不得超過 {maximum}", + "number": "此欄位必須小於或等於 {maximum}" }, "custom": { - "passwordsDoNotMatch": "", - "passwordRequirements": "", - "boardAlreadyExists": "", - "invalidFileType": "", - "fileTooLarge": "", - "invalidConfiguration": "", - "groupNameTaken": "" + "passwordsDoNotMatch": "兩次輸入的密碼不一致", + "passwordRequirements": "密碼不符合要求", + "boardAlreadyExists": "此面板名稱已存在", + "invalidFileType": "無效的檔案類型,例如 {expected}", + "fileTooLarge": "檔案太大,最大大小為 {maxSize}", + "invalidConfiguration": "無效設定", + "groupNameTaken": "用戶組名稱已存在" } } } @@ -896,871 +897,873 @@ "section": { "dynamic": { "action": { - "create": "", - "remove": "" + "create": "創建動態區段", + "remove": "移除動態區段" }, "remove": { - "title": "", - "message": "" + "title": "移除動態區段", + "message": "確認要移除此動態區段嗎?項目將移動到父區段的相同位置" } }, "category": { "field": { "name": { - "label": "" + "label": "名稱" } }, "action": { - "create": "", - "edit": "", - "remove": "", - "moveUp": "", - "moveDown": "", - "createAbove": "", - "createBelow": "" + "create": "創建分類", + "edit": "移除分類", + "remove": "移除分類", + "moveUp": "上移", + "moveDown": "下移", + "createAbove": "新分類之上", + "createBelow": "新分類之下" }, "create": { - "title": "", - "submit": "" + "title": "創建分類", + "submit": "創建分類" }, "remove": { - "title": "", - "message": "" + "title": "移除分類", + "message": "確認移除分類 {name} 嗎?" }, "edit": { - "title": "", - "submit": "" + "title": "重新命名分類", + "submit": "重新命名分類" }, "menu": { "label": { - "create": "", - "changePosition": "" + "create": "創建分類", + "changePosition": "變更位置" } } } }, "item": { "action": { - "create": "", - "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "create": "創建項目", + "import": "匯入項目", + "edit": "修改項目", + "moveResize": "移動 / 調整大小項目", + "duplicate": "複製項目", + "remove": "移除項目" }, "menu": { "label": { - "settings": "" + "settings": "設定" } }, "create": { - "title": "", - "addToBoard": "" + "title": "選擇要新增的項目", + "addToBoard": "新增至面板" }, "moveResize": { - "title": "", + "title": "移動 / 調整大小項目", "field": { "width": { - "label": "" + "label": "寬度" }, "height": { - "label": "" + "label": "高度" }, "xOffset": { - "label": "" + "label": "X 軸" }, "yOffset": { - "label": "" + "label": "Y 軸" } } }, "edit": { - "title": "", + "title": "修改項目", "advancedOptions": { - "label": "", - "title": "" + "label": "進階選項", + "title": "進階項目選項" }, "field": { "integrations": { - "label": "" + "label": "集成" }, "customCssClasses": { - "label": "" + "label": "自定義 CSS html" } } }, "remove": { - "title": "", - "message": "" + "title": "移除項目", + "message": "確認要移除此項目嗎?" } }, "widget": { "app": { - "name": "", - "description": "", + "name": "應用程式", + "description": "將應用程式新增至面板中", "option": { "appId": { - "label": "" + "label": "選擇應用程式" }, "openInNewTab": { - "label": "" + "label": "於新分頁中開啟" }, "showTitle": { - "label": "" + "label": "顯示應用程式名稱" }, "showDescriptionTooltip": { - "label": "" + "label": "顯示描述提示" }, "pingEnabled": { - "label": "" + "label": "啟用簡單的 Ping" } }, "error": { "notFound": { - "label": "", - "tooltip": "" + "label": "無應用程式", + "tooltip": "未選擇有效的應用程式" } } }, "bookmarks": { - "name": "", - "description": "", + "name": "書籤", + "description": "顯示多個應用程式鏈結", "option": { "title": { - "label": "" + "label": "標題" }, "layout": { - "label": "", + "label": "顯示布局", "option": { "row": { - "label": "" + "label": "橫向" }, "column": { - "label": "" + "label": "垂直" }, "grid": { - "label": "" + "label": "網格" } } }, "items": { - "label": "", - "add": "" + "label": "書籤", + "add": "新增書籤" } } }, "dnsHoleSummary": { - "name": "", - "description": "", + "name": "DNS Hole 概況", + "description": "顯示 DNS Hole 的概況", "option": { "layout": { - "label": "", + "label": "顯示布局", "option": { "row": { - "label": "" + "label": "橫向" }, "column": { - "label": "" + "label": "垂直" }, "grid": { - "label": "" + "label": "網格" } } }, "usePiHoleColors": { - "label": "" + "label": "使用 Pi-Hole 顏色" } }, "error": { - "internalServerError": "", - "integrationsDisconnected": "" + "internalServerError": "取得 DNS Hole 概況失敗", + "integrationsDisconnected": "無可用的數據,所有集成已斷線" }, "data": { - "adsBlockedToday": "", - "adsBlockedTodayPercentage": "", - "dnsQueriesToday": "", - "domainsBeingBlocked": "" + "adsBlockedToday": "今日封鎖", + "adsBlockedTodayPercentage": "今日封鎖", + "dnsQueriesToday": "今日查詢", + "domainsBeingBlocked": "黑名單的網域" } }, "dnsHoleControls": { - "name": "", - "description": "", + "name": "DNS Hole 控制", + "description": "從面板控制 Pi-Hole 或 AdGuard", "option": { "layout": { - "label": "", + "label": "顯示布局", "option": { "row": { - "label": "" + "label": "橫向" }, "column": { - "label": "" + "label": "垂直" }, "grid": { - "label": "" + "label": "網格" } } }, "showToggleAllButtons": { - "label": "" + "label": "顯示全部按鈕" } }, "error": { - "internalServerError": "" + "internalServerError": "無法控制 DNS Hole" }, "controls": { - "enableAll": "", - "disableAll": "", - "setTimer": "", - "set": "", - "enabled": "", - "disabled": "", - "processing": "", - "disconnected": "", - "hours": "", - "minutes": "", - "unlimited": "" + "enableAll": "啟用全部", + "disableAll": "停用全部", + "setTimer": "設定計時", + "set": "設定", + "enabled": "已啟用", + "disabled": "已停用", + "processing": "處理中", + "disconnected": "斷線", + "hours": "時", + "minutes": "分", + "unlimited": "留空表示無限制" } }, "clock": { - "name": "", - "description": "", + "name": "日期和時間", + "description": "顯示當前日期和時間", "option": { "customTitleToggle": { - "label": "", - "description": "" + "label": "自定義標題/城市顯示\n", + "description": "在時鐘上顯示自定義的標題或城市/國家名稱" }, "customTitle": { - "label": "" + "label": "標題" }, "is24HourFormat": { - "label": "", - "description": "" + "label": "24 小時制", + "description": "使用 24 小時制替代 12 小時制" }, "showSeconds": { - "label": "" + "label": "顯示秒數" }, "useCustomTimezone": { - "label": "" + "label": "使用固定時區" }, "timezone": { - "label": "", - "description": "" + "label": "時區", + "description": "選擇遵循 IANA 標準的時區" }, "showDate": { - "label": "" + "label": "顯示日期" }, "dateFormat": { - "label": "", - "description": "" + "label": "日期格式", + "description": "日期應該是什麼樣式" } } }, "minecraftServerStatus": { - "name": "", - "description": "", + "name": "Minecraft 伺服器狀態", + "description": "顯示 Minecraft 伺服器狀態", "option": { "title": { - "label": "" + "label": "標題" }, "domain": { - "label": "" + "label": "伺服器地址" }, "isBedrockServer": { - "label": "" + "label": "Bedrock 伺服器" } }, "status": { - "online": "", - "offline": "" + "online": "在線", + "offline": "離線" } }, "notebook": { - "name": "", - "description": "", + "name": "筆記", + "description": "支持 Markdown 的簡單筆記小工具", "option": { "showToolbar": { - "label": "" + "label": "顯示幫助寫下 Markdown 的工具欄" }, "allowReadOnlyCheck": { - "label": "" + "label": "允許於唯讀模式中檢查" }, "content": { - "label": "" + "label": "筆記的內容" } }, "controls": { - "bold": "", - "italic": "", - "strikethrough": "", - "underline": "", - "colorText": "", - "colorHighlight": "", - "code": "", - "clear": "", - "heading": "", - "align": "", - "blockquote": "", - "horizontalLine": "", - "bulletList": "", - "orderedList": "", - "checkList": "", - "increaseIndent": "", - "decreaseIndent": "", - "link": "", - "unlink": "", - "image": "", - "addTable": "", - "deleteTable": "", - "colorCell": "", - "mergeCell": "", - "addColumnLeft": "", - "addColumnRight": "", - "deleteColumn": "", - "addRowTop": "", - "addRowBelow": "", - "deleteRow": "" + "bold": "粗體", + "italic": "斜體", + "strikethrough": "刪除線", + "underline": "底線", + "colorText": "文字顏色", + "colorHighlight": "彩色高亮文字", + "code": "代碼", + "clear": "清除格式", + "heading": "標題 {level}", + "align": "對齊文字:{position}", + "blockquote": "引用", + "horizontalLine": "橫線", + "bulletList": "符號列表", + "orderedList": "順序列表", + "checkList": "檢查列表", + "increaseIndent": "增加縮進", + "decreaseIndent": "減少縮進", + "link": "鏈結", + "unlink": "移除鏈結", + "image": "崁入圖案", + "addTable": "新增表格", + "deleteTable": "移除表格", + "colorCell": "單元格顏色", + "mergeCell": "切換單元格合併", + "addColumnLeft": "於前方新增列", + "addColumnRight": "於後方新增列", + "deleteColumn": "移除整列", + "addRowTop": "於前方新增行", + "addRowBelow": "於後方新增行", + "deleteRow": "移除整行" }, "align": { - "left": "", - "center": "", - "right": "" + "left": "左方", + "center": "置中", + "right": "右方" }, "popover": { - "clearColor": "", - "source": "", - "widthPlaceholder": "", - "columns": "", - "rows": "", - "width": "", - "height": "" + "clearColor": "清除顏色", + "source": "來源", + "widthPlaceholder": "百分比或像素值", + "columns": "列數", + "rows": "行數", + "width": "寬度", + "height": "高度" } }, "iframe": { - "name": "", - "description": "", + "name": "iFrame", + "description": "崁入網路上的任何內容,某些網站可能限制訪問", "option": { "embedUrl": { - "label": "" + "label": "崁入網址" }, "allowFullScreen": { - "label": "" + "label": "允許全螢幕" }, "allowTransparency": { - "label": "" + "label": "允取透明" }, "allowScrolling": { - "label": "" + "label": "允許滾動" }, "allowPayment": { - "label": "" + "label": "允許支付" }, "allowAutoPlay": { - "label": "" + "label": "允許自動播放" }, "allowMicrophone": { - "label": "" + "label": "允許麥克風" }, "allowCamera": { - "label": "" + "label": "允許攝影機" }, "allowGeolocation": { - "label": "" + "label": "允許地址位置" } }, "error": { - "noUrl": "", - "noBrowerSupport": "" + "noUrl": "未提供 iFrame 網址", + "noBrowerSupport": "此瀏覽器不支持 iFrame,請使用其他瀏覽器" } }, "smartHome-entityState": { - "name": "", - "description": "", + "name": "設備狀態", + "description": "顯示設備狀態並可選切換", "option": { "entityId": { - "label": "" + "label": "設備 ID" }, "displayName": { - "label": "" + "label": "顯示名稱" }, "entityUnit": { - "label": "" + "label": "顯示單位" }, "clickable": { - "label": "" + "label": "可點擊" } } }, "smartHome-executeAutomation": { - "name": "", - "description": "", + "name": "執行自動化", + "description": "一鍵觸發自動化", "option": { "displayName": { - "label": "" + "label": "顯示名稱" }, "automationId": { - "label": "" + "label": "自動化 ID" } }, "spotlightAction": { - "run": "" + "run": "執行 {name}" } }, "calendar": { - "name": "", - "description": "", + "name": "日曆", + "description": "在特定的相對時間範圍內,將來自您的集成事件以日曆視圖顯示", "option": { "releaseType": { - "label": "", + "label": "Radarr 發行類型", "options": { - "inCinemas": "", - "digitalRelease": "", - "physicalRelease": "" + "inCinemas": "上映中", + "digitalRelease": "數位發行", + "physicalRelease": "實體發行" } }, "filterPastMonths": { - "label": "" + "label": "開始於" }, "filterFutureMonths": { - "label": "" + "label": "終止於" } } }, "weather": { - "name": "", - "description": "", + "name": "天氣", + "description": "顯示指定位置的當前天氣狀況", "option": { "isFormatFahrenheit": { - "label": "" + "label": "華氏溫度" }, "location": { - "label": "" + "label": "天氣位置" }, "showCity": { - "label": "" + "label": "顯示城市" }, "hasForecast": { - "label": "" + "label": "顯示預報" }, "forecastDayCount": { - "label": "", - "description": "" + "label": "預報天數", + "description": "當小工具寬度不足時,顯示的天數將減少" }, "dateFormat": { - "label": "", - "description": "" + "label": "日期格式", + "description": "日期應該是什麼樣式" } }, "kind": { - "clear": "", - "mainlyClear": "", - "fog": "", - "drizzle": "", - "freezingDrizzle": "", - "rain": "", - "freezingRain": "", - "snowFall": "", - "snowGrains": "", - "rainShowers": "", - "snowShowers": "", - "thunderstorm": "", - "thunderstormWithHail": "", - "unknown": "" + "clear": "晴朗", + "mainlyClear": "大多晴朗", + "fog": "起霧", + "drizzle": "細雨", + "freezingDrizzle": "凍細雨", + "rain": "雨天", + "freezingRain": "凍雨天", + "snowFall": "降雪", + "snowGrains": "冰霰", + "rainShowers": "陣雨", + "snowShowers": "陣雪", + "thunderstorm": "雷暴", + "thunderstormWithHail": "雷暴伴冰雹", + "unknown": "未知" } }, "indexerManager": { - "name": "", - "description": "", + "name": "索引器管理狀態", + "description": "索引器狀態", "option": { "openIndexerSiteInNewTab": { - "label": "" + "label": "於新分頁中開啟索引器站點" } }, - "title": "", - "testAll": "", + "title": "索引器管理器", + "testAll": "測試全部", "error": { - "internalServerError": "" + "internalServerError": "無法取得索引器狀態" } }, "healthMonitoring": { - "name": "", - "description": "", + "name": "系統健康監測", + "description": "顯示系統運行狀態", "option": { "fahrenheit": { - "label": "" + "label": "處理器溫度" }, "cpu": { - "label": "" + "label": "顯示處理器訊息" }, "memory": { - "label": "" + "label": "顯示記憶體訊息" }, "fileSystem": { - "label": "" + "label": "顯示檔案系統訊息" } }, "popover": { - "information": "", - "processor": "", - "memory": "", - "memoryAvailable": "", - "version": "", - "uptime": "", - "loadAverage": "", - "minute": "", - "minutes": "", - "used": "", - "available": "", - "lastSeen": "" + "information": "訊息", + "processor": "處理器:{cpuModelName}", + "memory": "記憶體:{memory} GiB", + "memoryAvailable": "可用:{memoryAvailable} Gib ({percent}%)", + "version": "版本:{version}", + "uptime": "運行時間:{months} 月,{days} 天,{hours} 時,{minutes} 分", + "loadAverage": "平均負載:", + "minute": "1 分鐘", + "minutes": "{count} 分鐘", + "used": "已使用", + "available": "可用", + "lastSeen": "最後狀態更新:{lastSeen}" }, "memory": {}, "error": { - "internalServerError": "" + "internalServerError": "取得健康狀態失敗" } }, "common": { "location": { - "query": "", - "latitude": "", - "longitude": "", - "disabledTooltip": "", - "unknownLocation": "", - "search": "", + "query": "城市 / 郵遞區號", + "latitude": "緯度", + "longitude": "經度", + "disabledTooltip": "請輸入城市或郵遞區號", + "unknownLocation": "未知", + "search": "未找到集成", "table": { "header": { - "city": "", - "country": "", - "coordinates": "", - "population": "" + "city": "城市", + "country": "國家", + "coordinates": "座標", + "population": "人口" }, "action": { - "select": "" + "select": "選擇 {city},{countryCode}" }, "population": { - "fallback": "" + "fallback": "未知" } } }, "integration": { - "noData": "", - "description": "" + "noData": "未找到集成", + "description": "點擊 創建新的集成" }, "app": { - "noData": "", - "description": "" + "noData": "未找到應用程式", + "description": "點擊 創建新的應用程式" }, "error": { - "noIntegration": "", - "noData": "" + "noIntegration": "未選擇集成", + "noData": "無可用的集成數據" }, "option": {} }, "video": { - "name": "", - "description": "", + "name": "串流影視", + "description": "崁入來自攝影機或網站的影視", "option": { "feedUrl": { - "label": "" + "label": "訂閱網址" }, "hasAutoPlay": { - "label": "", - "description": "" + "label": "自動播放", + "description": "由於瀏覽器限制,自動播放僅在靜音時有效" }, "isMuted": { - "label": "" + "label": "靜音" }, "hasControls": { - "label": "" + "label": "顯示控制" } }, "error": { - "noUrl": "", - "forYoutubeUseIframe": "" + "noUrl": "無提供影視網址", + "forYoutubeUseIframe": "Youtube 影視使用 iFrame 選項" } }, "mediaServer": { - "name": "", - "description": "", + "name": "當前多媒體伺服器串流", + "description": "顯示當前多媒體伺服器的串流", "option": {}, "items": { - "user": "", - "name": "", - "id": "" + "user": "使用者", + "name": "名稱", + "id": "ID" } }, "downloads": { - "name": "", - "description": "", + "name": "下載器", + "description": "允許查看和管理來自 Torrent 和 Usenet 的下載器", "option": { "columns": { - "label": "" + "label": "顯示的列" }, "enableRowSorting": { - "label": "" + "label": "啟用項目排序" }, "defaultSort": { - "label": "" + "label": "默認排序列" }, "descendingDefaultSort": { - "label": "" + "label": "倒序" }, "showCompletedUsenet": { - "label": "" + "label": "顯示標記為已完成的 Usenet 項目" }, "showCompletedTorrent": { - "label": "" + "label": "顯示標記為已完成的 Torrent 項目" }, "activeTorrentThreshold": { - "label": "" + "label": "隱藏在此閥值下完成的 Torrent (kiB/s)" }, "categoryFilter": { - "label": "" + "label": "要過濾的分類/標籤" }, "filterIsWhitelist": { - "label": "" + "label": "以白名單篩選" }, "applyFilterToRatio": { - "label": "" + "label": "使用篩選器來計算速率" } }, "errors": { - "noColumns": "", - "noCommunications": "" + "noColumns": "於項目中選擇列", + "noCommunications": "無法從集成中加載數據" }, "items": { "actions": { - "columnTitle": "" + "columnTitle": "控制" }, "added": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "已新增", + "detailsTitle": "日期已新增" }, "category": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "擴展的", + "detailsTitle": "分類 (額外訊息)" }, "downSpeed": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "下載", + "detailsTitle": "下載速度" }, "index": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "#", + "detailsTitle": "下載器中的當前索引" }, "id": { - "columnTitle": "" + "columnTitle": "ID" }, "integration": { - "columnTitle": "" + "columnTitle": "集成" }, "name": { - "columnTitle": "" + "columnTitle": "工作名稱" }, "progress": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "進度", + "detailsTitle": "下載進度" }, "ratio": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "分享率", + "detailsTitle": "Torrent 速率 (接收/發送)" }, "received": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "總下載", + "detailsTitle": "總下載量" }, "sent": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "總上傳", + "detailsTitle": "總上傳量" }, "size": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "檔案大小", + "detailsTitle": "選擇/檔案的總大小" }, "state": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "狀態", + "detailsTitle": "工作狀態" }, "time": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "完成時間", + "detailsTitle": "剩餘完成時間" }, "type": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "類型", + "detailsTitle": "下載器類型" }, "upSpeed": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "上傳", + "detailsTitle": "上傳速度" } }, "states": { - "downloading": "", - "queued": "", - "paused": "", - "completed": "", - "failed": "", - "processing": "", - "leeching": "", - "stalled": "", - "unknown": "", - "seeding": "" + "downloading": "下載中", + "queued": "隊列中", + "paused": "已暫停", + "completed": "已完成", + "failed": "已失敗", + "processing": "進行中", + "leeching": "吸血中", + "stalled": "已暫停", + "unknown": "未知", + "seeding": "做種中" }, "actions": { "clients": { - "modalTitle": "", - "pause": "", - "resume": "" + "modalTitle": "下載器列表", + "pause": "暫停全部下載器/項目", + "resume": "恢復全部下載器/項目" }, "client": { - "pause": "", - "resume": "" + "pause": "暫停下載器", + "resume": "恢復下載器" }, "item": { - "pause": "", - "resume": "", + "pause": "暫停項目", + "resume": "恢復項目", "delete": { - "title": "", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "title": "移除項目", + "modalTitle": "確認要移除此工作嗎?", + "entry": "移除項目", + "entryAndFiles": "移除項目和檔案" } } }, - "globalRatio": "" + "globalRatio": "全局速率" }, "mediaRequests-requestList": { - "name": "", - "description": "", + "name": "多媒體請求列表", + "description": "查看 Overrseerr 或 Jellyseerr 中所有多媒體請求列表", "option": { "linksTargetNewTab": { - "label": "" + "label": "於新分頁中開啟鏈結" } }, "pending": { - "approve": "", - "approving": "", - "decline": "" + "approve": "批准請求", + "approving": "正在批准請求中 ...", + "decline": "拒絕請求" }, "availability": { - "unknown": "", - "pending": "", - "processing": "", - "partiallyAvailable": "", - "available": "" + "unknown": "未知", + "pending": "等待處理中", + "processing": "處理中", + "partiallyAvailable": "部分", + "available": "待定" }, - "toBeDetermined": "" + "toBeDetermined": "多媒體請求狀態" }, "mediaRequests-requestStats": { - "name": "", - "description": "", + "name": "多媒體請求狀態", + "description": "多媒體請求統計", "option": {}, "titles": { "stats": { - "main": "", - "approved": "", - "pending": "", - "processing": "", - "declined": "", - "available": "", - "tv": "", - "movie": "", - "total": "" + "main": "多媒體狀態", + "approved": "已批准", + "pending": "等待批准", + "processing": "處理中", + "declined": "已拒絕", + "available": "已可用", + "tv": "電視劇請求", + "movie": "電影請求", + "total": "總計" }, "users": { - "main": "", - "requests": "" + "main": "使用者排行", + "requests": "請求" } } }, "mediaTranscoding": { - "name": "", - "description": "", + "name": "多媒體轉碼", + "description": "多媒體轉碼統計,當前隊列和工作狀態", "option": { "defaultView": { - "label": "" + "label": "預設瀏覽" }, "queuePageSize": { - "label": "" + "label": "隊列頁面大小" } }, "tab": { - "workers": "", - "queue": "", - "statistics": "" + "workers": "工作中", + "queue": "隊列", + "statistics": "統計" }, - "currentIndex": "", + "currentIndex": "{total} 的 {start} - {end}", "healthCheck": { - "title": "", - "queued": "", + "title": "健康檢查", + "queued": "隊列中", "status": { - "healthy": "", - "unhealthy": "" + "healthy": "健康", + "unhealthy": "不良" } }, "panel": { "statistics": { - "empty": "", - "transcodes": "", - "transcodesCount": "", - "healthChecksCount": "", - "filesCount": "", - "savedSpace": "", - "healthChecks": "", - "videoCodecs": "", - "videoContainers": "", - "videoResolutions": "" + "empty": "空", + "transcodes": "轉碼", + "transcodesCount": "轉碼:{value}", + "healthChecksCount": "健康檢查:{value}", + "filesCount": "檔案:{value}", + "savedSpace": "節省空間:{value}", + "healthChecks": "健康檢查", + "videoCodecs": "編碼", + "videoContainers": "容器", + "videoResolutions": "解析度" }, "workers": { - "empty": "", + "empty": "空", "table": { - "file": "", - "eta": "", - "progress": "", - "transcode": "", - "healthCheck": "" + "file": "檔案", + "eta": "剩餘時間", + "progress": "進度", + "transcode": "轉碼", + "healthCheck": "健康檢查" } }, "queue": { - "empty": "", + "empty": "空", "table": { - "file": "", - "size": "", - "transcode": "", - "healthCheck": "" + "file": "檔案", + "size": "大小", + "transcode": "轉碼", + "healthCheck": "健康檢查" } } } }, "rssFeed": { - "name": "", - "description": "", + "name": "RSS 訂閱", + "description": "顯示一個或多個 RSS、ATOM、JSON 源", "option": { "feedUrls": { - "label": "" + "label": "Feed 網址" }, "enableRtl": { - "label": "" + "label": "啟用 RTL" }, "textLinesClamp": { - "label": "" + "label": "描述行數限制" }, "maximumAmountPosts": { - "label": "" + "label": "帖子數量限制" } } } }, "widgetPreview": { "toggle": { - "enabled": "", - "disabled": "" + "enabled": "啟用修改模式", + "disabled": "停用修改模式" }, "dimensions": { - "title": "" + "title": "更改尺寸" } }, "board": { "action": { - "edit": { + "duplicate": { + "title": "", + "message": "", "notification": { "success": { "title": "", @@ -1770,63 +1773,75 @@ "title": "", "message": "" } + } + }, + "edit": { + "notification": { + "success": { + "title": "成功應用修改", + "message": "面板儲存成功" + }, + "error": { + "title": "無法應用修改", + "message": "面板無法儲存" + } }, "confirmLeave": { - "title": "", - "message": "" + "title": "未儲存修改", + "message": "尚未保存修改,確認要離開嗎?" } }, "oldImport": { - "label": "", + "label": "從 1.0.0 之前的 Homarr 匯入", "notification": { "success": { - "title": "", - "message": "" + "title": "匯入成功", + "message": "面板匯入成功" }, "error": { - "title": "", - "message": "" + "title": "匯入失敗", + "message": "無法匯入面板,請查閱 Logs 以取得更多詳情" } }, "form": { "file": { - "label": "", - "invalidError": "" + "label": "選擇 JSON 檔案", + "invalidError": "無效的設定檔案" }, "apps": { - "label": "", + "label": "應用程式", "avoidDuplicates": { - "label": "", - "description": "" + "label": "避免重複", + "description": "忽略已存在具有相同鏈結的應用程式" }, "onlyImportApps": { - "label": "", - "description": "" + "label": "僅匯入應用程式", + "description": "僅新增應用程式,面板需要手動重新創建" } }, "name": { - "label": "" + "label": "面板名稱" }, "screenSize": { - "label": "", - "description": "", + "label": "螢幕大小", + "description": "在 1.0 之前的版本中,有三種不同的模式,因此可以根據螢幕大小選擇列的數量", "option": { - "sm": "", - "md": "", - "lg": "" + "sm": "小號", + "md": "中等", + "lg": "大號" } }, "sidebarBehavior": { - "label": "", - "description": "", + "label": "側邊欄行為", + "description": "側邊欄在 1.0 中被移除了,你可以選擇該怎麼處理其中的項目", "option": { "lastSection": { - "label": "", - "description": "" + "label": "最後區段", + "description": "側邊欄將顯示在最後區段的下方" }, "removeItems": { - "label": "", - "description": "" + "label": "移除項目", + "description": "側邊欄中包含的項目將被移除" } } } @@ -1835,172 +1850,172 @@ }, "field": { "pageTitle": { - "label": "" + "label": "頁面標題" }, "metaTitle": { - "label": "" + "label": "Meta 標題" }, "logoImageUrl": { - "label": "" + "label": "Logo 圖案網址" }, "faviconImageUrl": { - "label": "" + "label": "Favicon 圖案網址" }, "backgroundImageUrl": { - "label": "" + "label": "背景圖案網址" }, "backgroundImageAttachment": { - "label": "", + "label": "背景圖案附件", "option": { "fixed": { - "label": "", - "description": "" + "label": "固定", + "description": "背景保持不變" }, "scroll": { - "label": "", - "description": "" + "label": "滾動", + "description": "用滑鼠滾動背景" } } }, "backgroundImageRepeat": { - "label": "", + "label": "背景圖案重複", "option": { "repeat": { - "label": "", - "description": "" + "label": "重複", + "description": "為了覆蓋整個背景圖案區域,將會重複使用來填充整個畫面" }, "no-repeat": { - "label": "", - "description": "" + "label": "不重複", + "description": "圖案不重複,無法填充整個畫面" }, "repeat-x": { - "label": "", - "description": "" + "label": "水平重複", + "description": "與 \"重複\" 相同,但僅於水平軸上" }, "repeat-y": { - "label": "", - "description": "" + "label": "垂直重複", + "description": "與 \"重複\" 相同,但僅於垂直軸上" } } }, "backgroundImageSize": { - "label": "", + "label": "背景圖案大小", "option": { "cover": { - "label": "", - "description": "" + "label": "封面", + "description": "通過剪裁多餘的畫面,將圖案縮放至盡可能小以覆蓋整個畫面" }, "contain": { - "label": "", - "description": "" + "label": "包含", + "description": "將圖案縮放於容器中,但不剪裁或拉伸圖案" } } }, "primaryColor": { - "label": "" + "label": "主體色" }, "secondaryColor": { - "label": "" + "label": "輔助色" }, "opacity": { - "label": "" + "label": "不透明度" }, "customCss": { - "label": "", - "description": "", + "label": "自定義此面板 CSS html", + "description": "僅推薦有經驗的使用者使用 CSS html", "customClassesAlert": { - "title": "", - "description": "" + "title": "自定義類別", + "description": "可以於每個項目中的進階選項中新增自定義類別至面板,並於自定義 CSS html 中使用他們" } }, "columnCount": { - "label": "" + "label": "列數" }, "name": { - "label": "" + "label": "名稱" }, "isPublic": { - "label": "", - "description": "" + "label": "公開", + "description": "每個人皆可訪問公共面板,即使沒有帳號" } }, "content": { - "metaTitle": "" + "metaTitle": "{boardName} 面板" }, "setting": { - "title": "", + "title": "{boardName} 面板設定", "section": { "general": { - "title": "", - "unrecognizedLink": "" + "title": "一般", + "unrecognizedLink": "提供的鏈結未被識別,無法預覽,但可能仍然有效" }, "layout": { - "title": "" + "title": "顯示布局" }, "background": { - "title": "" + "title": "背景" }, "color": { - "title": "" + "title": "配色" }, "customCss": { - "title": "" + "title": "自定義 CSS html" }, "access": { - "title": "", + "title": "訪問控制", "permission": { "item": { "view": { - "label": "" + "label": "查看面板" }, "modify": { - "label": "" + "label": "修改面板" }, "full": { - "label": "" + "label": "完全訪問" } } } }, "dangerZone": { - "title": "", + "title": "危險區域", "action": { "rename": { - "label": "", - "description": "", - "button": "", + "label": "重新命名面板", + "description": "更改面板可見性", + "button": "更改名稱", "modal": { - "title": "" + "title": "重新命名面板" } }, "visibility": { - "label": "", + "label": "更改面板可見性", "description": { - "public": "", - "private": "" + "public": "此面板目前為公開狀態", + "private": "此面板目前為私人狀態" }, "button": { - "public": "", - "private": "" + "public": "設定私人", + "private": "設定公開" }, "confirm": { "public": { - "title": "", - "description": "" + "title": "設定為私人面板", + "description": "確認要將此面板設為私人嗎?這將隱藏於公眾面前的面板" }, "private": { - "title": "", - "description": "" + "title": "設定為公開面板", + "description": "確認要將此面板設為公開嗎?這將使全部人皆可訪問此面板" } } }, "delete": { - "label": "", - "description": "", - "button": "", + "label": "移除此面板", + "description": "面板一旦移除就無法恢復,請謹慎操作", + "button": "移除此面板", "confirm": { - "title": "", - "description": "" + "title": "移除面板", + "description": "確認要移除此面板嗎?這將永久移除面板及其所有內容" } } } @@ -2009,420 +2024,423 @@ }, "error": { "noBoard": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "歡迎來到 Homarr", + "description": "時尚、現代的儀表板,讓所有應用程式和伺服器觸手可及", + "link": "創建第一個面板", + "notice": "要讓這個頁面消失,請創建一個面板並將其設定為主面板" }, "notFound": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "不存在面板", + "description": "未找到指定的面板,或者是沒有訪問權限", + "link": "查看全部面板", + "notice": "如果認為鏈結應該可以訪問,請檢察鏈結或連繫管理員" }, "homeBoard": { - "title": "", + "title": "沒有主面板", "admin": { - "description": "", - "link": "", - "notice": "" + "description": "尚為伺服器設定主面板", + "link": "設定伺服器主面板", + "notice": "要讓這個頁面消失,請為伺服器設定主面板" }, "user": { - "description": "", - "link": "", - "notice": "" + "description": "尚未設定主面板", + "link": "設定主面板", + "notice": "要讓這個頁面消失,請於偏好設定中指定主面板" }, "anonymous": { - "description": "", - "link": "", - "notice": "" + "description": "伺服器管理員尚未設定主面板", + "link": "查看公開面板", + "notice": "要讓這個頁面消失,請伺服器管理員為伺服器設定一個主面板" } } } }, "management": { - "metaTitle": "", + "metaTitle": "管理中心", "title": { - "morning": "", - "afternoon": "", - "evening": "" + "morning": "早安,{username}", + "afternoon": "午安,{username}", + "evening": "晚安,{username}" }, "notFound": { - "title": "", - "text": "" + "title": "不存在", + "text": "找不到請求的資源" }, "navbar": { "items": { - "home": "", - "boards": "", - "apps": "", - "integrations": "", - "searchEngies": "", - "medias": "", + "home": "首頁", + "boards": "面板", + "apps": "應用程式", + "integrations": "集成", + "searchEngies": "搜尋引擎", + "medias": "多媒體", "users": { - "label": "", + "label": "使用者", "items": { - "manage": "", - "invites": "", - "groups": "" + "manage": "管理", + "invites": "邀情", + "groups": "群組" } }, "tools": { - "label": "", + "label": "工具", "items": { - "docker": "", - "logs": "", - "api": "", - "tasks": "" + "docker": "Docker", + "logs": "Logs", + "api": "API", + "tasks": "任務" } }, - "settings": "", + "settings": "設定", "help": { - "label": "", + "label": "幫助", "items": { - "documentation": "", - "submitIssue": "", - "discord": "", - "sourceCode": "" + "documentation": "說明書", + "submitIssue": "提交問題", + "discord": "Discord 社群", + "sourceCode": "源碼" } }, - "about": "" + "about": "關於" } }, "page": { "home": { "statistic": { - "board": "", - "user": "", - "invite": "", - "integration": "", - "app": "", - "group": "" + "board": "面板", + "user": "使用者", + "invite": "邀請", + "integration": "集成", + "app": "應用程式", + "group": "群組" }, "statisticLabel": { - "boards": "", - "resources": "", - "authentication": "", - "authorization": "" + "boards": "面板", + "resources": "資源", + "authentication": "認證", + "authorization": "認證" } }, "board": { - "title": "", + "title": "你的面板", "action": { "new": { - "label": "" + "label": "創建面板" }, "open": { - "label": "" + "label": "開啟面板" }, "settings": { - "label": "" + "label": "設定" }, "setHomeBoard": { - "label": "", + "label": "設定為首頁", "badge": { - "label": "", - "tooltip": "" + "label": "首頁", + "tooltip": "此面板將顯示為主面板" } }, + "duplicate": { + "label": "" + }, "delete": { - "label": "", + "label": "永久移除", "confirm": { - "title": "", - "description": "" + "title": "移除面板", + "description": "確認移除此面板 {name} 嗎?" } } }, "visibility": { - "public": "", - "private": "" + "public": "此面板是公開的", + "private": "此面板是私人的" }, "modal": { "createBoard": { "field": { "name": { - "label": "" + "label": "名稱" } } } } }, "media": { - "includeFromAllUsers": "" + "includeFromAllUsers": "包含來自全部使用者的多媒體" }, "user": { - "back": "", - "fieldsDisabledExternalProvider": "", + "back": "返回使用者", + "fieldsDisabledExternalProvider": "某些字段被進用,因為它們是由外部認證提供者管理的", "setting": { "general": { - "title": "", + "title": "一般", "item": { - "language": "", - "board": "", - "firstDayOfWeek": "", - "accessibility": "" + "language": "語言與地區", + "board": "主面板", + "firstDayOfWeek": "一周的第一天", + "accessibility": "無障礙服務" } }, "security": { - "title": "" + "title": "安全" }, "board": { - "title": "" + "title": "面板" } }, "list": { - "metaTitle": "", - "title": "" + "metaTitle": "管理使用者", + "title": "使用者" }, "edit": { - "metaTitle": "" + "metaTitle": "修改使用者 {username}" }, "create": { - "metaTitle": "", - "title": "", + "metaTitle": "創建使用者", + "title": "創建新使用者", "step": { "personalInformation": { - "label": "" + "label": "個人資料" }, "security": { - "label": "" + "label": "安全" }, "groups": { - "label": "", - "title": "", - "description": "" + "label": "群組", + "title": "選擇使用者的用戶組", + "description": "{everyoneGroup} 用戶組將分配給全部使用者,無法被移除" }, "review": { - "label": "" + "label": "預覽" }, "completed": { - "title": "" + "title": "使用者已創建" }, "error": { - "title": "" + "title": "使用者創建失敗" } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "創建其他使用者", + "back": "返回使用者列表" } }, "invite": { - "title": "", + "title": "管理使用者邀請", "action": { "new": { - "title": "", - "description": "" + "title": "創建邀請", + "description": "過期後,邀請將失效,被邀請的收件人無法創建帳號" }, "copy": { - "title": "", - "description": "", - "link": "", - "button": "" + "title": "複製邀請", + "description": "邀請已生成,此模式關閉後,將無法再複製此鏈結,如果不想再邀請此人,可以隨時移除此邀請", + "link": "邀請鏈結", + "button": "複製 & 關閉" }, "delete": { - "title": "", - "description": "" + "title": "移除邀請", + "description": "確認移除此邀請嗎?,此鏈結將無法再邀請任何人" } }, "field": { "id": { - "label": "" + "label": "ID" }, "creator": { - "label": "" + "label": "創建者" }, "expirationDate": { - "label": "" + "label": "過期時間" }, "token": { - "label": "" + "label": "密鑰" } } } }, "group": { - "back": "", + "back": "返回用戶組", "setting": { "general": { - "title": "", - "owner": "", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "title": "一般", + "owner": "所有者", + "ownerOfGroup": "該用戶組的所有者", + "ownerOfGroupDeleted": "此用戶組的所有者已被移除,目前沒有所有者" }, "members": { - "title": "", - "search": "", - "notFound": "" + "title": "成員", + "search": "查找成員", + "notFound": "不存在的成員" }, "permissions": { - "title": "", + "title": "權限", "form": { - "unsavedChanges": "" + "unsavedChanges": "尚有未儲存的變更" } } } }, "settings": { - "title": "", + "title": "設定", "notification": { "success": { - "message": "" + "message": "設定儲存成功" }, "error": { - "message": "" + "message": "設定儲存失敗" } }, "section": { "analytics": { - "title": "", + "title": "分析", "general": { - "title": "", - "text": "" + "title": "發送匿名分析", + "text": "Homarr 使用開源軟體 Umami 發送匿名分析,他從不收集任何個人資料,因此完全符合 GDPR 和 CCPA 要求,我們鼓勵啟用分析,因為可以幫助我們的團隊識別問題,並確認待辦事項的優先級別" }, "widgetData": { - "title": "", - "text": "" + "title": "小工具數據", + "text": "發送已設定的小工具 (及其數量),不包括網址、名稱或任何其他數據" }, "integrationData": { - "title": "", - "text": "" + "title": "集成數據", + "text": "發送已設定的集成 (及其數量),不包括網址、名稱或任何其他數據" }, "usersData": { - "title": "", - "text": "" + "title": "使用者資料", + "text": "發送使用者數量以及是否激活了 SSO" } }, "crawlingAndIndexing": { - "title": "", - "warning": "", + "title": "爬取和索引", + "warning": "啟用或禁用這裡的任何設定將嚴重影響搜尋引擎如何索引或抓取頁面,任何設定都是一個請求,是否應用這些設定取決於爬蟲,任何修改可能需要數天或數周才能申請,某設定可能是搜尋引擎特定的", "noIndex": { - "title": "", - "text": "" + "title": "不要索引", + "text": "不要在搜尋引擎上索引網址,也不要在任何搜尋結果中顯示" }, "noFollow": { - "title": "", - "text": "" + "title": "不要追蹤", + "text": "索引不要追蹤任何鏈結,禁用此功能將導致爬蟲程式試圖跟蹤 Homarr 上的全部鏈結" }, "noTranslate": { - "title": "", - "text": "" + "title": "不要翻譯", + "text": "當網站的語言不是使用者想要閱讀的語言時,Google 將在搜尋結果中顯示一個翻譯鏈結" }, "noSiteLinksSearchBox": { - "title": "", - "text": "" + "title": "沒有網站鏈結搜索框", + "text": "Google 將與爬取的鏈結以及其他直接鏈結構建一個搜索框,啟用此功能將要求 Google 禁用該框" } }, "board": { - "title": "", + "title": "面板", "homeBoard": { - "label": "", - "description": "" + "label": "全局主面板", + "description": "只有公開面板可供選擇" } }, "appearance": { - "title": "", + "title": "外觀", "defaultColorScheme": { - "label": "", + "label": "預設配色方案", "options": { - "light": "", - "dark": "" + "light": "日間", + "dark": "暗黑" } } }, "culture": { - "title": "", + "title": "區域", "defaultLocale": { - "label": "" + "label": "預設語言" } } } }, "tool": { "tasks": { - "title": "", + "title": "任務", "status": { - "idle": "", - "running": "", - "error": "" + "idle": "空閒", + "running": "運行中", + "error": "錯誤" }, "job": { "minecraftServerStatus": { - "label": "" + "label": "Minecraft 伺服器狀態" }, "iconsUpdater": { - "label": "" + "label": "icon 上傳器" }, "analytics": { - "label": "" + "label": "分析" }, "smartHomeEntityState": { - "label": "" + "label": "智能居家狀態" }, "ping": { - "label": "" + "label": "Pings" }, "mediaServer": { - "label": "" + "label": "多媒體伺服器" }, "mediaOrganizer": { - "label": "" + "label": "多媒體組織者" }, "downloads": { - "label": "" + "label": "正在下載" }, "mediaRequestStats": { - "label": "" + "label": "多媒體請求狀態" }, "mediaRequestList": { - "label": "" + "label": "多媒體請求列表" }, "rssFeeds": { - "label": "" + "label": "RSS 訂閱" }, "indexerManager": { - "label": "" + "label": "索引器管理" }, "healthMonitoring": { - "label": "" + "label": "健康監測" }, "dnsHole": { - "label": "" + "label": "DNS Hole 數據" }, "sessionCleanup": { - "label": "" + "label": "會話清理" }, "updateChecker": { - "label": "" + "label": "更新檢查" }, "mediaTranscoding": { - "label": "" + "label": "多媒體轉碼中" } } }, "api": { - "title": "", + "title": "API", "modal": { "createApiToken": { - "title": "", - "description": "", - "button": "" + "title": "API 密鑰已創建", + "description": "API 密鑰已創建,請小心,此密鑰於數據庫中是加密的,永遠不再提供,如果丟失,將無法再檢索這個特定密鑰", + "button": "複製和關閉" } }, "tab": { "documentation": { - "label": "" + "label": "說明書" }, "apiKey": { - "label": "", - "title": "", + "label": "認證", + "title": "API 密鑰\n", "button": { - "createApiToken": "" + "createApiToken": "創建 API 密鑰" }, "table": { "header": { - "id": "", - "createdBy": "" + "id": "ID", + "createdBy": "創建者" } } } @@ -2430,367 +2448,367 @@ } }, "about": { - "version": "", - "text": "", + "version": "版本 {version}", + "text": "Homarr 是由社區推動的開源項目,是志願者們在維護,多虧了這些人,從 2021 年起,Homarr 一直在發展壯大,我們團隊來自許多不同的國家,完全遠程工作,於空閒時無償維護 Homarr", "accordion": { "contributors": { - "title": "", - "subtitle": "" + "title": "貢獻人員", + "subtitle": "{count} 維護代碼 & Homarr" }, "translators": { - "title": "", - "subtitle": "" + "title": "翻譯人員", + "subtitle": "{count} 翻譯了許多語言" }, "libraries": { - "title": "", - "subtitle": "" + "title": "資料庫", + "subtitle": "{count} 於 Homarr 待碼中使用" } } } } }, "docker": { - "title": "", + "title": "容器", "table": { - "updated": "", - "search": "", - "selected": "" + "updated": "已更新於 {when}", + "search": "搜尋 {count} 容器", + "selected": "{totalCount} 容器的 {selectCount}" }, "field": { "name": { - "label": "" + "label": "名稱" }, "state": { - "label": "", + "label": "狀態", "option": { - "created": "", - "running": "", - "paused": "", - "restarting": "", - "exited": "", - "removing": "", - "dead": "" + "created": "已創建", + "running": "運行中", + "paused": "已暫停", + "restarting": "正在重啟", + "exited": "已退出", + "removing": "移除中", + "dead": "廢棄" } }, "containerImage": { - "label": "" + "label": "鏡像" }, "ports": { - "label": "" + "label": "端口" } }, "action": { "start": { - "label": "", + "label": "啟動", "notification": { "success": { - "title": "", - "message": "" + "title": "榮起已啟動", + "message": "容器已成功啟動" }, "error": { - "title": "", - "message": "" + "title": "容易未啟動", + "message": "容器無法啟動" } } }, "stop": { - "label": "", + "label": "停止", "notification": { "success": { - "title": "", - "message": "" + "title": "容器已停止", + "message": "容器已停止成功" }, "error": { - "title": "", - "message": "" + "title": "容器未停止", + "message": "容器無法停止" } } }, "restart": { - "label": "", + "label": "重啟", "notification": { "success": { - "title": "", - "message": "" + "title": "容器已重啟", + "message": "容器已重啟成功" }, "error": { - "title": "", - "message": "" + "title": "容器未重啟", + "message": "容器無法重啟" } } }, "remove": { - "label": "", + "label": "移除", "notification": { "success": { - "title": "", - "message": "" + "title": "容器已移除", + "message": "容器已移除成功" }, "error": { - "title": "", - "message": "" + "title": "容器未移除", + "message": "容器無法移除" } } }, "refresh": { - "label": "", + "label": "刷新", "notification": { "success": { - "title": "", - "message": "" + "title": "容器已刷新", + "message": "正在查看最新數據" }, "error": { - "title": "", - "message": "" + "title": "容器未刷新", + "message": "刷新容器時出現錯誤" } } } }, "error": { - "internalServerError": "" + "internalServerError": "取得 Docker 容器失敗" } }, "permission": { - "title": "", + "title": "權限", "userSelect": { - "title": "" + "title": "新增使用者權限" }, "groupSelect": { - "title": "" + "title": "新增用戶組權限" }, "tab": { - "user": "", - "group": "", - "inherited": "" + "user": "使用者", + "group": "用戶組", + "inherited": "繼承的用戶組" }, "field": { "user": { - "label": "" + "label": "使用者" }, "group": { - "label": "" + "label": "用戶組" }, "permission": { - "label": "" + "label": "權限" } }, "action": { - "saveUser": "", - "saveGroup": "" + "saveUser": "儲存使用者權限", + "saveGroup": "儲存用戶組權限" } }, "navigationStructure": { "manage": { - "label": "", + "label": "管理", "boards": { - "label": "" + "label": "面板" }, "integrations": { - "label": "", + "label": "集成", "edit": { - "label": "" + "label": "修改" }, "new": { - "label": "" + "label": "創建" } }, "search-engines": { - "label": "", + "label": "搜尋引擎", "new": { - "label": "" + "label": "創建" }, "edit": { - "label": "" + "label": "修改" } }, "medias": { - "label": "" + "label": "多媒體" }, "apps": { - "label": "", + "label": "應用程式", "new": { - "label": "" + "label": "創建" }, "edit": { - "label": "" + "label": "修改" } }, "users": { - "label": "", + "label": "使用者", "create": { - "label": "" + "label": "創建" }, - "general": "", - "security": "", - "board": "", + "general": "一般", + "security": "安全", + "board": "面板", "groups": { - "label": "" + "label": "用戶組" }, "invites": { - "label": "" + "label": "邀請" } }, "tools": { - "label": "", + "label": "工具", "docker": { - "label": "" + "label": "Docker" }, "logs": { - "label": "" + "label": "Logs" } }, "settings": { - "label": "" + "label": "設定" }, "about": { - "label": "" + "label": "關於" } } }, "search": { - "placeholder": "", - "nothingFound": "", + "placeholder": "搜尋任意內容", + "nothingFound": "不存在", "error": { - "fetch": "" + "fetch": "取得數據時發生錯誤" }, "mode": { "appIntegrationBoard": { - "help": "", + "help": "搜尋應用程式,集成或面板", "group": { "app": { - "title": "", + "title": "應用程式", "children": { "action": { "open": { - "label": "" + "label": "開啟應用程式網址" }, "edit": { - "label": "" + "label": "修改應用程式" } }, "detail": { - "title": "" + "title": "為應用程式選擇一個動作" } } }, "board": { - "title": "", + "title": "面板", "children": { "action": { "open": { - "label": "" + "label": "開啟面板" }, "homeBoard": { - "label": "" + "label": "設定為主面板" }, "settings": { - "label": "" + "label": "開啟設定" } }, "detail": { - "title": "" + "title": "為面板選擇一個動作" } } }, "integration": { - "title": "" + "title": "集成" } } }, "command": { - "help": "", + "help": "啟用命令模式", "group": { "localCommand": { - "title": "" + "title": "本地命令" }, "globalCommand": { - "title": "", + "title": "全局命令", "option": { "colorScheme": { - "light": "", - "dark": "" + "light": "切換日間模式", + "dark": "切換暗黑模式" }, "language": { - "label": "", + "label": "修改語言", "children": { "detail": { - "title": "" + "title": "選擇主要語言" } } }, "newBoard": { - "label": "" + "label": "創建新面板" }, "importBoard": { - "label": "" + "label": "匯入面板" }, "newApp": { - "label": "" + "label": "創建新應用程式" }, "newIntegration": { - "label": "", + "label": "創建新集成", "children": { "detail": { - "title": "" + "title": "選擇創建集成的類別" } } }, "newUser": { - "label": "" + "label": "創建新使用者" }, "newInvite": { - "label": "" + "label": "創建新邀請" }, "newGroup": { - "label": "" + "label": "創建新用戶組" } } } } }, "media": { - "requestMovie": "", - "requestSeries": "", - "openIn": "" + "requestMovie": "請求電影", + "requestSeries": "請求系列", + "openIn": "開啟於 {kind}" }, "external": { - "help": "", + "help": "使用外部搜尋引擎", "group": { "searchEngine": { - "title": "", + "title": "搜尋引擎", "children": { "action": { "search": { - "label": "" + "label": "使用 {name} 搜尋" } }, "detail": { - "title": "" + "title": "為搜尋引擎選擇一個動作" }, "searchResults": { - "title": "" + "title": "選擇搜尋結果進行操作" } }, "option": { "google": { - "name": "", - "description": "" + "name": "Google", + "description": "使用 Google 搜尋網路" }, "bing": { - "name": "", - "description": "" + "name": "Bing", + "description": "使用 Bing 搜尋網路" }, "duckduckgo": { - "name": "", - "description": "" + "name": "DuckDuckGo", + "description": "使用 DuckDuckGo 搜尋網路" }, "torrent": { - "name": "", - "description": "" + "name": "種子", + "description": "於 torrentdownloads.pro 上搜尋種子" }, "youTube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "使用 YouTube 搜尋影視" } } } @@ -2799,19 +2817,19 @@ "help": { "group": { "mode": { - "title": "" + "title": "模式" }, "help": { - "title": "", + "title": "幫助", "option": { "documentation": { - "label": "" + "label": "說明書" }, "submitIssue": { - "label": "" + "label": "提交問題" }, "discord": { - "label": "" + "label": "Discord 社群" } } } @@ -2820,103 +2838,103 @@ "home": { "group": { "local": { - "title": "" + "title": "本地結果" } } }, "page": { - "help": "", + "help": "搜尋頁面", "group": { "page": { - "title": "", + "title": "頁面", "option": { "manageHome": { - "label": "" + "label": "管理首頁" }, "manageBoard": { - "label": "" + "label": "管理面板" }, "manageApp": { - "label": "" + "label": "管理應用程式" }, "manageIntegration": { - "label": "" + "label": "管理集成" }, "manageSearchEngine": { - "label": "" + "label": "管理搜尋引擎" }, "manageMedia": { - "label": "" + "label": "管理多媒體" }, "manageUser": { - "label": "" + "label": "管理使用者" }, "manageInvite": { - "label": "" + "label": "管理邀請" }, "manageGroup": { - "label": "" + "label": "管理用戶組" }, "manageDocker": { - "label": "" + "label": "管理 Docker" }, "manageApi": { - "label": "" + "label": "Swagger API" }, "manageLog": { - "label": "" + "label": "查看 Logs" }, "manageTask": { - "label": "" + "label": "管理任務" }, "manageSettings": { - "label": "" + "label": "全局設定" }, "about": { - "label": "" + "label": "關於" }, "homeBoard": { - "label": "" + "label": "主面板" }, "preferences": { - "label": "" + "label": "偏好設定" } } } } }, "userGroup": { - "help": "", + "help": "搜尋使用者或用戶組", "group": { "user": { - "title": "", + "title": "使用者", "children": { "action": { "detail": { - "label": "" + "label": "顯示使用者詳情" } }, "detail": { - "title": "" + "title": "為使用者選擇一個動作" } } }, "group": { - "title": "", + "title": "用戶組", "children": { "action": { "detail": { - "label": "" + "label": "顯示用戶組詳情" }, "manageMember": { - "label": "" + "label": "管理成員" }, "managePermission": { - "label": "" + "label": "管理權限" } }, "detail": { - "title": "" + "title": "為用戶組選擇一個動作" } } } @@ -2924,72 +2942,72 @@ } }, "engine": { - "search": "", + "search": "尋找搜尋引擎", "field": { "name": { - "label": "" + "label": "名稱" }, "short": { - "label": "" + "label": "不足" }, "urlTemplate": { - "label": "" + "label": "網址搜尋面板" }, "description": { - "label": "" + "label": "描述" } }, "page": { "list": { - "title": "", + "title": "搜尋引擎", "noResults": { - "title": "", - "action": "" + "title": "尚未設定搜尋引擎", + "action": "創建搜尋引情" }, - "interactive": "" + "interactive": "交互,使用集成" }, "create": { - "title": "", + "title": "創建搜尋引擎", "notification": { "success": { - "title": "", - "message": "" + "title": "搜尋引擎已創建", + "message": "搜尋引擎已創建成功" }, "error": { - "title": "", - "message": "" + "title": "搜尋引擎未創建", + "message": "搜尋引擎無法創建" } } }, "edit": { - "title": "", + "title": "修改搜尋引擎", "notification": { "success": { - "title": "", - "message": "" + "title": "應用修改成功", + "message": "搜尋引擎已儲存成功" }, "error": { - "title": "", - "message": "" + "title": "無法應用變更", + "message": "搜尋引擎無法儲存" } }, - "configControl": "", + "configControl": "設定", "searchEngineType": { - "generic": "", - "fromIntegration": "" + "generic": "一般", + "fromIntegration": "來自集成" } }, "delete": { - "title": "", - "message": "", + "title": "移除搜尋引擎", + "message": "確認要移除此搜尋引擎 {name} 嗎?", "notification": { "success": { - "title": "", - "message": "" + "title": "搜尋引擎已移除", + "message": "搜尋引擎已移除成功" }, "error": { - "title": "", - "message": "" + "title": "搜尋引擎未移除", + "message": "搜尋引擎無法移除" } } } @@ -2997,15 +3015,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "請求 {name}", "table": { "header": { - "season": "", - "episodes": "" + "season": "季", + "episodes": "劇集" } }, "button": { - "send": "" + "send": "發送請求" } } } From 39ea2baff30dd8a9e1e228eae8d7e9032e0937d2 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 00:46:45 +0000 Subject: [PATCH 177/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/sk.json | 34 +++++++++++++-------------- packages/translation/src/lang/zh.json | 16 ++++++------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 3b43578f9..4dfe5a14f 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -2,12 +2,12 @@ "init": { "step": { "start": { - "title": "Vitajte na Homár", + "title": "Víta Vás Homár", "subtitle": "Začnime s nastavením inštancie Homár.", "description": "Ak chcete začať, vyberte, ako chcete nastaviť inštanciu Homár.", "action": { "scratch": "Začať odznova", - "importOldmarr": "Import z Homarru pred 1.0" + "importOldmarr": "Import z Homarr pred 1.0" } }, "import": { @@ -114,7 +114,7 @@ }, "invite": { "title": "Pridajte sa k Homarrovi", - "subtitle": "Vitajte v Homarr! Prosím, vytvorte si účet", + "subtitle": "Vítajte v Homarr! Prosím, vytvorte si účet", "description": "Pozval vás {username}" }, "init": { @@ -489,7 +489,7 @@ } }, "app": { - "search": "", + "search": "Vyhľadať aplikáciu", "page": { "list": { "title": "Aplikácie", @@ -1158,7 +1158,7 @@ }, "minecraftServerStatus": { "name": "Minecraft Server Stav", - "description": "", + "description": "Zobraziť status Minecraft servera", "option": { "title": { "label": "Názov" @@ -1763,15 +1763,15 @@ "action": { "duplicate": { "title": "Duplikovať dosku", - "message": "", + "message": "Tým sa duplikuje nástenka {name} s celým jej obsahom. Ak widgety odkazujú na integrácie, ktoré nemáte povolené používať, budú odstránené.", "notification": { "success": { - "title": "", + "title": "Doska duplikovaná", "message": "Doska bola úspešne duplikovaná" }, "error": { - "title": "", - "message": "" + "title": "Nieje možné duplikovať dosku", + "message": "Tabuľu nebolo možné duplikovať" } } }, @@ -2141,7 +2141,7 @@ } }, "duplicate": { - "label": "" + "label": "Duplikovať dosku" }, "delete": { "label": "Odstrániť natrvalo", @@ -2767,9 +2767,9 @@ } }, "media": { - "requestMovie": "", - "requestSeries": "", - "openIn": "" + "requestMovie": "Vyžiadať film", + "requestSeries": "Vyžiadať seriál", + "openIn": "Otvoriť v {kind}" }, "external": { "help": "Používanie externého vyhľadávača", @@ -3015,15 +3015,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "Vyžiadať \"{name}\"", "table": { "header": { - "season": "", - "episodes": "" + "season": "Séria", + "episodes": "Epizódy" } }, "button": { - "send": "" + "send": "Poslať požiadavku" } } } diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index ea4d02a4d..588fd1c39 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -489,7 +489,7 @@ } }, "app": { - "search": "", + "search": "尋找應用程式", "page": { "list": { "title": "應用程式", @@ -1762,16 +1762,16 @@ "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "複製面板", + "message": "這將複製看板 {name} 及其所有內容。如果小工具引用了無法使用的集成,它們將被移除", "notification": { "success": { - "title": "", - "message": "" + "title": "面板已複製", + "message": "面板已複製成功" }, "error": { - "title": "", - "message": "" + "title": "面板無法複製", + "message": "此面板無法被複製" } } }, @@ -2141,7 +2141,7 @@ } }, "duplicate": { - "label": "" + "label": "複製面板" }, "delete": { "label": "永久移除", From 2dec74e5ffbd147f90427ff6bab0c7f61b1ef71e Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:54:37 +0000 Subject: [PATCH 178/262] chore(deps): update pnpm to v9.15.3 (#1871) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e0d519a17..a0395dde0 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, - "packageManager": "pnpm@9.15.2", + "packageManager": "pnpm@9.15.3", "engines": { "node": ">=22.12.0" }, From e0eab425e6c4844f7c3ba9a92f6c70a6b35fbeec Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 17:00:21 +0000 Subject: [PATCH 179/262] chore(deps): update dependency @types/react to v19.0.3 (#1872) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 128 +++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 65 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 1cda72129..f07eb449e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -84,7 +84,7 @@ "@types/chroma-js": "2.4.5", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.2", + "@types/react": "19.0.3", "@types/react-dom": "19.0.2", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eed931c49..5e275709d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,19 +153,19 @@ importers: version: 7.15.2(chroma-js@3.1.2) '@mantine/core': specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.2 version: 7.15.2(react@19.0.0) '@mantine/modals': specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -225,10 +225,10 @@ importers: version: 11.0.0 jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.2)(react@19.0.0) + version: 2.11.0(@types/react@19.0.3)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -258,7 +258,7 @@ importers: version: 2.2.2 swagger-ui-react: specifier: ^5.18.2 - version: 5.18.2(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.18.2(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -282,11 +282,11 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.2 - version: 19.0.2 + specifier: 19.0.3 + version: 19.0.3 '@types/react-dom': specifier: 19.0.2 - version: 19.0.2(@types/react@19.0.2) + version: 19.0.2(@types/react@19.0.3) '@types/swagger-ui-react': specifier: ^4.18.3 version: 4.18.3 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -4269,8 +4269,8 @@ packages: '@types/react@18.3.13': resolution: {integrity: sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==} - '@types/react@19.0.2': - resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==} + '@types/react@19.0.3': + resolution: {integrity: sha512-UavfHguIjnnuq9O67uXfgy/h3SRJbidAYvNjLceB+2RIKVRBzVsh0QO+Pw6BCSQqFS9xwzKfwstXx0m6AbAREA==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -10653,7 +10653,7 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) @@ -10661,8 +10661,8 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.0(@types/react@19.0.2)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.2)(react@19.0.0) + react-remove-scroll: 2.6.0(@types/react@19.0.3)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.3)(react@19.0.0) type-fest: 4.28.0 transitivePeerDependencies: - '@types/react' @@ -10676,18 +10676,18 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10703,9 +10703,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10731,9 +10731,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) '@tiptap/extension-link': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) '@tiptap/react': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12130,9 +12130,9 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.2(@types/react@19.0.2)': + '@types/react-dom@19.0.2(@types/react@19.0.3)': dependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 '@types/react@18.3.13': dependencies: @@ -12140,7 +12140,7 @@ snapshots: csstype: 3.1.3 optional: true - '@types/react@19.0.2': + '@types/react@19.0.3': dependencies: csstype: 3.1.3 @@ -12172,7 +12172,7 @@ snapshots: '@types/swagger-ui-react@4.18.3': dependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 '@types/through@0.0.33': dependencies: @@ -13511,18 +13511,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - '@types/react': 19.0.2 + '@types/react': 19.0.3 better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.2)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: @@ -15093,9 +15093,9 @@ snapshots: '@types/react': 18.3.13 react: 19.0.0 - jotai@2.11.0(@types/react@19.0.2)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.3)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 react: 19.0.0 js-base64@3.7.7: @@ -15359,10 +15359,10 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) '@tabler/icons-react': 3.26.0(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16397,13 +16397,13 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.1.2(@types/react@19.0.2)(react@19.0.0)(redux@5.0.1): + react-redux@9.1.2(@types/react@19.0.3)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 redux: 5.0.1 react-refresh@0.14.2: {} @@ -16416,13 +16416,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - react-remove-scroll-bar@2.3.6(@types/react@19.0.2)(react@19.0.0): + react-remove-scroll-bar@2.3.6(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.1(@types/react@19.0.2)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.3)(react@19.0.0) tslib: 2.7.0 optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 react-remove-scroll@2.6.0(@types/react@18.3.13)(react@19.0.0): dependencies: @@ -16435,16 +16435,16 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - react-remove-scroll@2.6.0(@types/react@19.0.2)(react@19.0.0): + react-remove-scroll@2.6.0(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.6(@types/react@19.0.2)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.2)(react@19.0.0) + react-remove-scroll-bar: 2.3.6(@types/react@19.0.3)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.3)(react@19.0.0) tslib: 2.7.0 - use-callback-ref: 1.3.2(@types/react@19.0.2)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.2)(react@19.0.0) + use-callback-ref: 1.3.2(@types/react@19.0.3)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.3)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 react-scan@0.0.31: dependencies: @@ -16468,14 +16468,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - react-style-singleton@2.2.1(@types/react@19.0.2)(react@19.0.0): + react-style-singleton@2.2.1(@types/react@19.0.3)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 tslib: 2.7.0 optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 react-syntax-highlighter@15.5.0(react@19.0.0): dependencies: @@ -16495,12 +16495,12 @@ snapshots: transitivePeerDependencies: - '@types/react' - react-textarea-autosize@8.5.6(@types/react@19.0.2)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.3)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.2)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.3)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17331,7 +17331,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.18.2(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.18.2(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.25.6 '@braintree/sanitize-url': 7.0.4 @@ -17356,7 +17356,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.1.2(@types/react@19.0.2)(react@19.0.0)(redux@5.0.1) + react-redux: 9.1.2(@types/react@19.0.3)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.5.0(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -17933,12 +17933,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - use-callback-ref@1.3.2(@types/react@19.0.2)(react@19.0.0): + use-callback-ref@1.3.2(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.7.0 optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -17962,11 +17962,11 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.2)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 use-latest@1.2.1(@types/react@18.3.13)(react@19.0.0): dependencies: @@ -17975,12 +17975,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - use-latest@1.2.1(@types/react@19.0.2)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.2)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.3)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 use-sidecar@1.1.2(@types/react@18.3.13)(react@19.0.0): dependencies: @@ -17990,13 +17990,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.13 - use-sidecar@1.1.2(@types/react@19.0.2)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.3)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.7.0 optionalDependencies: - '@types/react': 19.0.2 + '@types/react': 19.0.3 use-sync-external-store@1.2.2(react@19.0.0): dependencies: From be4e75321a0a6a05c6ac6c4ba97ffb5068aed4aa Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:32:37 +0000 Subject: [PATCH 180/262] fix(deps): update dependency typescript-eslint to ^8.19.1 (#1874) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 130 ++++++++++++++++++------------------ tooling/eslint/package.json | 2 +- 2 files changed, 66 insertions(+), 66 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e275709d..ed4cb0c0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1868,7 +1868,7 @@ importers: version: 2.3.3(eslint@9.17.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) + version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.17.0) @@ -1879,8 +1879,8 @@ importers: specifier: ^5.1.0 version: 5.1.0(eslint@9.17.0) typescript-eslint: - specifier: ^8.19.0 - version: 8.19.0(eslint@9.17.0)(typescript@5.7.2) + specifier: ^8.19.1 + version: 8.19.1(eslint@9.17.0)(typescript@5.7.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -4320,51 +4320,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.19.0': - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} + '@typescript-eslint/eslint-plugin@8.19.1': + resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.0': - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} + '@typescript-eslint/parser@8.19.1': + resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} + '@typescript-eslint/scope-manager@8.19.1': + resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.0': - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} + '@typescript-eslint/type-utils@8.19.1': + resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} + '@typescript-eslint/types@8.19.1': + resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} + '@typescript-eslint/typescript-estree@8.19.1': + resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} + '@typescript-eslint/utils@8.19.1': + resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} + '@typescript-eslint/visitor-keys@8.19.1': + resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -8991,11 +8991,11 @@ packages: zod: ^3.23.8 zod-openapi: ^4.1.0 - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-mixer@6.0.4: resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==} @@ -9158,8 +9158,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.19.0: - resolution: {integrity: sha512-Ni8sUkVWYK4KAcTtPjQ/UTiRk6jcsuDhPpxULapUDi8A/l8TSBk+t1GtJA1RsCzIJg0q6+J7bf35AwQigENWRQ==} + typescript-eslint@8.19.1: + resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -12198,81 +12198,81 @@ snapshots: dependencies: '@types/node': 22.10.5 - '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.0': + '@typescript-eslint/scope-manager@8.19.1': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@8.19.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) debug: 4.4.0 eslint: 9.17.0 - ts-api-utils: 1.3.0(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.7.2) + ts-api-utils: 2.0.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.19.1(eslint@9.17.0)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.1 + '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.0': + '@typescript-eslint/visitor-keys@8.19.1': dependencies: - '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/types': 8.19.1 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -13932,17 +13932,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -13953,7 +13953,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -13965,7 +13965,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -17610,7 +17610,7 @@ snapshots: optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 - ts-api-utils@1.3.0(typescript@5.7.2): + ts-api-utils@2.0.0(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -17789,11 +17789,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.19.0(eslint@9.17.0)(typescript@5.7.2): + typescript-eslint@8.19.1(eslint@9.17.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.0(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) eslint: 9.17.0 typescript: 5.7.2 transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 5f82c57b0..9b7fd629c 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", - "typescript-eslint": "^8.19.0" + "typescript-eslint": "^8.19.1" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From 64cc078b095e64edca17e07a09a4f5c340665f84 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Mon, 6 Jan 2025 19:37:18 +0100 Subject: [PATCH 181/262] feat: docker add to homarr (#1825) --- .../manage/tools/docker/docker-table.tsx | 34 ++++++- packages/api/src/router/app.ts | 18 ++++ packages/icons/src/auto-icon-searcher.ts | 4 +- .../src/docker/add-docker-app-to-homarr.tsx | 91 +++++++++++++++++++ .../modals-collection/src/docker/index.ts | 1 + packages/modals-collection/src/index.ts | 1 + packages/translation/src/lang/en.json | 16 ++++ packages/validation/src/app.ts | 3 + 8 files changed, 161 insertions(+), 7 deletions(-) create mode 100644 packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx create mode 100644 packages/modals-collection/src/docker/index.ts diff --git a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx index e5ca818de..5398aaff3 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx @@ -2,7 +2,14 @@ import type { MantineColor } from "@mantine/core"; import { Avatar, Badge, Box, Button, Group, Text } from "@mantine/core"; -import { IconPlayerPlay, IconPlayerStop, IconRefresh, IconRotateClockwise, IconTrash } from "@tabler/icons-react"; +import { + IconCategoryPlus, + IconPlayerPlay, + IconPlayerStop, + IconRefresh, + IconRotateClockwise, + IconTrash, +} from "@tabler/icons-react"; import type { MRT_ColumnDef } from "mantine-react-table"; import { MantineReactTable } from "mantine-react-table"; @@ -10,6 +17,8 @@ import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useTimeAgo } from "@homarr/common"; import type { DockerContainerState } from "@homarr/definitions"; +import { useModalAction } from "@homarr/modals"; +import { AddDockerAppToHomarr } from "@homarr/modals-collection"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; @@ -125,6 +134,7 @@ export function DockerTable(initialData: RouterOutputs["docker"]["getContainers" ); }, renderToolbarAlertBannerContent: ({ groupedAlert, table }) => { + const dockerContainers = table.getSelectedRowModel().rows.map((row) => row.original); return ( {groupedAlert} @@ -134,7 +144,7 @@ export function DockerTable(initialData: RouterOutputs["docker"]["getContainers" totalCount: table.getRowCount(), })} - row.original.id)} /> + ); }, @@ -151,16 +161,29 @@ export function DockerTable(initialData: RouterOutputs["docker"]["getContainers" } interface ContainerActionBarProps { - selectedIds: string[]; + selectedContainers: RouterOutputs["docker"]["getContainers"]["containers"]; } -const ContainerActionBar = ({ selectedIds }: ContainerActionBarProps) => { +const ContainerActionBar = ({ selectedContainers }: ContainerActionBarProps) => { + const t = useScopedI18n("docker.action"); + const { openModal } = useModalAction(AddDockerAppToHomarr); + const handleClick = () => { + openModal({ + selectedContainers, + }); + }; + + const selectedIds = selectedContainers.map((container) => container.id); + return ( + ); }; @@ -174,9 +197,10 @@ interface ContainerActionBarButtonProps { const ContainerActionBarButton = (props: ContainerActionBarButtonProps) => { const t = useScopedI18n("docker.action"); - const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation(); const utils = clientApi.useUtils(); + const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation(); + const handleClickAsync = async () => { await mutateAsync( { ids: props.selectedIds }, diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 5eb65804b..2d1a70ed1 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -3,12 +3,15 @@ import { TRPCError } from "@trpc/server"; import { asc, createId, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import { selectAppSchema } from "@homarr/db/validationSchemas"; +import { getIconForName } from "@homarr/icons"; import { validation, z } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { canUserSeeAppAsync } from "./app/app-access-control"; +const defaultIcon = "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/svg/homarr.svg"; + export const appRouter = createTRPCRouter({ getPaginated: protectedProcedure .input(validation.common.paginated) @@ -118,6 +121,21 @@ export const appRouter = createTRPCRouter({ href: input.href, }); }), + createMany: permissionRequiredProcedure + .requiresPermission("app-create") + .input(validation.app.createMany) + .output(z.void()) + .mutation(async ({ ctx, input }) => { + await ctx.db.insert(apps).values( + input.map((app) => ({ + id: createId(), + name: app.name, + description: app.description, + iconUrl: app.iconUrl ?? getIconForName(ctx.db, app.name).sync()?.url ?? defaultIcon, + href: app.href, + })), + ); + }), update: permissionRequiredProcedure .requiresPermission("app-modify-all") .input(convertIntersectionToZodObject(validation.app.edit)) diff --git a/packages/icons/src/auto-icon-searcher.ts b/packages/icons/src/auto-icon-searcher.ts index 0eef30e5e..06f3d9b76 100644 --- a/packages/icons/src/auto-icon-searcher.ts +++ b/packages/icons/src/auto-icon-searcher.ts @@ -2,8 +2,8 @@ import type { Database } from "@homarr/db"; import { like } from "@homarr/db"; import { icons } from "@homarr/db/schema"; -export const getIconForNameAsync = async (db: Database, name: string) => { - return await db.query.icons.findFirst({ +export const getIconForName = (db: Database, name: string) => { + return db.query.icons.findFirst({ where: like(icons.name, `%${name}%`), }); }; diff --git a/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx new file mode 100644 index 000000000..9a5f2d5fc --- /dev/null +++ b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx @@ -0,0 +1,91 @@ +import { Button, Group, Image, List, LoadingOverlay, Stack, Text, TextInput } from "@mantine/core"; + +import type { RouterOutputs } from "@homarr/api"; +import { clientApi } from "@homarr/api/client"; +import { useZodForm } from "@homarr/form"; +import { createModal } from "@homarr/modals"; +import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; +import { useI18n } from "@homarr/translation/client"; +import { z } from "@homarr/validation"; + +interface AddDockerAppToHomarrProps { + selectedContainers: RouterOutputs["docker"]["getContainers"]["containers"]; +} + +export const AddDockerAppToHomarrModal = createModal(({ actions, innerProps }) => { + const t = useI18n(); + const form = useZodForm( + z.object({ + containerUrls: z.array(z.string().url().nullable()), + }), + { + initialValues: { + containerUrls: innerProps.selectedContainers.map((container) => { + if (container.ports[0]) { + return `http://${container.ports[0].IP}:${container.ports[0].PublicPort}`; + } + + return null; + }), + }, + }, + ); + const { mutate, isPending } = clientApi.app.createMany.useMutation({ + onSuccess() { + actions.closeModal(); + showSuccessNotification({ + title: t("docker.action.addToHomarr.notification.success.title"), + message: t("docker.action.addToHomarr.notification.success.message"), + }); + }, + onError() { + showErrorNotification({ + title: t("docker.action.addToHomarr.notification.error.title"), + message: t("docker.action.addToHomarr.notification.error.message"), + }); + }, + }); + const handleSubmit = () => { + mutate( + innerProps.selectedContainers.map((container, index) => ({ + name: container.name, + iconUrl: container.iconUrl, + description: null, + href: form.values.containerUrls[index] ?? null, + })), + ); + }; + return ( +
+ + + + {innerProps.selectedContainers.map((container, index) => ( + } + key={container.id} + > + + {container.name} + + + + ))} + + + + + + + + ); +}).withOptions({ + defaultTitle(t) { + return t("docker.action.addToHomarr.modal.title"); + }, +}); diff --git a/packages/modals-collection/src/docker/index.ts b/packages/modals-collection/src/docker/index.ts new file mode 100644 index 000000000..31b956245 --- /dev/null +++ b/packages/modals-collection/src/docker/index.ts @@ -0,0 +1 @@ +export { AddDockerAppToHomarrModal as AddDockerAppToHomarr } from "./add-docker-app-to-homarr"; diff --git a/packages/modals-collection/src/index.ts b/packages/modals-collection/src/index.ts index 66672e577..30d81d892 100644 --- a/packages/modals-collection/src/index.ts +++ b/packages/modals-collection/src/index.ts @@ -2,3 +2,4 @@ export * from "./boards"; export * from "./invites"; export * from "./groups"; export * from "./search-engines"; +export * from "./docker"; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 11cf49ac6..4acd411c9 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2562,6 +2562,22 @@ "message": "Something went wrong while refreshing the containers" } } + }, + "addToHomarr": { + "label": "Add to Homarr", + "notification": { + "success": { + "title": "Added to Homarr", + "message": "Selected apps have been added to Homarr" + }, + "error": { + "title": "Could not add to Homarr", + "message": "Selected apps could not be added to Homarr" + } + }, + "modal": { + "title": "Add docker container(-s) to Homarr" + } } }, "error": { diff --git a/packages/validation/src/app.ts b/packages/validation/src/app.ts index 6ac45ac35..507c2f8bf 100644 --- a/packages/validation/src/app.ts +++ b/packages/validation/src/app.ts @@ -11,5 +11,8 @@ const editAppSchema = manageAppSchema.and(z.object({ id: z.string() })); export const appSchemas = { manage: manageAppSchema, + createMany: z + .array(manageAppSchema.omit({ iconUrl: true }).and(z.object({ iconUrl: z.string().min(1).nullable() }))) + .min(1), edit: editAppSchema, }; From e46b1c49f9bb1320f82b2de0585f7e2c7bc72c54 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:55:52 +0000 Subject: [PATCH 182/262] fix(deps): update dependency @tabler/icons-react to ^3.27.1 (#1875) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 54 ++++++++++++------------- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index f07eb449e..9cfd06c11 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -46,7 +46,7 @@ "@mantine/tiptap": "^7.15.2", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", - "@tabler/icons-react": "^3.26.0", + "@tabler/icons-react": "^3.27.1", "@tanstack/react-query": "^5.62.15", "@tanstack/react-query-devtools": "^5.62.15", "@tanstack/react-query-next-experimental": "5.62.15", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index c7998951a..3a2d156ef 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,7 +33,7 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.2", - "@tabler/icons-react": "^3.26.0", + "@tabler/icons-react": "^3.27.1", "dayjs": "^1.11.13", "next": "15.1.3", "react": "19.0.0", diff --git a/packages/notifications/package.json b/packages/notifications/package.json index fc5726a6d..6a42a979f 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/ui": "workspace:^0.1.0", "@mantine/notifications": "^7.15.2", - "@tabler/icons-react": "^3.26.0" + "@tabler/icons-react": "^3.27.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 87433e780..7320f8983 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -35,7 +35,7 @@ "@mantine/core": "^7.15.2", "@mantine/hooks": "^7.15.2", "@mantine/spotlight": "^7.15.2", - "@tabler/icons-react": "^3.26.0", + "@tabler/icons-react": "^3.27.1", "jotai": "^2.11.0", "next": "15.1.3", "react": "19.0.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index d9b323e0e..ec5f9c338 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -32,7 +32,7 @@ "@mantine/core": "^7.15.2", "@mantine/dates": "^7.15.2", "@mantine/hooks": "^7.15.2", - "@tabler/icons-react": "^3.26.0", + "@tabler/icons-react": "^3.27.1", "mantine-react-table": "2.0.0-beta.7", "next": "15.1.3", "react": "19.0.0", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 6da26e990..a0ef535bb 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -43,7 +43,7 @@ "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.2", "@mantine/hooks": "^7.15.2", - "@tabler/icons-react": "^3.26.0", + "@tabler/icons-react": "^3.27.1", "@tiptap/extension-color": "2.11.0", "@tiptap/extension-highlight": "2.11.0", "@tiptap/extension-image": "2.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed4cb0c0e..67362bef7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,8 +173,8 @@ importers: specifier: ^0.11.1 version: 0.11.1(typescript@5.7.2)(zod@3.24.1) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) '@tanstack/react-query': specifier: ^5.62.15 version: 5.62.15(react@19.0.0) @@ -228,7 +228,7 @@ importers: version: 2.11.0(@types/react@19.0.3)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1194,8 +1194,8 @@ importers: specifier: ^7.15.2 version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -1234,8 +1234,8 @@ importers: specifier: ^7.15.2 version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1535,8 +1535,8 @@ importers: specifier: ^7.15.2 version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) jotai: specifier: ^2.11.0 version: 2.11.0(@types/react@18.3.13)(react@19.0.0) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1642,11 +1642,11 @@ importers: specifier: ^7.15.2 version: 7.15.2(react@19.0.0) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1767,8 +1767,8 @@ importers: specifier: ^7.15.2 version: 7.15.2(react@19.0.0) '@tabler/icons-react': - specifier: ^3.26.0 - version: 3.26.0(react@19.0.0) + specifier: ^3.27.1 + version: 3.27.1(react@19.0.0) '@tiptap/extension-color': specifier: 2.11.0 version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/extension-text-style@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -3808,13 +3808,13 @@ packages: typescript: optional: true - '@tabler/icons-react@3.26.0': - resolution: {integrity: sha512-t18Zmu1ROktB7M8hWQ6vJw+mNpI/LPk5PPxLuE+kNB+4Zzf38GfETL8VF98inhzcfHohsggdROzMzwSAfjcAxw==} + '@tabler/icons-react@3.27.1': + resolution: {integrity: sha512-4C8PPvWPIQZvHgpWSGVIJUAbZz1qhKHvaSi9GWgXaDYB9CAfVz4puEcjo3nFCeg1OUPv3ZQZ0Ste0nh9/IeuWw==} peerDependencies: react: '>= 16' - '@tabler/icons@3.26.0': - resolution: {integrity: sha512-oO3D4ss+DxzxqU1aDy0f1HmToyrO0gcQWIMpzHAfV1quPUx0BZYvNm5xz1DQb4DxNm/+xNvbBGLJy4pzTLYWag==} + '@tabler/icons@3.27.1': + resolution: {integrity: sha512-Utt80OeExBV/Pi9m9Z7ZRHOHQPapMO8t4mCSMb/n5oiLWCEU2HX+9mGzo772SVxyDZ3YQBgmzIYnGKhL3tUSSQ==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} @@ -11635,12 +11635,12 @@ snapshots: optionalDependencies: typescript: 5.7.2 - '@tabler/icons-react@3.26.0(react@19.0.0)': + '@tabler/icons-react@3.27.1(react@19.0.0)': dependencies: - '@tabler/icons': 3.26.0 + '@tabler/icons': 3.27.1 react: 19.0.0 - '@tabler/icons@3.26.0': {} + '@tabler/icons@3.27.1': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: @@ -15345,12 +15345,12 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) - '@tabler/icons-react': 3.26.0(react@19.0.0) + '@tabler/icons-react': 3.27.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -15359,12 +15359,12 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.26.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.2(react@19.0.0) - '@tabler/icons-react': 3.26.0(react@19.0.0) + '@tabler/icons-react': 3.27.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From 6a68ccfee4f142c38491613ba28c846825575b1a Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 6 Jan 2025 19:59:25 +0100 Subject: [PATCH 183/262] chore(config): change next-config from mjs to typescript (#1861) --- Dockerfile | 2 +- apps/nextjs/{next.config.mjs => next.config.ts} | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) rename apps/nextjs/{next.config.mjs => next.config.ts} (81%) diff --git a/Dockerfile b/Dockerfile index 1dc496491..a52519f94 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,7 @@ RUN mkdir -p /var/cache/nginx && \ touch /run/nginx/nginx.pid && \ mkdir -p /etc/nginx/templates /etc/nginx/ssl/certs -COPY --from=builder /app/apps/nextjs/next.config.mjs . +COPY --from=builder /app/apps/nextjs/next.config.ts . COPY --from=builder /app/apps/nextjs/package.json . COPY --from=builder /app/apps/tasks/tasks.cjs ./apps/tasks/tasks.cjs diff --git a/apps/nextjs/next.config.mjs b/apps/nextjs/next.config.ts similarity index 81% rename from apps/nextjs/next.config.mjs rename to apps/nextjs/next.config.ts index bd57eb1a2..5e36315b1 100644 --- a/apps/nextjs/next.config.mjs +++ b/apps/nextjs/next.config.ts @@ -3,6 +3,7 @@ import "@homarr/auth/env.mjs"; import "@homarr/db/env.mjs"; import "@homarr/common/env.mjs"; +import type { NextConfig } from "next"; import MillionLint from "@million/lint"; import createNextIntlPlugin from "next-intl/plugin"; @@ -11,14 +12,22 @@ import "./src/env.mjs"; // Package path does not work... so we need to use relative path const withNextIntl = createNextIntlPlugin("../../packages/translation/src/request.ts"); -/** @type {import("next").NextConfig} */ -const nextConfig = { +interface WebpackConfig { + module: { + rules: { + test: RegExp; + loader: string; + }[]; + }; +} + +const nextConfig: NextConfig = { output: "standalone", reactStrictMode: true, /** We already do linting and typechecking as separate tasks in CI */ eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, - webpack: (config, { isServer }) => { + webpack: (config: WebpackConfig, { isServer }) => { if (isServer) { config.module.rules.push({ test: /\.node$/, @@ -38,6 +47,7 @@ const nextConfig = { }; // Skip transform is used because of webpack loader, without it for example 'Tooltip.Floating' will not work and show an error +// eslint-disable-next-line @typescript-eslint/no-unused-vars const withMillionLint = MillionLint.next({ rsc: true, skipTransform: true, telemetry: false }); export default withNextIntl(nextConfig); From 65befa22ba91c36a3734ac6dc027175dc9fca892 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 6 Jan 2025 19:59:40 +0100 Subject: [PATCH 184/262] feat(spotlight): add default search engine (#1807) --- .../_components/search-settings-form.tsx | 29 + .../src/app/[locale]/manage/settings/page.tsx | 5 + .../_change-default-search-engine.tsx | 67 + .../manage/users/[userId]/general/page.tsx | 7 + .../search-engine/search-engine-router.ts | 72 +- packages/api/src/router/user.ts | 39 + .../mysql/0019_crazy_marvel_zombies.sql | 2 + .../migrations/mysql/meta/0019_snapshot.json | 1684 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../sqlite/0019_steady_darkhawk.sql | 1 + .../migrations/sqlite/meta/0019_snapshot.json | 1609 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 12 +- packages/db/schema/sqlite.ts | 12 +- packages/server-settings/src/index.ts | 4 + .../actions/items/group-action-item.tsx | 4 +- .../spotlight/src/components/spotlight.tsx | 45 +- packages/spotlight/src/lib/group.ts | 8 +- packages/spotlight/src/lib/interaction.ts | 15 +- .../external/search-engines-search-group.tsx | 91 +- .../modes/home/home-search-engine-group.tsx | 173 ++ packages/spotlight/src/modes/home/index.tsx | 3 +- packages/translation/src/lang/en.json | 36 + packages/validation/src/user.ts | 5 + 24 files changed, 3849 insertions(+), 88 deletions(-) create mode 100644 apps/nextjs/src/app/[locale]/manage/settings/_components/search-settings-form.tsx create mode 100644 apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx create mode 100644 packages/db/migrations/mysql/0019_crazy_marvel_zombies.sql create mode 100644 packages/db/migrations/mysql/meta/0019_snapshot.json create mode 100644 packages/db/migrations/sqlite/0019_steady_darkhawk.sql create mode 100644 packages/db/migrations/sqlite/meta/0019_snapshot.json create mode 100644 packages/spotlight/src/modes/home/home-search-engine-group.tsx diff --git a/apps/nextjs/src/app/[locale]/manage/settings/_components/search-settings-form.tsx b/apps/nextjs/src/app/[locale]/manage/settings/_components/search-settings-form.tsx new file mode 100644 index 000000000..a39cab70d --- /dev/null +++ b/apps/nextjs/src/app/[locale]/manage/settings/_components/search-settings-form.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { Select } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import type { ServerSettings } from "@homarr/server-settings"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { CommonSettingsForm } from "./common-form"; + +export const SearchSettingsForm = ({ defaultValues }: { defaultValues: ServerSettings["search"] }) => { + const tSearch = useScopedI18n("management.page.settings.section.search"); + const [selectableSearchEngines] = clientApi.searchEngine.getSelectable.useSuspenseQuery({ withIntegrations: false }); + + return ( + + {(form) => ( + <> + + + + + + + + ); +}; + +type FormType = z.infer; diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx index 9acc8ff34..8753412b2 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/page.tsx @@ -11,6 +11,7 @@ import { DangerZoneItem, DangerZoneRoot } from "~/components/manage/danger-zone" import { catchTrpcNotFound } from "~/errors/trpc-catch-error"; import { createMetaTitle } from "~/metadata"; import { canAccessUserEditPage } from "../access"; +import { ChangeDefaultSearchEngineForm } from "./_components/_change-default-search-engine"; import { ChangeHomeBoardForm } from "./_components/_change-home-board"; import { DeleteUserButton } from "./_components/_delete-user-button"; import { FirstDayOfWeek } from "./_components/_first-day-of-week"; @@ -60,6 +61,7 @@ export default async function EditUserPage(props: Props) { } const boards = await api.board.getAllBoards(); + const searchEngines = await api.searchEngine.getSelectable(); const isCredentialsUser = user.provider === "credentials"; @@ -97,6 +99,11 @@ export default async function EditUserPage(props: Props) { /> + + {tGeneral("item.defaultSearchEngine")} + + + {tGeneral("item.firstDayOfWeek")} diff --git a/packages/api/src/router/search-engine/search-engine-router.ts b/packages/api/src/router/search-engine/search-engine-router.ts index 0d48ab226..49aab777c 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -1,12 +1,13 @@ import { TRPCError } from "@trpc/server"; -import { createId, eq, like, sql } from "@homarr/db"; -import { searchEngines } from "@homarr/db/schema"; +import { asc, createId, eq, like, sql } from "@homarr/db"; +import { getServerSettingByKeyAsync } from "@homarr/db/queries"; +import { searchEngines, users } from "@homarr/db/schema"; import { integrationCreator } from "@homarr/integrations"; -import { validation } from "@homarr/validation"; +import { validation, z } from "@homarr/validation"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; -import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc"; +import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; export const searchEngineRouter = createTRPCRouter({ getPaginated: protectedProcedure.input(validation.common.paginated).query(async ({ input, ctx }) => { @@ -29,6 +30,21 @@ export const searchEngineRouter = createTRPCRouter({ totalCount: searchEngineCount[0]?.count ?? 0, }; }), + getSelectable: protectedProcedure + .input(z.object({ withIntegrations: z.boolean() }).default({ withIntegrations: true })) + .query(async ({ ctx, input }) => { + return await ctx.db.query.searchEngines + .findMany({ + orderBy: asc(searchEngines.name), + where: input.withIntegrations ? undefined : eq(searchEngines.type, "generic"), + columns: { + id: true, + name: true, + }, + }) + .then((engines) => engines.map((engine) => ({ value: engine.id, label: engine.name }))); + }), + byId: protectedProcedure.input(validation.common.byId).query(async ({ ctx, input }) => { const searchEngine = await ctx.db.query.searchEngines.findFirst({ where: eq(searchEngines.id, input.id), @@ -55,6 +71,54 @@ export const searchEngineRouter = createTRPCRouter({ urlTemplate: searchEngine.urlTemplate!, }; }), + getDefaultSearchEngine: publicProcedure.query(async ({ ctx }) => { + const userDefaultId = ctx.session?.user.id + ? ((await ctx.db.query.users + .findFirst({ + where: eq(users.id, ctx.session.user.id), + columns: { + defaultSearchEngineId: true, + }, + }) + .then((user) => user?.defaultSearchEngineId)) ?? null) + : null; + + if (userDefaultId) { + return await ctx.db.query.searchEngines.findFirst({ + where: eq(searchEngines.id, userDefaultId), + with: { + integration: { + columns: { + kind: true, + url: true, + id: true, + }, + }, + }, + }); + } + + const serverDefaultId = await getServerSettingByKeyAsync(ctx.db, "search").then( + (setting) => setting.defaultSearchEngineId, + ); + + if (serverDefaultId) { + return await ctx.db.query.searchEngines.findFirst({ + where: eq(searchEngines.id, serverDefaultId), + with: { + integration: { + columns: { + kind: true, + url: true, + id: true, + }, + }, + }, + }); + } + + return null; + }), search: protectedProcedure.input(validation.common.search).query(async ({ ctx, input }) => { return await ctx.db.query.searchEngines.findMany({ where: like(searchEngines.short, `${input.query.toLowerCase().trim()}%`), diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 4d1691f29..168d850bb 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -211,6 +211,7 @@ export const userRouter = createTRPCRouter({ homeBoardId: true, firstDayOfWeek: true, pingIconsEnabled: true, + defaultSearchEngineId: true, }), ) .meta({ openapi: { method: "GET", path: "/api/users/{userId}", tags: ["users"], protect: true } }) @@ -233,6 +234,7 @@ export const userRouter = createTRPCRouter({ homeBoardId: true, firstDayOfWeek: true, pingIconsEnabled: true, + defaultSearchEngineId: true, }, where: eq(users.id, input.userId), }); @@ -406,6 +408,43 @@ export const userRouter = createTRPCRouter({ }) .where(eq(users.id, input.userId)); }), + changeDefaultSearchEngine: protectedProcedure + .input( + convertIntersectionToZodObject(validation.user.changeDefaultSearchEngine.and(z.object({ userId: z.string() }))), + ) + .output(z.void()) + .meta({ openapi: { method: "PATCH", path: "/api/users/changeSearchEngine", tags: ["users"], protect: true } }) + .mutation(async ({ input, ctx }) => { + const user = ctx.session.user; + // Only admins can change other users passwords + if (!user.permissions.includes("admin") && user.id !== input.userId) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + const dbUser = await ctx.db.query.users.findFirst({ + columns: { + id: true, + }, + where: eq(users.id, input.userId), + }); + + if (!dbUser) { + throw new TRPCError({ + code: "NOT_FOUND", + message: "User not found", + }); + } + + await ctx.db + .update(users) + .set({ + defaultSearchEngineId: input.defaultSearchEngineId, + }) + .where(eq(users.id, input.userId)); + }), changeColorScheme: protectedProcedure .input(validation.user.changeColorScheme) .output(z.void()) diff --git a/packages/db/migrations/mysql/0019_crazy_marvel_zombies.sql b/packages/db/migrations/mysql/0019_crazy_marvel_zombies.sql new file mode 100644 index 000000000..16985974f --- /dev/null +++ b/packages/db/migrations/mysql/0019_crazy_marvel_zombies.sql @@ -0,0 +1,2 @@ +ALTER TABLE `user` ADD `default_search_engine_id` varchar(64);--> statement-breakpoint +ALTER TABLE `user` ADD CONSTRAINT `user_default_search_engine_id_search_engine_id_fk` FOREIGN KEY (`default_search_engine_id`) REFERENCES `search_engine`(`id`) ON DELETE set null ON UPDATE no action; \ No newline at end of file diff --git a/packages/db/migrations/mysql/meta/0019_snapshot.json b/packages/db/migrations/mysql/meta/0019_snapshot.json new file mode 100644 index 000000000..91325ec34 --- /dev/null +++ b/packages/db/migrations/mysql/meta/0019_snapshot.json @@ -0,0 +1,1684 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "0587ca9d-bbfc-4241-ba82-e52a7664a1dc", + "prevId": "028a5116-ccea-4095-9434-7ac3bf726c9a", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "name": "account_provider_provider_account_id_pk", + "columns": ["provider", "provider_account_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "apiKey_id": { + "name": "apiKey_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "app_id": { + "name": "app_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "name": "boardGroupPermission_board_id_group_id_permission_pk", + "columns": ["board_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "name": "boardUserPermission_board_id_user_id_permission_pk", + "columns": ["board_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(256)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('fixed')" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('no-repeat')" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('cover')" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fa5252')" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('#fd7e14')" + }, + "opacity": { + "name": "opacity", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": {}, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "board_id": { + "name": "board_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "name": "groupMember_group_id_user_id_pk", + "columns": ["group_id", "user_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "group_id": { + "name": "group_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"] + } + }, + "checkConstraint": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(150)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "iconRepository_id": { + "name": "iconRepository_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(250)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "icon_id": { + "name": "icon_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_group_permission__pk": { + "name": "integration_group_permission__pk", + "columns": ["integration_id", "group_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "name": "integration_item_item_id_integration_id_pk", + "columns": ["item_id", "integration_id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "varchar(16)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "name": "integrationSecret_integration_id_kind_pk", + "columns": ["integration_id", "kind"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "name": "integrationUserPermission_integration_id_user_id_permission_pk", + "columns": ["integration_id", "user_id", "permission"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "varchar(128)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "integration_id": { + "name": "integration_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "invite_id": { + "name": "invite_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"] + } + }, + "checkConstraint": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "item_id": { + "name": "item_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "BLOB", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "creator_id": { + "name": "creator_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "media_id": { + "name": "media_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "onboarding": { + "name": "onboarding", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "step": { + "name": "step", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "previous_step": { + "name": "previous_step", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "onboarding_id": { + "name": "onboarding_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "varchar(8)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "search_engine_id": { + "name": "search_engine_id", + "columns": ["id"] + } + }, + "uniqueConstraints": { + "search_engine_short_unique": { + "name": "search_engine_short_unique", + "columns": ["short"] + } + }, + "checkConstraint": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "section_id": { + "name": "section_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "('{\"json\": {}}')" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "serverSetting_setting_key": { + "name": "serverSetting_setting_key", + "columns": ["setting_key"] + } + }, + "uniqueConstraints": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"] + } + }, + "checkConstraint": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "session_session_token": { + "name": "session_session_token", + "columns": ["session_token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "timestamp", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "default_search_engine_id": { + "name": "default_search_engine_id", + "type": "varchar(64)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "varchar(5)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "tinyint", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "user_default_search_engine_id_search_engine_id_fk": { + "name": "user_default_search_engine_id_search_engine_id_fk", + "tableFrom": "user", + "tableTo": "search_engine", + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "user_id": { + "name": "user_id", + "columns": ["id"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "varchar(64)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "varchar(512)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "timestamp", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "name": "verificationToken_identifier_token_pk", + "columns": ["identifier", "token"] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} diff --git a/packages/db/migrations/mysql/meta/_journal.json b/packages/db/migrations/mysql/meta/_journal.json index cd5f87398..381e67a28 100644 --- a/packages/db/migrations/mysql/meta/_journal.json +++ b/packages/db/migrations/mysql/meta/_journal.json @@ -134,6 +134,13 @@ "when": 1735593853768, "tag": "0018_mighty_shaman", "breakpoints": true + }, + { + "idx": 19, + "version": "5", + "when": 1735651231818, + "tag": "0019_crazy_marvel_zombies", + "breakpoints": true } ] } diff --git a/packages/db/migrations/sqlite/0019_steady_darkhawk.sql b/packages/db/migrations/sqlite/0019_steady_darkhawk.sql new file mode 100644 index 000000000..a3da46c8d --- /dev/null +++ b/packages/db/migrations/sqlite/0019_steady_darkhawk.sql @@ -0,0 +1 @@ +ALTER TABLE `user` ADD `default_search_engine_id` text REFERENCES search_engine(id); \ No newline at end of file diff --git a/packages/db/migrations/sqlite/meta/0019_snapshot.json b/packages/db/migrations/sqlite/meta/0019_snapshot.json new file mode 100644 index 000000000..92fd5590b --- /dev/null +++ b/packages/db/migrations/sqlite/meta/0019_snapshot.json @@ -0,0 +1,1609 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "08cb7257-ba7e-4d4e-9fe7-85656fc115b0", + "prevId": "79b4322d-1df0-4d65-afef-e9b576874eeb", + "tables": { + "account": { + "name": "account", + "columns": { + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_account_id": { + "name": "provider_account_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "token_type": { + "name": "token_type", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "session_state": { + "name": "session_state", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "userId_idx": { + "name": "userId_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "account_provider_provider_account_id_pk": { + "columns": ["provider", "provider_account_id"], + "name": "account_provider_provider_account_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "apiKey": { + "name": "apiKey", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "api_key": { + "name": "api_key", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "apiKey_user_id_user_id_fk": { + "name": "apiKey_user_id_user_id_fk", + "tableFrom": "apiKey", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "app": { + "name": "app", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "href": { + "name": "href", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardGroupPermission": { + "name": "boardGroupPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardGroupPermission_board_id_board_id_fk": { + "name": "boardGroupPermission_board_id_board_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardGroupPermission_group_id_group_id_fk": { + "name": "boardGroupPermission_group_id_group_id_fk", + "tableFrom": "boardGroupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardGroupPermission_board_id_group_id_permission_pk": { + "columns": ["board_id", "group_id", "permission"], + "name": "boardGroupPermission_board_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "boardUserPermission": { + "name": "boardUserPermission", + "columns": { + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "boardUserPermission_board_id_board_id_fk": { + "name": "boardUserPermission_board_id_board_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "boardUserPermission_user_id_user_id_fk": { + "name": "boardUserPermission_user_id_user_id_fk", + "tableFrom": "boardUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "boardUserPermission_board_id_user_id_permission_pk": { + "columns": ["board_id", "user_id", "permission"], + "name": "boardUserPermission_board_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "board": { + "name": "board", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "is_public": { + "name": "is_public", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "page_title": { + "name": "page_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "meta_title": { + "name": "meta_title", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "logo_image_url": { + "name": "logo_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "favicon_image_url": { + "name": "favicon_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_url": { + "name": "background_image_url", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "background_image_attachment": { + "name": "background_image_attachment", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'fixed'" + }, + "background_image_repeat": { + "name": "background_image_repeat", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'no-repeat'" + }, + "background_image_size": { + "name": "background_image_size", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'cover'" + }, + "primary_color": { + "name": "primary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fa5252'" + }, + "secondary_color": { + "name": "secondary_color", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'#fd7e14'" + }, + "opacity": { + "name": "opacity", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 100 + }, + "custom_css": { + "name": "custom_css", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "column_count": { + "name": "column_count", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 10 + } + }, + "indexes": { + "board_name_unique": { + "name": "board_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "board_creator_id_user_id_fk": { + "name": "board_creator_id_user_id_fk", + "tableFrom": "board", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupMember": { + "name": "groupMember", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupMember_group_id_group_id_fk": { + "name": "groupMember_group_id_group_id_fk", + "tableFrom": "groupMember", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "groupMember_user_id_user_id_fk": { + "name": "groupMember_user_id_user_id_fk", + "tableFrom": "groupMember", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "groupMember_group_id_user_id_pk": { + "columns": ["group_id", "user_id"], + "name": "groupMember_group_id_user_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "groupPermission": { + "name": "groupPermission", + "columns": { + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "groupPermission_group_id_group_id_fk": { + "name": "groupPermission_group_id_group_id_fk", + "tableFrom": "groupPermission", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "group": { + "name": "group", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "owner_id": { + "name": "owner_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "group_name_unique": { + "name": "group_name_unique", + "columns": ["name"], + "isUnique": true + } + }, + "foreignKeys": { + "group_owner_id_user_id_fk": { + "name": "group_owner_id_user_id_fk", + "tableFrom": "group", + "tableTo": "user", + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "iconRepository": { + "name": "iconRepository", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "icon": { + "name": "icon", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "checksum": { + "name": "checksum", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "icon_repository_id": { + "name": "icon_repository_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "icon_icon_repository_id_iconRepository_id_fk": { + "name": "icon_icon_repository_id_iconRepository_id_fk", + "tableFrom": "icon", + "tableTo": "iconRepository", + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationGroupPermissions": { + "name": "integrationGroupPermissions", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "group_id": { + "name": "group_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationGroupPermissions_integration_id_integration_id_fk": { + "name": "integrationGroupPermissions_integration_id_integration_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationGroupPermissions_group_id_group_id_fk": { + "name": "integrationGroupPermissions_group_id_group_id_fk", + "tableFrom": "integrationGroupPermissions", + "tableTo": "group", + "columnsFrom": ["group_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationGroupPermissions_integration_id_group_id_permission_pk": { + "columns": ["integration_id", "group_id", "permission"], + "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration_item": { + "name": "integration_item", + "columns": { + "item_id": { + "name": "item_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integration_item_item_id_item_id_fk": { + "name": "integration_item_item_id_item_id_fk", + "tableFrom": "integration_item", + "tableTo": "item", + "columnsFrom": ["item_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integration_item_integration_id_integration_id_fk": { + "name": "integration_item_integration_id_integration_id_fk", + "tableFrom": "integration_item", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integration_item_item_id_integration_id_pk": { + "columns": ["item_id", "integration_id"], + "name": "integration_item_item_id_integration_id_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationSecret": { + "name": "integrationSecret", + "columns": { + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration_secret__kind_idx": { + "name": "integration_secret__kind_idx", + "columns": ["kind"], + "isUnique": false + }, + "integration_secret__updated_at_idx": { + "name": "integration_secret__updated_at_idx", + "columns": ["updated_at"], + "isUnique": false + } + }, + "foreignKeys": { + "integrationSecret_integration_id_integration_id_fk": { + "name": "integrationSecret_integration_id_integration_id_fk", + "tableFrom": "integrationSecret", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationSecret_integration_id_kind_pk": { + "columns": ["integration_id", "kind"], + "name": "integrationSecret_integration_id_kind_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integrationUserPermission": { + "name": "integrationUserPermission", + "columns": { + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "permission": { + "name": "permission", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "integrationUserPermission_integration_id_integration_id_fk": { + "name": "integrationUserPermission_integration_id_integration_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "integrationUserPermission_user_id_user_id_fk": { + "name": "integrationUserPermission_user_id_user_id_fk", + "tableFrom": "integrationUserPermission", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": { + "integrationUserPermission_integration_id_user_id_permission_pk": { + "columns": ["integration_id", "user_id", "permission"], + "name": "integrationUserPermission_integration_id_user_id_permission_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "integration": { + "name": "integration", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "url": { + "name": "url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "integration__kind_idx": { + "name": "integration__kind_idx", + "columns": ["kind"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "invite": { + "name": "invite", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expiration_date": { + "name": "expiration_date", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "invite_token_unique": { + "name": "invite_token_unique", + "columns": ["token"], + "isUnique": true + } + }, + "foreignKeys": { + "invite_creator_id_user_id_fk": { + "name": "invite_creator_id_user_id_fk", + "tableFrom": "invite", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "item": { + "name": "item", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "section_id": { + "name": "section_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "options": { + "name": "options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + }, + "advanced_options": { + "name": "advanced_options", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": {}, + "foreignKeys": { + "item_section_id_section_id_fk": { + "name": "item_section_id_section_id_fk", + "tableFrom": "item", + "tableTo": "section", + "columnsFrom": ["section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "media": { + "name": "media", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content": { + "name": "content", + "type": "blob", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "content_type": { + "name": "content_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "size": { + "name": "size", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + }, + "creator_id": { + "name": "creator_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "media_creator_id_user_id_fk": { + "name": "media_creator_id_user_id_fk", + "tableFrom": "media", + "tableTo": "user", + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "onboarding": { + "name": "onboarding", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "step": { + "name": "step", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "previous_step": { + "name": "previous_step", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "search_engine": { + "name": "search_engine", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "icon_url": { + "name": "icon_url", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "short": { + "name": "short", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "url_template": { + "name": "url_template", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "type": { + "name": "type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'generic'" + }, + "integration_id": { + "name": "integration_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "search_engine_short_unique": { + "name": "search_engine_short_unique", + "columns": ["short"], + "isUnique": true + } + }, + "foreignKeys": { + "search_engine_integration_id_integration_id_fk": { + "name": "search_engine_integration_id_integration_id_fk", + "tableFrom": "search_engine", + "tableTo": "integration", + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "section": { + "name": "section", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "board_id": { + "name": "board_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "kind": { + "name": "kind", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "x_offset": { + "name": "x_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "y_offset": { + "name": "y_offset", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "width": { + "name": "width", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "height": { + "name": "height", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "parent_section_id": { + "name": "parent_section_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": { + "section_board_id_board_id_fk": { + "name": "section_board_id_board_id_fk", + "tableFrom": "section", + "tableTo": "board", + "columnsFrom": ["board_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "section_parent_section_id_section_id_fk": { + "name": "section_parent_section_id_section_id_fk", + "tableFrom": "section", + "tableTo": "section", + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "serverSetting": { + "name": "serverSetting", + "columns": { + "setting_key": { + "name": "setting_key", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'{\"json\": {}}'" + } + }, + "indexes": { + "serverSetting_settingKey_unique": { + "name": "serverSetting_settingKey_unique", + "columns": ["setting_key"], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "session": { + "name": "session", + "columns": { + "session_token": { + "name": "session_token", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_id_idx": { + "name": "user_id_idx", + "columns": ["user_id"], + "isUnique": false + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "salt": { + "name": "salt", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'credentials'" + }, + "home_board_id": { + "name": "home_board_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "default_search_engine_id": { + "name": "default_search_engine_id", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color_scheme": { + "name": "color_scheme", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'dark'" + }, + "first_day_of_week": { + "name": "first_day_of_week", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": 1 + }, + "ping_icons_enabled": { + "name": "ping_icons_enabled", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + } + }, + "indexes": {}, + "foreignKeys": { + "user_home_board_id_board_id_fk": { + "name": "user_home_board_id_board_id_fk", + "tableFrom": "user", + "tableTo": "board", + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + }, + "user_default_search_engine_id_search_engine_id_fk": { + "name": "user_default_search_engine_id_search_engine_id_fk", + "tableFrom": "user", + "tableTo": "search_engine", + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], + "onDelete": "set null", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "verificationToken": { + "name": "verificationToken", + "columns": { + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires": { + "name": "expires", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "verificationToken_identifier_token_pk": { + "columns": ["identifier", "token"], + "name": "verificationToken_identifier_token_pk" + } + }, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} diff --git a/packages/db/migrations/sqlite/meta/_journal.json b/packages/db/migrations/sqlite/meta/_journal.json index f98702c73..6de47a722 100644 --- a/packages/db/migrations/sqlite/meta/_journal.json +++ b/packages/db/migrations/sqlite/meta/_journal.json @@ -134,6 +134,13 @@ "when": 1735593831501, "tag": "0018_cheerful_tattoo", "breakpoints": true + }, + { + "idx": 19, + "version": "6", + "when": 1735651175378, + "tag": "0019_steady_darkhawk", + "breakpoints": true } ] } diff --git a/packages/db/schema/mysql.ts b/packages/db/schema/mysql.ts index eee05d801..9c7408e24 100644 --- a/packages/db/schema/mysql.ts +++ b/packages/db/schema/mysql.ts @@ -62,6 +62,9 @@ export const users = mysqlTable("user", { homeBoardId: varchar({ length: 64 }).references((): AnyMySqlColumn => boards.id, { onDelete: "set null", }), + defaultSearchEngineId: varchar({ length: 64 }).references(() => searchEngines.id, { + onDelete: "set null", + }), colorScheme: varchar({ length: 5 }).$type().default("dark").notNull(), firstDayOfWeek: tinyint().$type().default(1).notNull(), // Defaults to Monday pingIconsEnabled: boolean().default(false).notNull(), @@ -409,13 +412,17 @@ export const accountRelations = relations(accounts, ({ one }) => ({ }), })); -export const userRelations = relations(users, ({ many }) => ({ +export const userRelations = relations(users, ({ one, many }) => ({ accounts: many(accounts), boards: many(boards), boardPermissions: many(boardUserPermissions), groups: many(groupMembers), ownedGroups: many(groups), invites: many(invites), + defaultSearchEngine: one(searchEngines, { + fields: [users.defaultSearchEngineId], + references: [searchEngines.id], + }), })); export const mediaRelations = relations(medias, ({ one }) => ({ @@ -573,9 +580,10 @@ export const integrationItemRelations = relations(integrationItems, ({ one }) => }), })); -export const searchEngineRelations = relations(searchEngines, ({ one }) => ({ +export const searchEngineRelations = relations(searchEngines, ({ one, many }) => ({ integration: one(integrations, { fields: [searchEngines.integrationId], references: [integrations.id], }), + usersWithDefault: many(users), })); diff --git a/packages/db/schema/sqlite.ts b/packages/db/schema/sqlite.ts index e88a92297..5da9caa16 100644 --- a/packages/db/schema/sqlite.ts +++ b/packages/db/schema/sqlite.ts @@ -45,6 +45,9 @@ export const users = sqliteTable("user", { homeBoardId: text().references((): AnySQLiteColumn => boards.id, { onDelete: "set null", }), + defaultSearchEngineId: text().references(() => searchEngines.id, { + onDelete: "set null", + }), colorScheme: text().$type().default("dark").notNull(), firstDayOfWeek: int().$type().default(1).notNull(), // Defaults to Monday pingIconsEnabled: int({ mode: "boolean" }).default(false).notNull(), @@ -395,7 +398,7 @@ export const accountRelations = relations(accounts, ({ one }) => ({ }), })); -export const userRelations = relations(users, ({ many }) => ({ +export const userRelations = relations(users, ({ one, many }) => ({ accounts: many(accounts), boards: many(boards), boardPermissions: many(boardUserPermissions), @@ -403,6 +406,10 @@ export const userRelations = relations(users, ({ many }) => ({ ownedGroups: many(groups), invites: many(invites), medias: many(medias), + defaultSearchEngine: one(searchEngines, { + fields: [users.defaultSearchEngineId], + references: [searchEngines.id], + }), })); export const mediaRelations = relations(medias, ({ one }) => ({ @@ -560,9 +567,10 @@ export const integrationItemRelations = relations(integrationItems, ({ one }) => }), })); -export const searchEngineRelations = relations(searchEngines, ({ one }) => ({ +export const searchEngineRelations = relations(searchEngines, ({ one, many }) => ({ integration: one(integrations, { fields: [searchEngines.integrationId], references: [integrations.id], }), + usersWithDefault: many(users), })); diff --git a/packages/server-settings/src/index.ts b/packages/server-settings/src/index.ts index 779490f00..1381dc98f 100644 --- a/packages/server-settings/src/index.ts +++ b/packages/server-settings/src/index.ts @@ -7,6 +7,7 @@ export const defaultServerSettingsKeys = [ "board", "appearance", "culture", + "search", ] as const; export type ServerSettingsRecord = Record<(typeof defaultServerSettingsKeys)[number], Record>; @@ -33,6 +34,9 @@ export const defaultServerSettings = { culture: { defaultLocale: "en" as SupportedLanguage, }, + search: { + defaultSearchEngineId: null as string | null, + }, } satisfies ServerSettingsRecord; export type ServerSettings = typeof defaultServerSettings; diff --git a/packages/spotlight/src/components/actions/items/group-action-item.tsx b/packages/spotlight/src/components/actions/items/group-action-item.tsx index 6dd70c5ff..a4221f514 100644 --- a/packages/spotlight/src/components/actions/items/group-action-item.tsx +++ b/packages/spotlight/src/components/actions/items/group-action-item.tsx @@ -45,7 +45,9 @@ export const SpotlightGroupActionItem = diff --git a/packages/spotlight/src/components/spotlight.tsx b/packages/spotlight/src/components/spotlight.tsx index 70c0da866..1f4158076 100644 --- a/packages/spotlight/src/components/spotlight.tsx +++ b/packages/spotlight/src/components/spotlight.tsx @@ -1,10 +1,10 @@ "use client"; import type { Dispatch, SetStateAction } from "react"; -import { useEffect, useMemo, useRef, useState } from "react"; +import { useMemo, useRef, useState } from "react"; import { ActionIcon, Center, Group, Kbd } from "@mantine/core"; import { Spotlight as MantineSpotlight } from "@mantine/spotlight"; -import { IconSearch, IconX } from "@tabler/icons-react"; +import { IconQuestionMark, IconSearch, IconX } from "@tabler/icons-react"; import type { TranslationObject } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; @@ -12,53 +12,32 @@ import { useI18n } from "@homarr/translation/client"; import type { inferSearchInteractionOptions } from "../lib/interaction"; import type { SearchMode } from "../lib/mode"; import { searchModes } from "../modes"; -import { useSpotlightContextResults } from "../modes/home/context"; import { selectAction, spotlightStore } from "../spotlight-store"; import { SpotlightChildrenActions } from "./actions/children-actions"; import { SpotlightActionGroups } from "./actions/groups/action-group"; type SearchModeKey = keyof TranslationObject["search"]["mode"]; +const defaultMode = "home"; export const Spotlight = () => { - const items = useSpotlightContextResults(); - // We fallback to help if no context results are available - const defaultMode = items.length >= 1 ? "home" : "help"; const searchModeState = useState(defaultMode); const mode = searchModeState[0]; const activeMode = useMemo(() => searchModes.find((searchMode) => searchMode.modeKey === mode), [mode]); - /** - * The below logic is used to switch to home page if any context results are registered - * or to help page if context results are unregistered - */ - const previousLengthRef = useRef(items.length); - useEffect(() => { - if (items.length >= 1 && previousLengthRef.current === 0) { - searchModeState[1]("home"); - } else if (items.length === 0 && previousLengthRef.current >= 1) { - searchModeState[1]("help"); - } - - previousLengthRef.current = items.length; - }, [items.length, searchModeState]); - if (!activeMode) { return null; } // We use the "key" below to prevent the 'Different amounts of hooks' error - return ( - - ); + return ; }; interface SpotlightWithActiveModeProps { modeState: [SearchModeKey, Dispatch>]; activeMode: SearchMode; - defaultMode: SearchModeKey; } -const SpotlightWithActiveMode = ({ modeState, activeMode, defaultMode }: SpotlightWithActiveModeProps) => { +const SpotlightWithActiveMode = ({ modeState, activeMode }: SpotlightWithActiveModeProps) => { const [query, setQuery] = useState(""); const [mode, setMode] = modeState; const [childrenOptions, setChildrenOptions] = useState | null>(null); @@ -77,7 +56,7 @@ const SpotlightWithActiveMode = ({ modeState, activeMode, defaultMode }: Spotlig }} query={query} onQueryChange={(query) => { - if ((mode !== "help" && mode !== "home") || query.length !== 1) { + if (mode !== "help" || query.length !== 1) { setQuery(query); } @@ -110,7 +89,17 @@ const SpotlightWithActiveMode = ({ modeState, activeMode, defaultMode }: Spotlig }, }} rightSection={ - mode === defaultMode ? undefined : ( + mode === defaultMode ? ( + { + setMode("help"); + inputRef.current?.focus(); + }} + variant="subtle" + > + + + ) : ( { setMode(defaultMode); diff --git a/packages/spotlight/src/lib/group.ts b/packages/spotlight/src/lib/group.ts index 4049d1a8e..d68a1e05c 100644 --- a/packages/spotlight/src/lib/group.ts +++ b/packages/spotlight/src/lib/group.ts @@ -1,5 +1,4 @@ import type { JSX } from "react"; -import type { UseTRPCQueryResult } from "@trpc/react-query/shared"; import type { stringOrTranslation } from "@homarr/translation"; @@ -29,9 +28,12 @@ export type SearchGroup = any> = { filter: (query: string, option: TOption) => boolean; sort?: (query: string, options: [TOption, TOption]) => number; - useOptions: () => TOption[]; + useOptions: (query: string) => TOption[]; } > - | CommonSearchGroup UseTRPCQueryResult }>; + | CommonSearchGroup< + TOption, + { useQueryOptions: (query: string) => { data: TOption[] | undefined; isLoading: boolean; isError: boolean } } + >; export const createGroup = >(group: SearchGroup) => group; diff --git a/packages/spotlight/src/lib/interaction.ts b/packages/spotlight/src/lib/interaction.ts index b917b3bcd..1854c8c48 100644 --- a/packages/spotlight/src/lib/interaction.ts +++ b/packages/spotlight/src/lib/interaction.ts @@ -4,7 +4,7 @@ import type { TranslationObject } from "@homarr/translation"; import type { CreateChildrenOptionsProps } from "./children"; const createSearchInteraction = (type: TType) => ({ - optionsType: >() => ({ type, _inferOptions: {} as TOption }), + optionsType: | undefined>() => ({ type, _inferOptions: {} as TOption }), }); // This is used to define search interactions with their options @@ -20,20 +20,23 @@ const searchInteractions = [ // eslint-disable-next-line @typescript-eslint/no-explicit-any option: any; }>(), + createSearchInteraction("none").optionsType(), ] as const; // Union of all search interactions types export type SearchInteraction = (typeof searchInteractions)[number]["type"]; // Infer the options for the specified search interaction -export type inferSearchInteractionOptions = Extract< - (typeof searchInteractions)[number], - { type: TInteraction } ->["_inferOptions"]; +export type inferSearchInteractionOptions = Exclude< + Extract<(typeof searchInteractions)[number], { type: TInteraction }>["_inferOptions"], + undefined +>; // Infer the search interaction definition (type + options) for the specified search interaction export type inferSearchInteractionDefinition = { - [interactionKey in TInteraction]: { type: interactionKey } & inferSearchInteractionOptions; + [interactionKey in TInteraction]: inferSearchInteractionOptions extends never + ? { type: interactionKey } + : { type: interactionKey } & inferSearchInteractionOptions; }[TInteraction]; // Type used for helper functions to define basic search interactions diff --git a/packages/spotlight/src/modes/external/search-engines-search-group.tsx b/packages/spotlight/src/modes/external/search-engines-search-group.tsx index 2d73ba2e9..57bde8cb6 100644 --- a/packages/spotlight/src/modes/external/search-engines-search-group.tsx +++ b/packages/spotlight/src/modes/external/search-engines-search-group.tsx @@ -11,9 +11,11 @@ import { useScopedI18n } from "@homarr/translation/client"; import { createChildrenOptions } from "../../lib/children"; import { createGroup } from "../../lib/group"; +import type { inferSearchInteractionDefinition } from "../../lib/interaction"; import { interaction } from "../../lib/interaction"; type SearchEngine = RouterOutputs["searchEngine"]["search"][number]; +type FromIntegrationSearchResult = RouterOutputs["integration"]["searchInIntegration"][number]; // eslint-disable-next-line @typescript-eslint/consistent-type-definitions type MediaRequestChildrenProps = { @@ -33,6 +35,52 @@ type MediaRequestChildrenProps = { }; }; +export const useFromIntegrationSearchInteraction = ( + searchEngine: SearchEngine, + searchResult: FromIntegrationSearchResult, +): inferSearchInteractionDefinition<"link" | "javaScript" | "children"> => { + if (searchEngine.type !== "fromIntegration") { + throw new Error("Invalid search engine type"); + } + + if (!searchEngine.integration) { + throw new Error("Invalid search engine integration"); + } + + if ( + getIntegrationKindsByCategory("mediaRequest").some( + (categoryKind) => categoryKind === searchEngine.integration?.kind, + ) && + "type" in searchResult + ) { + const type = searchResult.type; + if (type === "person") { + return { + type: "link", + href: searchResult.link, + newTab: true, + }; + } + + return { + type: "children", + ...mediaRequestsChildrenOptions({ + result: { + ...searchResult, + type, + }, + integration: searchEngine.integration, + }), + }; + } + + return { + type: "link", + href: searchResult.link, + newTab: true, + }; +}; + const mediaRequestsChildrenOptions = createChildrenOptions({ useActions() { const { openModal } = useModalAction(RequestMediaModal); @@ -162,47 +210,8 @@ export const searchEnginesChildrenOptions = createChildrenOptions( ); }, - useInteraction(searchEngine) { - if (searchEngine.type !== "fromIntegration") { - throw new Error("Invalid search engine type"); - } - - if (!searchEngine.integration) { - throw new Error("Invalid search engine integration"); - } - - if ( - getIntegrationKindsByCategory("mediaRequest").some( - (categoryKind) => categoryKind === searchEngine.integration?.kind, - ) && - "type" in searchResult - ) { - const type = searchResult.type; - if (type === "person") { - return { - type: "link", - href: searchResult.link, - newTab: true, - }; - } - - return { - type: "children", - ...mediaRequestsChildrenOptions({ - result: { - ...searchResult, - type, - }, - integration: searchEngine.integration, - }), - }; - } - - return { - type: "link", - href: searchResult.link, - newTab: true, - }; + useInteraction() { + return useFromIntegrationSearchInteraction(searchEngine, searchResult); }, })); }, diff --git a/packages/spotlight/src/modes/home/home-search-engine-group.tsx b/packages/spotlight/src/modes/home/home-search-engine-group.tsx new file mode 100644 index 000000000..d99cb3713 --- /dev/null +++ b/packages/spotlight/src/modes/home/home-search-engine-group.tsx @@ -0,0 +1,173 @@ +import { Box, Group, Stack, Text } from "@mantine/core"; +import type { TablerIcon } from "@tabler/icons-react"; +import { IconCaretUpDown, IconSearch, IconSearchOff } from "@tabler/icons-react"; + +import type { RouterOutputs } from "@homarr/api"; +import { clientApi } from "@homarr/api/client"; +import type { Session } from "@homarr/auth"; +import { useSession } from "@homarr/auth/client"; +import type { TranslationFunction } from "@homarr/translation"; +import { useI18n } from "@homarr/translation/client"; + +import { createGroup } from "../../lib/group"; +import type { inferSearchInteractionDefinition, SearchInteraction } from "../../lib/interaction"; +import { useFromIntegrationSearchInteraction } from "../external/search-engines-search-group"; + +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type GroupItem = { + id: string; + name: string; + description?: string; + icon: TablerIcon | string; + useInteraction: (query: string) => inferSearchInteractionDefinition; +}; + +export const homeSearchEngineGroup = createGroup({ + title: (t) => t("search.mode.home.group.search.title"), + keyPath: "id", + Component(item) { + const icon = + typeof item.icon !== "string" ? ( + + ) : ( + + {item.name} + + ); + + return ( + + {icon} + + {item.name} + {item.description && ( + + {item.description} + + )} + + + ); + }, + useInteraction(item, query) { + return item.useInteraction(query); + }, + filter() { + return true; + }, + useQueryOptions(query) { + const t = useI18n(); + const { data: session, status } = useSession(); + const { data: defaultSearchEngine, ...defaultSearchEngineQuery } = + clientApi.searchEngine.getDefaultSearchEngine.useQuery(undefined, { + enabled: status !== "loading", + }); + const fromIntegrationEnabled = defaultSearchEngine?.type === "fromIntegration" && query.length > 0; + const { data: results, ...resultQuery } = clientApi.integration.searchInIntegration.useQuery( + { + query, + integrationId: defaultSearchEngine?.integrationId ?? "", + }, + { + enabled: fromIntegrationEnabled, + select: (data) => data.slice(0, 5), + }, + ); + + return { + isLoading: + defaultSearchEngineQuery.isLoading || (resultQuery.isLoading && fromIntegrationEnabled) || status === "loading", + isError: defaultSearchEngineQuery.isError || (resultQuery.isError && fromIntegrationEnabled), + data: [ + ...createDefaultSearchEntries(defaultSearchEngine, results, session, query, t), + { + id: "other", + name: t("search.mode.home.group.search.option.other.label"), + icon: IconCaretUpDown, + useInteraction() { + return { + type: "mode", + mode: "external", + }; + }, + }, + ], + }; + }, +}); + +const createDefaultSearchEntries = ( + defaultSearchEngine: RouterOutputs["searchEngine"]["getDefaultSearchEngine"] | null, + results: RouterOutputs["integration"]["searchInIntegration"] | undefined, + session: Session | null, + query: string, + t: TranslationFunction, +): GroupItem[] => { + if (!session?.user && !defaultSearchEngine) { + return []; + } + + if (!defaultSearchEngine) { + return [ + { + id: "no-default", + name: t("search.mode.home.group.search.option.no-default.label"), + description: t("search.mode.home.group.search.option.no-default.description"), + icon: IconSearchOff, + useInteraction() { + return { + type: "link", + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + href: `/manage/users/${session!.user.id}/general`, + }; + }, + }, + ]; + } + + if (defaultSearchEngine.type === "generic") { + return [ + { + id: "search", + name: t("search.mode.home.group.search.option.search.label", { + query, + name: defaultSearchEngine.name, + }), + icon: defaultSearchEngine.iconUrl, + useInteraction(query) { + return { + type: "link", + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + href: defaultSearchEngine.urlTemplate!.replace("%s", query), + }; + }, + }, + ]; + } + + if (!results) { + return [ + { + id: "from-integration", + name: defaultSearchEngine.name, + icon: defaultSearchEngine.iconUrl, + description: t("search.mode.home.group.search.option.from-integration.description"), + useInteraction() { + return { + type: "none", + }; + }, + }, + ]; + } + + return results.map((result) => ({ + id: `search-${result.id}`, + name: result.name, + description: result.text, + icon: result.image ?? IconSearch, + useInteraction() { + return useFromIntegrationSearchInteraction(defaultSearchEngine, result); + }, + })); +}; diff --git a/packages/spotlight/src/modes/home/index.tsx b/packages/spotlight/src/modes/home/index.tsx index e306437f2..7851e6a39 100644 --- a/packages/spotlight/src/modes/home/index.tsx +++ b/packages/spotlight/src/modes/home/index.tsx @@ -1,8 +1,9 @@ import type { SearchMode } from "../../lib/mode"; import { contextSpecificSearchGroups } from "./context-specific-group"; +import { homeSearchEngineGroup } from "./home-search-engine-group"; export const homeMode = { character: undefined, modeKey: "home", - groups: [contextSpecificSearchGroups], + groups: [homeSearchEngineGroup, contextSpecificSearchGroups], } satisfies SearchMode; diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 4acd411c9..430144747 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "Default search engine changed successfully" + }, + "error": { + "message": "Unable to change default search engine" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "Language & Region", "board": "Home board", + "defaultSearchEngine": "Default search engine", "firstDayOfWeek": "First day of the week", "accessibility": "Accessibility" } @@ -2338,6 +2349,13 @@ "description": "Only public boards are available for selection" } }, + "search": { + "title": "Search", + "defaultSearchEngine": { + "label": "Global default search engine", + "description": "Integration search engines can not be selected here" + } + }, "appearance": { "title": "Appearance", "defaultColorScheme": { @@ -2853,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "Search", + "option": { + "other": { + "label": "Search with another search engine" + }, + "no-default": { + "label": "No default search engine", + "description": "Set a default search engine in preferences" + }, + "search": { + "label": "Search for '{query}' with {name}" + }, + "from-integration": { + "description": "Start typing to search" + } + } + }, "local": { "title": "Local results" } diff --git a/packages/validation/src/user.ts b/packages/validation/src/user.ts index f06fb67ec..6688cdcd8 100644 --- a/packages/validation/src/user.ts +++ b/packages/validation/src/user.ts @@ -109,6 +109,10 @@ const changeHomeBoardSchema = z.object({ homeBoardId: z.string().min(1), }); +const changeDefaultSearchEngineSchema = z.object({ + defaultSearchEngineId: z.string().min(1), +}); + const changeColorSchemeSchema = z.object({ colorScheme: zodEnumFromArray(colorSchemes), }); @@ -132,6 +136,7 @@ export const userSchemas = { editProfile: editProfileSchema, changePassword: changePasswordSchema, changeHomeBoard: changeHomeBoardSchema, + changeDefaultSearchEngine: changeDefaultSearchEngineSchema, changePasswordApi: changePasswordApiSchema, changeColorScheme: changeColorSchemeSchema, firstDayOfWeek: firstDayOfWeekSchema, From eb424d757b7934d5a6bce9de943528f17e678b80 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 19:27:55 +0000 Subject: [PATCH 185/262] fix(deps): update tanstack-query monorepo to ^5.62.16 (#1877) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 70 ++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 9cfd06c11..688ad329a 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.27.1", - "@tanstack/react-query": "^5.62.15", - "@tanstack/react-query-devtools": "^5.62.15", - "@tanstack/react-query-next-experimental": "5.62.15", + "@tanstack/react-query": "^5.62.16", + "@tanstack/react-query-devtools": "^5.62.16", + "@tanstack/react-query-next-experimental": "5.62.16", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67362bef7..f036ef5d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.27.1 version: 3.27.1(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.15 - version: 5.62.15(react@19.0.0) + specifier: ^5.62.16 + version: 5.62.16(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.15 - version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(react@19.0.0) + specifier: ^5.62.16 + version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.15 - version: 5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + specifier: 5.62.16 + version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.682(typescript@5.7.2) @@ -3820,27 +3820,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.15': - resolution: {integrity: sha512-wT20X14CxcWY8YLJ/1pnsXn/y1Q2uRJZYWW93PWRtZt+3/JlGZyiyTcO4pGnqycnP7CokCROAyatsraosqZsDA==} + '@tanstack/query-core@5.62.16': + resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==} - '@tanstack/query-devtools@5.62.9': - resolution: {integrity: sha512-b1NZzDLVf6laJsB1Cfm3ieuYzM+WqoO8qpm9v+3Etwd+Ph4zkhUMiT+wcWj5AhEPsXiRodKYiiW048VDNdBxNg==} + '@tanstack/query-devtools@5.62.16': + resolution: {integrity: sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==} - '@tanstack/react-query-devtools@5.62.15': - resolution: {integrity: sha512-8aE7uD45NHZgNtHMVQC7PvM9f72mKK4bqcpHr9La8TsTRX7x8dy2Kdu2ReFNLCrdlEWkxdP5843tc/lHg+Q/rg==} + '@tanstack/react-query-devtools@5.62.16': + resolution: {integrity: sha512-EjF0tgHnWYcqhk8KxGKnmGlYcnldhWjW3bbH2WZqxo7t41ytzkIQtZ/UyLph//YMmZZE/RVTmSo3rGq/EG9iCA==} peerDependencies: - '@tanstack/react-query': ^5.62.15 + '@tanstack/react-query': ^5.62.16 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.15': - resolution: {integrity: sha512-HUUWfOIaW2YQIVU1G7tSM949yJJ8KIpUufiwztPOh6P0DOfma3lYq86GcxmX2HmbTMsPJkF032X0ugZIFkQ8mw==} + '@tanstack/react-query-next-experimental@5.62.16': + resolution: {integrity: sha512-Gch1AXHjqQf1OJF5zbDY3B+UPCU7DSzjTL4NigR0RGexnsMbcLuEur58xnkEqPtUmA6xaFysAnt+T2wksKIViA==} peerDependencies: - '@tanstack/react-query': ^5.62.15 + '@tanstack/react-query': ^5.62.16 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.15': - resolution: {integrity: sha512-Ny3xxsOWmEQCFyHiV3CF7t6+QAV+LpBEREiXyllKR4+tStyd8smOAa98ZHmEx0ZNy36M31K8enifB5wTSYAKJw==} + '@tanstack/react-query@5.62.16': + resolution: {integrity: sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==} peerDependencies: react: ^18 || ^19 @@ -11646,25 +11646,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.62.15': {} + '@tanstack/query-core@5.62.16': {} - '@tanstack/query-devtools@5.62.9': {} + '@tanstack/query-devtools@5.62.16': {} - '@tanstack/react-query-devtools@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(react@19.0.0)': dependencies: - '@tanstack/query-devtools': 5.62.9 - '@tanstack/react-query': 5.62.15(react@19.0.0) + '@tanstack/query-devtools': 5.62.16 + '@tanstack/react-query': 5.62.16(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.15(@tanstack/react-query@5.62.15(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.15(react@19.0.0) + '@tanstack/react-query': 5.62.16(react@19.0.0) next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - '@tanstack/react-query@5.62.15(react@19.0.0)': + '@tanstack/react-query@5.62.16(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.62.15 + '@tanstack/query-core': 5.62.16 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -11903,7 +11903,7 @@ snapshots: '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) @@ -11912,12 +11912,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.15(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.62.16(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.15(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.15(react@19.0.0) + '@tanstack/react-query': 5.62.16(react@19.0.0) '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) react: 19.0.0 From 9da50e518b28252c39bcc88600a93367af42d8e4 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 22:05:56 +0100 Subject: [PATCH 186/262] chore(deps): update dependency @types/chroma-js to v3 (#1876) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 688ad329a..326632f14 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -81,7 +81,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/chroma-js": "2.4.5", + "@types/chroma-js": "3.1.0", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", "@types/react": "19.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f036ef5d6..45a169b57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -273,8 +273,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/chroma-js': - specifier: 2.4.5 - version: 2.4.5 + specifier: 3.1.0 + version: 3.1.0 '@types/node': specifier: ^22.10.5 version: 22.10.5 @@ -4156,8 +4156,8 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - '@types/chroma-js@2.4.5': - resolution: {integrity: sha512-6ISjhzJViaPCy2q2e6PgK+8HcHQDQ0V2LDiKmYAh+jJlLqDa6HbwDh0wOevHY0kHHUx0iZwjSRbVD47WOUx5EQ==} + '@types/chroma-js@3.1.0': + resolution: {integrity: sha512-Uwl3SOtUkbQ6Ye6ZYu4q4xdLGBzmY839sEHYtOT7i691neeyd+7fXWT5VIkcUSfNwIFrIjQutNYQn9h4q5HFvg==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -12016,7 +12016,7 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 22.10.5 - '@types/chroma-js@2.4.5': {} + '@types/chroma-js@3.1.0': {} '@types/connect@3.4.38': dependencies: From 690cc303bfd89988016f78e1ea15ca233f80917b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 00:56:21 +0000 Subject: [PATCH 187/262] chore(deps): update dependency @types/dockerode to ^3.3.34 (#1879) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/api/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index da5ccfc5e..19486d1ab 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -53,7 +53,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/dockerode": "^3.3.33", + "@types/dockerode": "^3.3.34", "eslint": "^9.17.0", "prettier": "^3.4.2", "typescript": "^5.7.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45a169b57..f5e3474c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -580,8 +580,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/dockerode': - specifier: ^3.3.33 - version: 3.3.33 + specifier: ^3.3.34 + version: 3.3.34 eslint: specifier: ^9.17.0 version: 9.17.0 @@ -4183,8 +4183,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.33': - resolution: {integrity: sha512-7av8lVOhkW7Xd11aZTSq5zhdpyNraldXwQR0pxUCiSNTvIzsP86KrFrmrZgxtrXD2Zrtzwt4H6OYLbATONWzWg==} + '@types/dockerode@3.3.34': + resolution: {integrity: sha512-mH9SuIb8NuTDsMus5epcbTzSbEo52fKLBMo0zapzYIAIyfDqoIFn7L3trekHLKC8qmxGV++pPUP4YqQ9n5v2Zg==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -12046,7 +12046,7 @@ snapshots: '@types/node': 22.10.5 '@types/ssh2': 1.15.1 - '@types/dockerode@3.3.33': + '@types/dockerode@3.3.34': dependencies: '@types/docker-modem': 3.0.6 '@types/node': 22.10.5 @@ -17468,7 +17468,7 @@ snapshots: testcontainers@10.16.0: dependencies: '@balena/dockerignore': 1.0.2 - '@types/dockerode': 3.3.33 + '@types/dockerode': 3.3.34 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 From 02386ffcd83d4620b60f4c6d90f8acc11ef88734 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 05:32:34 +0000 Subject: [PATCH 188/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 110 +++++++++++---- packages/translation/src/lang/cs.json | 52 ++++++++ packages/translation/src/lang/da.json | 52 ++++++++ packages/translation/src/lang/de.json | 52 ++++++++ packages/translation/src/lang/el.json | 52 ++++++++ packages/translation/src/lang/es.json | 52 ++++++++ packages/translation/src/lang/et.json | 52 ++++++++ packages/translation/src/lang/fr.json | 52 ++++++++ packages/translation/src/lang/he.json | 184 +++++++++++++++++--------- packages/translation/src/lang/hr.json | 52 ++++++++ packages/translation/src/lang/hu.json | 52 ++++++++ packages/translation/src/lang/it.json | 52 ++++++++ packages/translation/src/lang/ja.json | 52 ++++++++ packages/translation/src/lang/ko.json | 52 ++++++++ packages/translation/src/lang/lt.json | 52 ++++++++ packages/translation/src/lang/lv.json | 52 ++++++++ packages/translation/src/lang/nl.json | 52 ++++++++ packages/translation/src/lang/no.json | 52 ++++++++ packages/translation/src/lang/pl.json | 52 ++++++++ packages/translation/src/lang/pt.json | 52 ++++++++ packages/translation/src/lang/ro.json | 52 ++++++++ packages/translation/src/lang/ru.json | 52 ++++++++ packages/translation/src/lang/sk.json | 52 ++++++++ packages/translation/src/lang/sl.json | 52 ++++++++ packages/translation/src/lang/sv.json | 52 ++++++++ packages/translation/src/lang/tr.json | 72 ++++++++-- packages/translation/src/lang/uk.json | 52 ++++++++ packages/translation/src/lang/vi.json | 52 ++++++++ packages/translation/src/lang/zh.json | 52 ++++++++ 29 files changed, 1613 insertions(+), 105 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 53dc68ea4..f527a0082 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -232,10 +242,10 @@ }, "manageAvatar": { "changeImage": { - "label": "更改图像", + "label": "更改头像", "notification": { "success": { - "message": "图像修改成功" + "message": "头像修改成功" }, "error": { "message": "无法更改图像" @@ -284,9 +294,9 @@ } }, "group": { - "title": "用户组", + "title": "群组", "name": "组", - "search": "查找用户组", + "search": "查找群组", "field": { "name": "名称", "members": "成员" @@ -417,13 +427,13 @@ }, "action": { "create": { - "label": "新建用户组", + "label": "新建群组", "notification": { "success": { - "message": "用户组已成功创建" + "message": "群组已成功创建" }, "error": { - "message": "无法创建用户组" + "message": "无法创建群组" } } }, @@ -489,7 +499,7 @@ } }, "app": { - "search": "", + "search": "查找应用", "page": { "list": { "title": "应用", @@ -1533,7 +1543,7 @@ }, "added": { "columnTitle": "已添加", - "detailsTitle": "日期已添加" + "detailsTitle": "添加日期" }, "category": { "columnTitle": "扩展的", @@ -1574,7 +1584,7 @@ }, "size": { "columnTitle": "文件大小", - "detailsTitle": "选择/文件的总大小" + "detailsTitle": "文件大小" }, "state": { "columnTitle": "状态", @@ -1582,7 +1592,7 @@ }, "time": { "columnTitle": "完成时间", - "detailsTitle": "结束/结束时间" + "detailsTitle": "完成时间" }, "type": { "columnTitle": "类型", @@ -1762,16 +1772,16 @@ "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "复制面板", + "message": "这将复制面板{name}及其所有内容。如果组件引用了不允许使用的集成,它们将被删除。", "notification": { "success": { - "title": "", - "message": "" + "title": "面板已复制", + "message": "面板已成功复制" }, "error": { - "title": "", - "message": "" + "title": "无法复制面板", + "message": "无法复制面板" } } }, @@ -1853,7 +1863,7 @@ "label": "页面标题" }, "metaTitle": { - "label": "Meta标题" + "label": "Meta 标题" }, "logoImageUrl": { "label": "Logo 图像 URL" @@ -1868,7 +1878,7 @@ "label": "背景图片附件", "option": { "fixed": { - "label": "已修复", + "label": "固定", "description": "背景保持不变。" }, "scroll": { @@ -1950,7 +1960,7 @@ "unrecognizedLink": "提供的链接未被识别,无法预览,但它可能仍然有效。" }, "layout": { - "title": "显示布局" + "title": "布局" }, "background": { "title": "背景" @@ -2072,7 +2082,7 @@ "boards": "面板", "apps": "应用", "integrations": "集成", - "searchEngies": "搜索引擎", + "searchEngies": "搜索", "medias": "媒体", "users": { "label": "用户", @@ -2095,10 +2105,10 @@ "help": { "label": "帮助", "items": { - "documentation": "文档", + "documentation": "帮助文档", "submitIssue": "提交问题", "discord": "Discord 社区", - "sourceCode": "源码" + "sourceCode": "源码仓库" } }, "about": "关于" @@ -2141,7 +2151,7 @@ } }, "duplicate": { - "label": "" + "label": "复制面板" }, "delete": { "label": "永久删除", @@ -2177,6 +2187,7 @@ "item": { "language": "语言与地区", "board": "主面板", + "defaultSearchEngine": "", "firstDayOfWeek": "一周的第一天", "accessibility": "无障碍服务" } @@ -2338,6 +2349,13 @@ "description": "只有公共面板可供选择" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "外观", "defaultColorScheme": { @@ -2453,15 +2471,15 @@ "accordion": { "contributors": { "title": "贡献人员", - "subtitle": "{count} 维护代码和 Homarr" + "subtitle": "{count} 人在维护代码和 Homarr" }, "translators": { "title": "翻译人员", - "subtitle": "{count}翻译了许多语言" + "subtitle": "{count} 名人员翻译了许多语言" }, "libraries": { - "title": "资源库", - "subtitle": "{count} 在 Homarr 代码中使用" + "title": "相关的库", + "subtitle": "{count} 个相关的库在 Homarr 代码中被使用" } } } @@ -2562,6 +2580,22 @@ "message": "刷新容器时出现错误" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "本地结果" } @@ -2948,7 +3000,7 @@ "label": "名称" }, "short": { - "label": "不足" + "label": "短的" }, "urlTemplate": { "label": "URL搜索模板" diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 5df748e3f..c6af4cb0e 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "Jazyk & oblast", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "První den v týdnu", "accessibility": "Přístupnost" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Vzhled", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index b429c6302..8ef017d61 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Første ugedag", "accessibility": "Hjælpefunktioner" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Udseende", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 246dd0669..daab5627a 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Erster Tag der Woche", "accessibility": "Barrierefreiheit" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Aussehen", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index cafc35a3d..cb9a84885 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Πρώτη ημέρα της εβδομάδας", "accessibility": "Προσβασιμότητα" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Εμφάνιση", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index cd92cd4b1..a9f549ebe 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Primer día de la semana", "accessibility": "Accesibilidad" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Apariencia", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 41565301e..4df6c37de 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "", "accessibility": "" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 8a6c48ba0..2d2235a14 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Premier jour de la semaine", "accessibility": "Accessibilité" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Apparence", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index c84129bb2..7eaef9264 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -1172,7 +1182,7 @@ }, "status": { "online": "", - "offline": "" + "offline": "לא מקוון" } }, "notebook": { @@ -1483,9 +1493,9 @@ "description": "הצג את הזרמים הנוכחיים בשרתי המדיה שלך", "option": {}, "items": { - "user": "", - "name": "", - "id": "" + "user": "משתמש", + "name": "שם", + "id": "מזהה" } }, "downloads": { @@ -1544,7 +1554,7 @@ "detailsTitle": "מהירות הורדה" }, "index": { - "columnTitle": "", + "columnTitle": "#", "detailsTitle": "מדד נוכחי בתוך הלקוח" }, "id": { @@ -1554,7 +1564,7 @@ "columnTitle": "אינטגרציה" }, "name": { - "columnTitle": "" + "columnTitle": "שם המשימה" }, "progress": { "columnTitle": "התקדמות", @@ -1578,7 +1588,7 @@ }, "state": { "columnTitle": "מצב", - "detailsTitle": "" + "detailsTitle": "מצב המשימה" }, "time": { "columnTitle": "זמן סיום", @@ -1600,8 +1610,8 @@ "completed": "הושלם", "failed": "נכשל", "processing": "מעבד", - "leeching": "", - "stalled": "", + "leeching": "בשיתוף", + "stalled": "נתקע", "unknown": "לא ידוע", "seeding": "זריעה" }, @@ -1620,9 +1630,9 @@ "resume": "המשך פריט", "delete": { "title": "מחק פריט", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "modalTitle": "האם את/ה בטוח/ה שברצונך למחוק את העבודה הזו?", + "entry": "מחיקת רשומה", + "entryAndFiles": "מחיקת רשומה וקבצים" } } }, @@ -1762,16 +1772,16 @@ "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "שכפול לוח", + "message": "פעולה זו תשכפל את הלוח {name} עם כל התוכן שלו. אם ווידג'טים מתייחסים לאינטגרציות שאינך מורשה להשתמש בהן, הם יוסרו.", "notification": { "success": { - "title": "", - "message": "" + "title": "הלוח שוכפל", + "message": "הלוח שוכפל בהצלחה" }, "error": { - "title": "", - "message": "" + "title": "לא ניתן לשכפל את הלוח", + "message": "לא ניתן לשכפל את הלוח" } } }, @@ -1836,7 +1846,7 @@ "description": "סרגלי צד הוסרו ב- 1.0, אתה יכול לבחור מה צריך לקרות עם הפריטים שבתוכם.", "option": { "lastSection": { - "label": "", + "label": "החלק האחרון", "description": "סרגל צד יוצג מתחת לקטע האחרון" }, "removeItems": { @@ -1991,31 +2001,31 @@ "visibility": { "label": "שנה את נראות הלוח", "description": { - "public": "", - "private": "" + "public": "הלוח הזה כרגע ציבורי.", + "private": "הלוח הזה כרגע פרטי." }, "button": { - "public": "", - "private": "" + "public": "הפוך לפרטי", + "private": "הפוך לציבורי" }, "confirm": { "public": { - "title": "", - "description": "" + "title": "הפיכת לוח לפרטי", + "description": "האם את/ה בטוח/ה להפוך את הלוח הזה לפרטי? פעולה זו תסתיר את הלוח מציבורי. קישורים למשתמשים אורחים יוסרו." }, "private": { - "title": "", - "description": "" + "title": "הפיכת לוח לציבורי", + "description": "האם את/ה בטוח/ה להפוך את הלוח הזה לציבורי? הפעולה תהפוך את הלוח נגיש לכולם." } } }, "delete": { - "label": "", - "description": "", - "button": "", + "label": "מחיקת לוח זה", + "description": "ברגע שהלוח נמחק, אין דרך חזרה. אנא וודא/י זאת בוודאות.", + "button": "מחיקת לוח זה", "confirm": { "title": "מחיקת לוח", - "description": "" + "description": "האם את/ה בטוח/ה שברצונך למחוק לוח זה? הלוח ותוכנו יימחקו לצמיתות." } } } @@ -2025,22 +2035,22 @@ "error": { "noBoard": { "title": "ברוכים הבאים ל- Homarr", - "description": "", + "description": "לוח בקרה מעוצב ומודרני שמביא את כל האפליקציות והשירותים שלך בהישג יד.", "link": "צור את הלוח הראשון שלך", - "notice": "" + "notice": "כדי להעלים דף זה, יש ליצור לוח ולקבוע אותו כלוח בית" }, "notFound": { - "title": "", - "description": "", + "title": "לא נמצא לוח", + "description": "הלוח לא נמצא או שאין לך הרשאה לגשת אליו.", "link": "הצגת כל הלוחות", - "notice": "" + "notice": "בדוק את הקישור או צור קשר עם מנהל אם אתה סבור שהוא אמור להיות נגיש" }, "homeBoard": { - "title": "", + "title": "אין לוח בית", "admin": { - "description": "", - "link": "", - "notice": "" + "description": "לא הוגדר לוח בית לשרת עדיין.", + "link": "הגדר לוח בית לשרת", + "notice": "כדי לגרום לדף זה להעלם עבור כל המשתמש, יש להגדיר לוח בית עבור השרת" }, "user": { "description": "", @@ -2063,7 +2073,7 @@ "evening": "" }, "notFound": { - "title": "", + "title": "לא נמצא", "text": "" }, "navbar": { @@ -2086,9 +2096,9 @@ "label": "כלים", "items": { "docker": "דוקר", - "logs": "", + "logs": "קובצי לוג", "api": "ממשק API", - "tasks": "" + "tasks": "משימות" } }, "settings": "הגדרות", @@ -2128,32 +2138,32 @@ "label": "" }, "open": { - "label": "" + "label": "פתיחת לוח" }, "settings": { "label": "הגדרות" }, "setHomeBoard": { - "label": "", + "label": "קביעה כלוח בית", "badge": { "label": "מסך הבית", - "tooltip": "" + "tooltip": "הלוח הזה יוצג כלוח הבית שלך" } }, "duplicate": { - "label": "" + "label": "שכפול לוח" }, "delete": { "label": "מחיקה לצמיתות", "confirm": { "title": "מחיקת לוח", - "description": "" + "description": "האם את/ה בטוח/ה שברצונך למחוק את הלוח {name}?" } } }, "visibility": { - "public": "", - "private": "" + "public": "הלוח הזה ציבורי", + "private": "הלוח הזה פרטי" }, "modal": { "createBoard": { @@ -2166,10 +2176,10 @@ } }, "media": { - "includeFromAllUsers": "" + "includeFromAllUsers": "כלול מדיה מכל המשתמשים" }, "user": { - "back": "", + "back": "חזרה למשתמשים", "fieldsDisabledExternalProvider": "", "setting": { "general": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "לוח בית", + "defaultSearchEngine": "", "firstDayOfWeek": "היום הראשון בשבוע", "accessibility": "נגישות" } @@ -2229,14 +2240,14 @@ "title": "נהל הזמנות משתמש", "action": { "new": { - "title": "", + "title": "הזמנה חדשה", "description": "לאחר התפוגה, הזמנה לא תהיה תקפה יותר ומקבל ההזמנה לא יוכל ליצור חשבון." }, "copy": { - "title": "", - "description": "", + "title": "העתקת הזמנה", + "description": "ההזמנה שלך נוצרה. לאחר שחלון זה ייסגר, לא תוכל להעתיק את הקישור הזה יותר. אם אינך מעוניין להזמין את האדם הנ\"ל, תוכל למחוק את ההזמנה בכל זמן.", "link": "קישור הזמנה", - "button": "" + "button": "העתקה וסגירה" }, "delete": { "title": "מחיקת הזמנה", @@ -2260,23 +2271,23 @@ } }, "group": { - "back": "", + "back": "חזרה לקבוצות", "setting": { "general": { "title": "כללי", "owner": "בעלים", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "ownerOfGroup": "בעלים של קבוצה זו", + "ownerOfGroupDeleted": "הבעלים של קבוצה זו נמחק. כרגע אין בעלים." }, "members": { "title": "חברים", - "search": "", - "notFound": "" + "search": "חיפוש חבר בקבוצה", + "notFound": "לא נמצא חברים בקבוצה" }, "permissions": { - "title": "", + "title": "הרשאות", "form": { - "unsavedChanges": "" + "unsavedChanges": "ישנם שינויים שלא נשמרו!" } } } @@ -2285,15 +2296,15 @@ "title": "הגדרות", "notification": { "success": { - "message": "" + "message": "ההגדרות נשמרו בהצלחה" }, "error": { - "message": "" + "message": "נכשל בשמירת הגדרות" } }, "section": { "analytics": { - "title": "", + "title": "ניתוחים", "general": { "title": "", "text": "" @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "מראה", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 9b0a7c5fb..2655126da 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Prvi dan u tjednu", "accessibility": "Pristupačnost" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Izgled", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 727a6ce17..787689b68 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "Főoldal", + "defaultSearchEngine": "", "firstDayOfWeek": "A hét első napja", "accessibility": "Kisegítő lehetőségek" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Megjelenés", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 854d547e7..1704b856d 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Primo giorno della settimana", "accessibility": "Accessibilità" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Aspetto", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 4ae9f65ec..f0519d0cc 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "週の初日", "accessibility": "アクセシビリティ" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "外観", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index dd7b05c5f..815501a58 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "요일별 요일", "accessibility": "접근성" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "모양", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index a898bb9eb..75d008056 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "", "accessibility": "" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Išvaizda", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 054a5d2f4..15fd286da 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Nedēļas pirmā diena", "accessibility": "Piekļūstamība" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Izskats", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index ed502e14a..aa54ea68b 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "Taal & regio", "board": "Home-bord", + "defaultSearchEngine": "", "firstDayOfWeek": "Eerste dag van de week", "accessibility": "Toegankelijkheid" } @@ -2338,6 +2349,13 @@ "description": "Alleen openbare borden zijn beschikbaar voor selectie" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Weergave", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "Er is iets misgegaan tijdens het verversen van de containers" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "Lokale resultaten" } diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index a0a450d33..367d209a1 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Første dag i uken", "accessibility": "Hjelpemidler" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Utseende", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 6dae0b902..0beae6363 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Pierwszy dzień tygodnia", "accessibility": "Ułatwienia dostępu" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Wygląd", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 24d42bd01..7a8163149 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Primeiro dia da semana", "accessibility": "Acessibilidade" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Aparência", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index dacb9a45a..6b26f70eb 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Prima zi a săptămâni", "accessibility": "Accesibilitate" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Aspect", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 7ad5842f3..5c85f790f 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "Язык и регион", "board": "Домашняя панель", + "defaultSearchEngine": "", "firstDayOfWeek": "Первый день недели", "accessibility": "Специальные возможности" } @@ -2338,6 +2349,13 @@ "description": "Для выбора доступны только публичные панели" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Внешний вид", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "Произошла ошибка при обновлении данных о контейнерах" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "Локальные результаты" } diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 4dfe5a14f..c5a23d460 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "Jazyk a región", "board": "Domáca doska", + "defaultSearchEngine": "", "firstDayOfWeek": "Prvý deň v týždni", "accessibility": "Prístupnosť" } @@ -2338,6 +2349,13 @@ "description": "Na výber sú k dispozícii iba verejné tabule" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Vzhľad", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "Pri obnovovaní kontajnerov sa niečo pokazilo" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "Miestne výsledky" } diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 8399301e4..0860a8e71 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Prvi dan v tednu", "accessibility": "Dostopnost" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Videz", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 2c6f1cbf0..62b72c4a4 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Första veckodagen", "accessibility": "Tillgänglighet" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Utseende", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 2fd13f30f..b0b9b041f 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -489,7 +499,7 @@ } }, "app": { - "search": "", + "search": "Uygulama Bulun", "page": { "list": { "title": "Uygulamalar", @@ -1281,7 +1291,7 @@ "label": "Varlık Kimliği" }, "displayName": { - "label": "Ekran adı" + "label": "Görünen isim" }, "entityUnit": { "label": "Varlık Birimi" @@ -1296,7 +1306,7 @@ "description": "Tek tıklamayla otomasyonu tetikleyin", "option": { "displayName": { - "label": "Ekran adı" + "label": "Görünen isim" }, "automationId": { "label": "Otomasyon Kimliği" @@ -1762,16 +1772,16 @@ "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "Paneli Kopyala", + "message": "Bu, {name} panelini tüm içeriğiyle birlikte kopyalayacaktır. Kullanmanıza izin verilmeyen entegrasyonları içeren widget'lar kaldırılacaklardır.", "notification": { "success": { - "title": "", - "message": "" + "title": "Panel Kopyalandı", + "message": "Panel başarıyla kopyalandı" }, "error": { - "title": "", - "message": "" + "title": "Panel Kopyalanamıyor", + "message": "Panel kopyalanamadı" } } }, @@ -2141,7 +2151,7 @@ } }, "duplicate": { - "label": "" + "label": "Paneli Kopyala" }, "delete": { "label": "Kalıcı olarak sil", @@ -2177,6 +2187,7 @@ "item": { "language": "Dil & Bölge", "board": "Öntanımlı panel", + "defaultSearchEngine": "", "firstDayOfWeek": "Haftanın ilk günü", "accessibility": "Erişilebilirlik" } @@ -2338,6 +2349,13 @@ "description": "Seçim yalnızca herkese açık paneller için kullanılabilir" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Görünüş", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "Konteynerler yenilenirken bir şeyler ters gitti" } } + }, + "addToHomarr": { + "label": "Homarr'a Ekle", + "notification": { + "success": { + "title": "Homarr'a Eklendi", + "message": "Seçili uygulamalar Homarr'a eklendi" + }, + "error": { + "title": "Homarr'a Eklenemedi", + "message": "Seçilen uygulamalar Homarr'a eklenemedi" + } + }, + "modal": { + "title": "Homarr'a docker konteyner(-ler)i ekleyin" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "Yerel sonuçlar" } diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 9eaeb7378..e9986da6e 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Перший день тижня", "accessibility": "Доступність" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Вигляд", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index adb300520..38ce91177 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "", "board": "", + "defaultSearchEngine": "", "firstDayOfWeek": "Ngày đầu tiên trong tuần", "accessibility": "Trợ năng" } @@ -2338,6 +2349,13 @@ "description": "" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "Hiển thị", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "" } diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 588fd1c39..088dcc085 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -210,6 +210,16 @@ } } }, + "changeDefaultSearchEngine": { + "notification": { + "success": { + "message": "" + }, + "error": { + "message": "" + } + } + }, "changeFirstDayOfWeek": { "notification": { "success": { @@ -2177,6 +2187,7 @@ "item": { "language": "語言與地區", "board": "主面板", + "defaultSearchEngine": "", "firstDayOfWeek": "一周的第一天", "accessibility": "無障礙服務" } @@ -2338,6 +2349,13 @@ "description": "只有公開面板可供選擇" } }, + "search": { + "title": "", + "defaultSearchEngine": { + "label": "", + "description": "" + } + }, "appearance": { "title": "外觀", "defaultColorScheme": { @@ -2562,6 +2580,22 @@ "message": "刷新容器時出現錯誤" } } + }, + "addToHomarr": { + "label": "", + "notification": { + "success": { + "title": "", + "message": "" + }, + "error": { + "title": "", + "message": "" + } + }, + "modal": { + "title": "" + } } }, "error": { @@ -2837,6 +2871,24 @@ }, "home": { "group": { + "search": { + "title": "", + "option": { + "other": { + "label": "" + }, + "no-default": { + "label": "", + "description": "" + }, + "search": { + "label": "" + }, + "from-integration": { + "description": "" + } + } + }, "local": { "title": "本地結果" } From 7807b28d24327db89514da533cb06f4c296b579d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 06:22:05 +0000 Subject: [PATCH 189/262] fix(deps): update mantine monorepo to ^7.15.3 (#1880) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 12 +- packages/form/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 4 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 4 +- pnpm-lock.yaml | 438 +++++++++--------------- 10 files changed, 185 insertions(+), 295 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 326632f14..5620c57df 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -38,12 +38,12 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.15.2", - "@mantine/core": "^7.15.2", - "@mantine/dropzone": "^7.15.2", - "@mantine/hooks": "^7.15.2", - "@mantine/modals": "^7.15.2", - "@mantine/tiptap": "^7.15.2", + "@mantine/colors-generator": "^7.15.3", + "@mantine/core": "^7.15.3", + "@mantine/dropzone": "^7.15.3", + "@mantine/hooks": "^7.15.3", + "@mantine/modals": "^7.15.3", + "@mantine/tiptap": "^7.15.3", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.27.1", diff --git a/packages/form/package.json b/packages/form/package.json index e3d903a74..77d7d00f3 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.15.2" + "@mantine/form": "^7.15.3" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 3a2d156ef..5e4be5bdd 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -32,7 +32,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", + "@mantine/core": "^7.15.3", "@tabler/icons-react": "^3.27.1", "dayjs": "^1.11.13", "next": "15.1.3", diff --git a/packages/modals/package.json b/packages/modals/package.json index 915afa700..e8803c460 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", - "@mantine/hooks": "^7.15.2", + "@mantine/core": "^7.15.3", + "@mantine/hooks": "^7.15.3", "react": "19.0.0" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 6a42a979f..da528346d 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^7.15.2", + "@mantine/notifications": "^7.15.3", "@tabler/icons-react": "^3.27.1" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 11aee0b44..e43a99bf6 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,8 +37,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", - "@mantine/hooks": "^7.15.2", + "@mantine/core": "^7.15.3", + "@mantine/hooks": "^7.15.3", "adm-zip": "0.5.16", "next": "15.1.3", "react": "19.0.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 7320f8983..9b9938ad4 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -32,9 +32,9 @@ "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", - "@mantine/hooks": "^7.15.2", - "@mantine/spotlight": "^7.15.2", + "@mantine/core": "^7.15.3", + "@mantine/hooks": "^7.15.3", + "@mantine/spotlight": "^7.15.3", "@tabler/icons-react": "^3.27.1", "jotai": "^2.11.0", "next": "15.1.3", diff --git a/packages/ui/package.json b/packages/ui/package.json index ec5f9c338..dca68e584 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,9 +29,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", - "@mantine/dates": "^7.15.2", - "@mantine/hooks": "^7.15.2", + "@mantine/core": "^7.15.3", + "@mantine/dates": "^7.15.3", + "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.27.1", "mantine-react-table": "2.0.0-beta.7", "next": "15.1.3", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index a0ef535bb..198b96508 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -41,8 +41,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.2", - "@mantine/hooks": "^7.15.2", + "@mantine/core": "^7.15.3", + "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.27.1", "@tiptap/extension-color": "2.11.0", "@tiptap/extension-highlight": "2.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5e3474c5..5bd9dd2fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,23 +149,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.15.2 - version: 7.15.2(chroma-js@3.1.2) + specifier: ^7.15.3 + version: 7.15.3(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) '@mantine/modals': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -228,7 +228,7 @@ importers: version: 2.11.0(@types/react@19.0.3)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -991,8 +991,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1133,11 +1133,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1191,8 +1191,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.27.1 version: 3.27.1(react@19.0.0) @@ -1231,8 +1231,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.27.1 version: 3.27.1(react@19.0.0) @@ -1289,11 +1289,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) adm-zip: specifier: 0.5.16 version: 0.5.16 @@ -1526,20 +1526,20 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) '@mantine/spotlight': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.27.1 version: 3.27.1(react@19.0.0) jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@18.3.13)(react@19.0.0) + version: 2.11.0(@types/react@19.0.3)(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1633,20 +1633,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': - specifier: ^7.15.2 - version: 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) '@tabler/icons-react': specifier: ^3.27.1 version: 3.27.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1761,11 +1761,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.2 - version: 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.2 - version: 7.15.2(react@19.0.0) + specifier: ^7.15.3 + version: 7.15.3(react@19.0.0) '@tabler/icons-react': specifier: ^3.27.1 version: 3.27.1(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.3 version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -3122,79 +3122,79 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/colors-generator@7.15.2': - resolution: {integrity: sha512-EqOWuOq0ZoPrVZiQVxkyr0uEoZAn5bfCVssrY0qAu47ZGxeodiJ6gKOrY68TYN/ep9AV74d7mFTl8d42Q08QmQ==} + '@mantine/colors-generator@7.15.3': + resolution: {integrity: sha512-SQjiilxzGHJ1yatcRjmgm0PY9W6tWswYHC5GNT1QAMzKIVwrN3Jo8944OJSX/6I+8dYVjqVqxEpKGF79F+HfCA==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.15.2': - resolution: {integrity: sha512-640ns0L/HZAXYjz3+FRffr8UNcH1fU7ENUVxKLzqNA311Dcx0qS3byVKTY/IVJYln6AkjoEfIJMiixT9fCZBiQ==} + '@mantine/core@7.15.3': + resolution: {integrity: sha512-8IMTq5xDJDjByDUYkDNKImikASStzrnPtVumKsrEnyEY0zhAWkAe/z/+PjTUMcN44ncJ/PrXQkJ6qMaVWzSZwA==} peerDependencies: - '@mantine/hooks': 7.15.2 + '@mantine/hooks': 7.15.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.15.2': - resolution: {integrity: sha512-WeJ+a16bZC+7k9Fr6jiC5NrdZi23Hp28xGBa3kKYk0Nanz/lTgg2DTBgFB537+4MVD1kOmqso+7z1VO9uLeaEw==} + '@mantine/dates@7.15.3': + resolution: {integrity: sha512-lv71dcfA8qB43v03cRELC2/G7FQXfAgj0tSMImj2p2FL3PSWWF4WRvW6byiB+hszk4lgooSo7kppzkSMVUlsdA==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@7.15.2': - resolution: {integrity: sha512-6jT1tFfUEhjWeZywohC8OMJnii0omOnqlqqGMQc0MZBpdMQmmTGJ3Z6oLkCadVH97FrROm8rtUOnMSA9CqiAGw==} + '@mantine/dropzone@7.15.3': + resolution: {integrity: sha512-3BZNKqfWyE6/DXOUoYbT72kVDiAu4jRLxUM7KsWojlSy1ucgd8X5oC6yvMlCa2nSDbrVlCNzsDADrezh2MxaNA==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.15.2': - resolution: {integrity: sha512-ADXLw/e0/ddNIj9EtJb5aes2VEpoR7GIVgKnzFhq8DXMfOZqaMn4rSVY8LmVOAtcMyocPR7hk8uQQ3ihmpzFaw==} + '@mantine/form@7.15.3': + resolution: {integrity: sha512-E+xrY/z6Y4JoHqL4f91AoMeNspuAe+nET667wKVBSUu4yLQX0FS8uvdypoaasb3LcTk7GRmnDNYyfC37zz4zkg==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.15.2': - resolution: {integrity: sha512-p8dsW0fdJxzYhULbm1noFYRHuBvJHleYviC0BlwbkVySC8AsvFI8AmC3sMssWV3dQ3yQ/SidYo9U+K/czpDpZw==} + '@mantine/hooks@7.15.3': + resolution: {integrity: sha512-rZYObhrmww3OIb4O30pDox/rc+9k3AExO0FSw13t7cfz5/Di+Ho1cChswVFAshnp81ucGEod1fiDOfuyGW7JhA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.15.2': - resolution: {integrity: sha512-Boy3h3meNbhttMpGh9t7Phjvoc/tqL3v+U21w389KEf/NBdpAHVZVPxJL6rdVsP+vgNDpYDSCyfcxTL4zPvJaA==} + '@mantine/modals@7.15.3': + resolution: {integrity: sha512-S/nu/4OcQw2sBbFVEIU1FfyiLDKVN9qOxnxhQBxaR9BFk4gEALzuU2uCorlu4f8TKUMo2kho0b0iTuYluQ07Dw==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.15.2': - resolution: {integrity: sha512-SZYUJV+BMakyoURj1is5aKXyM6pHpwl3V28FVx7nExyXcHJyzmPmqaSPumo0ZjFo+ysQ8/0P9UnYP0kNRwrjdQ==} + '@mantine/notifications@7.15.3': + resolution: {integrity: sha512-C1obM5dQsSHIB3B3Kajk0TdLnBpLXFMOIy0otG5khoL/8c8qOU4U0kHxtPVFBFvU/hw4rx7/idiiJdjp8DepDQ==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.15.2': - resolution: {integrity: sha512-wN0Glp7NjxQyRzr1djHFbZfDZRMhvNXmKpd4OxFpwcdE5W8Iqo1MTv5yzL/qx45F8o2wzdqd4wgfvlnTVsKs9g==} + '@mantine/spotlight@7.15.3': + resolution: {integrity: sha512-O+r8QLqo93A1h5CJJotZuMVywVVo6d8vJ/DYhxq18QzGuPF8bHoXPD3m+unEA34aSO4Y70kyXyFdZRyCVmOS0g==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.15.2': - resolution: {integrity: sha512-8ZVRr6D/8GEu2VmUVU447w4H+hl9dwefl//GpSGI2vKxXBqlud5X9PJQkSwi5J7I5FAxvlG5dr/zCxC3r3nsIQ==} + '@mantine/store@7.15.3': + resolution: {integrity: sha512-E3pCEm5ozRF/iK/jM1liKntjqaKhotvPtNAqSBcx6AkWSJ8bt16JhNrmrs3J3RmWvfqzF+fftT8HI/3HYbgu9w==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.15.2': - resolution: {integrity: sha512-fQqq41eAoGmC0vcDDnGsj9IVCAG0fN3XsR7dJKIz6jS51qfHSzbMCQgV8gRNKXkGDKet5B73TwUU/tD67+dkvg==} + '@mantine/tiptap@7.15.3': + resolution: {integrity: sha512-hMtRIpT1ujpGrjr2b2iX34cBaAoryCKpoPFPK9hrwmES2/53asYYyC+8Y47RBBpZmpuFlqM2VOy2Nk83gXqZGQ==} peerDependencies: - '@mantine/core': 7.15.2 - '@mantine/hooks': 7.15.2 + '@mantine/core': 7.15.3 + '@mantine/hooks': 7.15.3 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -4249,9 +4249,6 @@ packages: '@types/prismjs@1.26.5': resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/qs@6.9.16': resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} @@ -4266,9 +4263,6 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@18.3.13': - resolution: {integrity: sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==} - '@types/react@19.0.3': resolution: {integrity: sha512-UavfHguIjnnuq9O67uXfgy/h3SRJbidAYvNjLceB+2RIKVRBzVsh0QO+Pw6BCSQqFS9xwzKfwstXx0m6AbAREA==} @@ -8068,11 +8062,11 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-number-format@5.4.2: - resolution: {integrity: sha512-cg//jVdS49PYDgmcYoBnMMHl4XNTMuV723ZnHD2aXYtWWWqbVF3hjQ8iB+UZEuXapLbeA8P8H+1o6ZB1lcw3vg==} + react-number-format@5.4.3: + resolution: {integrity: sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==} peerDependencies: - react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-redux@9.1.2: resolution: {integrity: sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==} @@ -8090,22 +8084,22 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - react-remove-scroll@2.6.0: - resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} + react-remove-scroll@2.6.2: + resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -8130,6 +8124,16 @@ packages: '@types/react': optional: true + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-syntax-highlighter@15.5.0: resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} peerDependencies: @@ -9108,10 +9112,6 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.28.0: - resolution: {integrity: sha512-jXMwges/FVbFRe5lTMJZVEZCrO9kI9c8k0PA/z7nF3bo0JSCCLysvokFjNPIUK/itEMas10MQM+AiHoHt/T/XA==} - engines: {node: '>=16'} - type-fest@4.30.2: resolution: {integrity: sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig==} engines: {node: '>=16'} @@ -9290,12 +9290,12 @@ packages: url-toolkit@2.2.5: resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==} - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -10442,7 +10442,7 @@ snapshots: '@formatjs/fast-memoize@2.2.1': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/icu-messageformat-parser@2.8.0': dependencies: @@ -10635,106 +10635,83 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/colors-generator@7.15.2(chroma-js@3.1.2)': + '@mantine/colors-generator@7.15.3(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-number-format: 5.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.0(@types/react@18.3.13)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@18.3.13)(react@19.0.0) - type-fest: 4.28.0 - transitivePeerDependencies: - - '@types/react' - - '@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) - clsx: 2.1.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-number-format: 5.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.0(@types/react@19.0.3)(react@19.0.0) + react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.3)(react@19.0.0) react-textarea-autosize: 8.5.6(@types/react@19.0.3)(react@19.0.0) - type-fest: 4.28.0 + type-fest: 4.30.2 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) - clsx: 2.1.1 - dayjs: 1.11.13 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - '@mantine/dropzone@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-dropzone-esm: 15.2.0(react@19.0.0) - '@mantine/form@7.15.2(react@19.0.0)': + '@mantine/form@7.15.3(react@19.0.0)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.0.0 - '@mantine/hooks@7.15.2(react@19.0.0)': + '@mantine/hooks@7.15.3(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/modals@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) - '@mantine/store': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) - '@mantine/store': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/store@7.15.2(react@19.0.0)': + '@mantine/store@7.15.3(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) '@tiptap/extension-link': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) '@tiptap/react': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 @@ -12119,9 +12096,6 @@ snapshots: '@types/prismjs@1.26.5': {} - '@types/prop-types@15.7.12': - optional: true - '@types/qs@6.9.16': {} '@types/ramda@0.30.2': @@ -12134,12 +12108,6 @@ snapshots: dependencies: '@types/react': 19.0.3 - '@types/react@18.3.13': - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - optional: true - '@types/react@19.0.3': dependencies: csstype: 3.1.3 @@ -12734,7 +12702,7 @@ snapshots: autolinker@3.16.2: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 available-typed-arrays@1.0.7: dependencies: @@ -14756,7 +14724,7 @@ snapshots: '@formatjs/ecma402-abstract': 2.2.0 '@formatjs/fast-memoize': 2.2.1 '@formatjs/icu-messageformat-parser': 2.8.0 - tslib: 2.7.0 + tslib: 2.8.1 into-stream@7.0.0: dependencies: @@ -15088,11 +15056,6 @@ snapshots: jose@5.9.6: {} - jotai@2.11.0(@types/react@18.3.13)(react@19.0.0): - optionalDependencies: - '@types/react': 18.3.13 - react: 19.0.0 - jotai@2.11.0(@types/react@19.0.3)(react@19.0.0): optionalDependencies: '@types/react': 19.0.3 @@ -15345,25 +15308,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@18.3.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) - '@tabler/icons-react': 3.27.1(react@19.0.0) - '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - clsx: 2.1.1 - dayjs: 1.11.13 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - '@mantine/core': 7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.2(@mantine/core@7.15.2(@mantine/hooks@7.15.2(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.2(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.15.3(react@19.0.0) '@tabler/icons-react': 3.27.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -16392,7 +16341,7 @@ snapshots: react-is@16.13.1: {} - react-number-format@5.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-number-format@5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -16408,40 +16357,21 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.13)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.1(@types/react@18.3.13)(react@19.0.0) - tslib: 2.7.0 - optionalDependencies: - '@types/react': 18.3.13 - - react-remove-scroll-bar@2.3.6(@types/react@19.0.3)(react@19.0.0): - dependencies: - react: 19.0.0 - react-style-singleton: 2.2.1(@types/react@19.0.3)(react@19.0.0) - tslib: 2.7.0 + react-style-singleton: 2.2.3(@types/react@19.0.3)(react@19.0.0) + tslib: 2.8.1 optionalDependencies: '@types/react': 19.0.3 - react-remove-scroll@2.6.0(@types/react@18.3.13)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.13)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@18.3.13)(react@19.0.0) - tslib: 2.7.0 - use-callback-ref: 1.3.2(@types/react@18.3.13)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@18.3.13)(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.13 - - react-remove-scroll@2.6.0(@types/react@19.0.3)(react@19.0.0): - dependencies: - react: 19.0.0 - react-remove-scroll-bar: 2.3.6(@types/react@19.0.3)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.3)(react@19.0.0) react-style-singleton: 2.2.1(@types/react@19.0.3)(react@19.0.0) - tslib: 2.7.0 - use-callback-ref: 1.3.2(@types/react@19.0.3)(react@19.0.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.3)(react@19.0.0) use-sidecar: 1.1.2(@types/react@19.0.3)(react@19.0.0) optionalDependencies: '@types/react': 19.0.3 @@ -16459,21 +16389,20 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@18.3.13)(react@19.0.0): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 19.0.0 - tslib: 2.7.0 - optionalDependencies: - '@types/react': 18.3.13 - react-style-singleton@2.2.1(@types/react@19.0.3)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 - tslib: 2.7.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.3 + + react-style-singleton@2.2.3(@types/react@19.0.3)(react@19.0.0): + dependencies: + get-nonce: 1.0.1 + react: 19.0.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 19.0.3 @@ -16486,15 +16415,6 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@18.3.13)(react@19.0.0): - dependencies: - '@babel/runtime': 7.25.6 - react: 19.0.0 - use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@18.3.13)(react@19.0.0) - transitivePeerDependencies: - - '@types/react' - react-textarea-autosize@8.5.6(@types/react@19.0.3)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 @@ -17707,8 +17627,6 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.28.0: {} - type-fest@4.30.2: {} type-is@1.6.18: @@ -17926,17 +17844,10 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.2(@types/react@18.3.13)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 - tslib: 2.7.0 - optionalDependencies: - '@types/react': 18.3.13 - - use-callback-ref@1.3.2(@types/react@19.0.3)(react@19.0.0): - dependencies: - react: 19.0.0 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 19.0.3 @@ -17956,25 +17867,12 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@18.3.13)(react@19.0.0): - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 18.3.13 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.3 - use-latest@1.2.1(@types/react@18.3.13)(react@19.0.0): - dependencies: - react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.13)(react@19.0.0) - optionalDependencies: - '@types/react': 18.3.13 - use-latest@1.2.1(@types/react@19.0.3)(react@19.0.0): dependencies: react: 19.0.0 @@ -17982,19 +17880,11 @@ snapshots: optionalDependencies: '@types/react': 19.0.3 - use-sidecar@1.1.2(@types/react@18.3.13)(react@19.0.0): - dependencies: - detect-node-es: 1.1.0 - react: 19.0.0 - tslib: 2.7.0 - optionalDependencies: - '@types/react': 18.3.13 - use-sidecar@1.1.2(@types/react@19.0.3)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: '@types/react': 19.0.3 From 6327ca073cd790da16bf652d78ef96c322a053e2 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 19:53:55 +0000 Subject: [PATCH 190/262] chore(deps): update node.js to v22.13.0 (#1884) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.nvmrc b/.nvmrc index 1d9b7831b..6fa8dec4c 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.12.0 +22.13.0 diff --git a/package.json b/package.json index a0395dde0..6be3db6b7 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ }, "packageManager": "pnpm@9.15.3", "engines": { - "node": ">=22.12.0" + "node": ">=22.13.0" }, "pnpm": { "allowNonAppliedPatches": true, From f4f02ca539609705b7192c4327272f88415e1594 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 20:54:33 +0000 Subject: [PATCH 191/262] fix(deps): update nextjs monorepo to ^15.1.4 (#1885) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/common/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/old-import/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 216 ++++++++++++------------ tooling/eslint/package.json | 2 +- 12 files changed, 119 insertions(+), 119 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 5620c57df..89784c1ef 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -65,7 +65,7 @@ "glob": "^11.0.0", "jotai": "^2.11.0", "mantine-react-table": "2.0.0-beta.7", - "next": "15.1.3", + "next": "15.1.4", "postcss-preset-mantine": "^1.17.0", "prismjs": "^1.29.0", "react": "19.0.0", diff --git a/packages/api/package.json b/packages/api/package.json index 19486d1ab..d9127f43b 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -43,7 +43,7 @@ "@trpc/server": "next", "dockerode": "^4.0.3", "lodash.clonedeep": "^4.5.0", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0", "superjson": "2.2.2", diff --git a/packages/auth/package.json b/packages/auth/package.json index 801554c42..ffcf18c95 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -34,7 +34,7 @@ "bcrypt": "^5.1.1", "cookies": "^0.9.1", "ldapts": "7.3.0", - "next": "15.1.3", + "next": "15.1.4", "next-auth": "5.0.0-beta.25", "react": "19.0.0", "react-dom": "19.0.0" diff --git a/packages/common/package.json b/packages/common/package.json index a2d0d2130..8a90754ea 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -28,7 +28,7 @@ "dependencies": { "@homarr/log": "workspace:^0.1.0", "dayjs": "^1.11.13", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0" }, diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 5e4be5bdd..b8608e51b 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -35,7 +35,7 @@ "@mantine/core": "^7.15.3", "@tabler/icons-react": "^3.27.1", "dayjs": "^1.11.13", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0" }, diff --git a/packages/old-import/package.json b/packages/old-import/package.json index e43a99bf6..7b3d85443 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -40,7 +40,7 @@ "@mantine/core": "^7.15.3", "@mantine/hooks": "^7.15.3", "adm-zip": "0.5.16", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0", "superjson": "2.2.2", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 9b9938ad4..91bf88381 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -37,7 +37,7 @@ "@mantine/spotlight": "^7.15.3", "@tabler/icons-react": "^3.27.1", "jotai": "^2.11.0", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0", "use-deep-compare-effect": "^1.8.1" diff --git a/packages/translation/package.json b/packages/translation/package.json index 230189471..6d1969ec9 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,7 +32,7 @@ "dayjs": "^1.11.13", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.7", - "next": "15.1.3", + "next": "15.1.4", "next-intl": "3.26.3", "react": "19.0.0", "react-dom": "19.0.0" diff --git a/packages/ui/package.json b/packages/ui/package.json index dca68e584..290f494b2 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -34,7 +34,7 @@ "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.27.1", "mantine-react-table": "2.0.0-beta.7", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0" }, diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 198b96508..d2c6cb9e9 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -62,7 +62,7 @@ "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.7", - "next": "15.1.3", + "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0", "video.js": "^8.21.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5bd9dd2fe..fc012f16d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -183,19 +183,19 @@ importers: version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.62.16 - version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.682(typescript@5.7.2) + version: 11.0.0-rc.688(typescript@5.7.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -230,8 +230,8 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next - version: 11.0.0-rc.682(typescript@5.7.2) + version: 11.0.0-rc.688(typescript@5.7.2) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -555,8 +555,8 @@ importers: specifier: ^4.5.0 version: 4.5.0 next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.1 - version: 2.1.1(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -628,11 +628,11 @@ importers: specifier: 7.3.0 version: 7.3.0 next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -708,8 +708,8 @@ importers: specifier: ^1.11.13 version: 1.11.13 next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1200,8 +1200,8 @@ importers: specifier: ^1.11.13 version: 1.11.13 next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1298,8 +1298,8 @@ importers: specifier: 0.5.16 version: 0.5.16 next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1541,8 +1541,8 @@ importers: specifier: ^2.11.0 version: 2.11.0(@types/react@19.0.3)(react@19.0.0) next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1587,11 +1587,11 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) next-intl: specifier: 3.26.3 - version: 3.26.3(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1648,8 +1648,8 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1824,8 +1824,8 @@ importers: specifier: 2.0.0-beta.7 version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: - specifier: 15.1.3 - version: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + specifier: 15.1.4 + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: specifier: 19.0.0 version: 19.0.0 @@ -1858,8 +1858,8 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: ^15.1.3 - version: 15.1.3 + specifier: ^15.1.4 + version: 15.1.4 eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.17.0) @@ -3212,56 +3212,56 @@ packages: resolution: {integrity: sha512-u6/kglVwZRu5+GMmtkNlGLqJVkgTl0TtM+hLa9rBg7pldx+5NG5bk45NvL37uZmAr2Xfa1C6qHb7GrFwfP372g==} hasBin: true - '@next/env@15.1.3': - resolution: {integrity: sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==} + '@next/env@15.1.4': + resolution: {integrity: sha512-2fZ5YZjedi5AGaeoaC0B20zGntEHRhi2SdWcu61i48BllODcAmmtj8n7YarSPt4DaTsJaBFdxQAVEVzgmx2Zpw==} - '@next/eslint-plugin-next@15.1.3': - resolution: {integrity: sha512-oeP1vnc5Cq9UoOb8SYHAEPbCXMzOgG70l+Zfd+Ie00R25FOm+CCVNrcIubJvB1tvBgakXE37MmqSycksXVPRqg==} + '@next/eslint-plugin-next@15.1.4': + resolution: {integrity: sha512-HwlEXwCK3sr6zmVGEvWBjW9tBFs1Oe6hTmTLoFQtpm4As5HCdu8jfSE0XJOp7uhfEGLniIx8yrGxEWwNnY0fmQ==} - '@next/swc-darwin-arm64@15.1.3': - resolution: {integrity: sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==} + '@next/swc-darwin-arm64@15.1.4': + resolution: {integrity: sha512-wBEMBs+np+R5ozN1F8Y8d/Dycns2COhRnkxRc+rvnbXke5uZBHkUGFgWxfTXn5rx7OLijuUhyfB+gC/ap58dDw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.1.3': - resolution: {integrity: sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==} + '@next/swc-darwin-x64@15.1.4': + resolution: {integrity: sha512-7sgf5rM7Z81V9w48F02Zz6DgEJulavC0jadab4ZsJ+K2sxMNK0/BtF8J8J3CxnsJN3DGcIdC260wEKssKTukUw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.1.3': - resolution: {integrity: sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==} + '@next/swc-linux-arm64-gnu@15.1.4': + resolution: {integrity: sha512-JaZlIMNaJenfd55kjaLWMfok+vWBlcRxqnRoZrhFQrhM1uAehP3R0+Aoe+bZOogqlZvAz53nY/k3ZyuKDtT2zQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.3': - resolution: {integrity: sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==} + '@next/swc-linux-arm64-musl@15.1.4': + resolution: {integrity: sha512-7EBBjNoyTO2ipMDgCiORpwwOf5tIueFntKjcN3NK+GAQD7OzFJe84p7a2eQUeWdpzZvhVXuAtIen8QcH71ZCOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.3': - resolution: {integrity: sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==} + '@next/swc-linux-x64-gnu@15.1.4': + resolution: {integrity: sha512-9TGEgOycqZFuADyFqwmK/9g6S0FYZ3tphR4ebcmCwhL8Y12FW8pIBKJvSwV+UBjMkokstGNH+9F8F031JZKpHw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.3': - resolution: {integrity: sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==} + '@next/swc-linux-x64-musl@15.1.4': + resolution: {integrity: sha512-0578bLRVDJOh+LdIoKvgNDz77+Bd85c5JrFgnlbI1SM3WmEQvsjxTA8ATu9Z9FCiIS/AliVAW2DV/BDwpXbtiQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.1.3': - resolution: {integrity: sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==} + '@next/swc-win32-arm64-msvc@15.1.4': + resolution: {integrity: sha512-JgFCiV4libQavwII+kncMCl30st0JVxpPOtzWcAI2jtum4HjYaclobKhj+JsRu5tFqMtA5CJIa0MvYyuu9xjjQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.3': - resolution: {integrity: sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==} + '@next/swc-win32-x64-msvc@15.1.4': + resolution: {integrity: sha512-xxsJy9wzq7FR5SqPCUqdgSXiNXrMuidgckBa8nH9HtjjxsilgcN6VgXF6tZ3uEWuVEadotQJI8/9EQ6guTC4Yw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4065,19 +4065,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.682': - resolution: {integrity: sha512-zfM6t4tkbQPm/FHK85jcJjJle7FJTj9U8t/ieDzIe3X6DNo66sg6KqQpjkeTJcaj5u2hga1lmv3rc4uob/7D0g==} + '@trpc/client@11.0.0-rc.688': + resolution: {integrity: sha512-e+2efSrqMrBjtAK6DxVvtkwX0kj+5ww7eZSyxHcoC0rjP1CYXl8HUUcWrSHpzOZEYt1Ey9E9o/zFlKKNeTGKWg==} peerDependencies: - '@trpc/server': 11.0.0-rc.682+8650a22e8 + '@trpc/server': 11.0.0-rc.688+87ea49ed1 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.682': - resolution: {integrity: sha512-3LhlwyZiVEMTBKfpxSbD00Ea/uuW9vfTmlFpKRbuU22BBkcW/QNtfcHWL5QtyDHnr8/SIvReTJQ+BfDnqNUSLA==} + '@trpc/next@11.0.0-rc.688': + resolution: {integrity: sha512-XcxbQE/Rr55sclTI3eFh87CXE/HielLpe+fTZCnGj9/yRmlGdBBshjRN9sluIOvIE7AMnurfe+VNU2q2N3Ufcw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.682+8650a22e8 - '@trpc/react-query': 11.0.0-rc.682+8650a22e8 - '@trpc/server': 11.0.0-rc.682+8650a22e8 + '@trpc/client': 11.0.0-rc.688+87ea49ed1 + '@trpc/react-query': 11.0.0-rc.688+87ea49ed1 + '@trpc/server': 11.0.0-rc.688+87ea49ed1 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4088,18 +4088,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.682': - resolution: {integrity: sha512-Ghuk7e7jGRvxOD32X/ImGZTqERZ3R03vaPVzfmdWnBeTyOeqBr0Tb8ylTVyCclqBHpTrRhdM3pWlaXR4M/LKDg==} + '@trpc/react-query@11.0.0-rc.688': + resolution: {integrity: sha512-V9vj5cN4ct0ju9lGeFv/POOuitNPAq9qrPv+zBJV82m336pLr81jBBQtZ1b4Dc+uFiyMD+Ld4SZtvD9joMJlpg==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.682+8650a22e8 - '@trpc/server': 11.0.0-rc.682+8650a22e8 + '@trpc/client': 11.0.0-rc.688+87ea49ed1 + '@trpc/server': 11.0.0-rc.688+87ea49ed1 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.682': - resolution: {integrity: sha512-y8FhLW/UJ8SOyHByvSQW7WvCnbvYioOYhviWD+sRvqkB9f0O8/sEBPJt1mBadWaO/0tygOghkeNC9o1wAsJ8cg==} + '@trpc/server@11.0.0-rc.688': + resolution: {integrity: sha512-nv1uJFMWFnD5Y+pt2rECXTYZ2J8WZMKesNU3DbPxZYUcmLXo18sKRYTlJGjVr5amJ58L3Z5F4JNrFO3GV0DsEQ==} peerDependencies: typescript: '>=5.7.2' @@ -7256,8 +7256,8 @@ packages: next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - next@15.1.3: - resolution: {integrity: sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==} + next@15.1.4: + resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -10785,34 +10785,34 @@ snapshots: - utf-8-validate - webpack-sources - '@next/env@15.1.3': {} + '@next/env@15.1.4': {} - '@next/eslint-plugin-next@15.1.3': + '@next/eslint-plugin-next@15.1.4': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.1.3': + '@next/swc-darwin-arm64@15.1.4': optional: true - '@next/swc-darwin-x64@15.1.3': + '@next/swc-darwin-x64@15.1.4': optional: true - '@next/swc-linux-arm64-gnu@15.1.3': + '@next/swc-linux-arm64-gnu@15.1.4': optional: true - '@next/swc-linux-arm64-musl@15.1.3': + '@next/swc-linux-arm64-musl@15.1.4': optional: true - '@next/swc-linux-x64-gnu@15.1.3': + '@next/swc-linux-x64-gnu@15.1.4': optional: true - '@next/swc-linux-x64-musl@15.1.3': + '@next/swc-linux-x64-musl@15.1.4': optional: true - '@next/swc-win32-arm64-msvc@15.1.3': + '@next/swc-win32-arm64-msvc@15.1.4': optional: true - '@next/swc-win32-x64-msvc@15.1.3': + '@next/swc-win32-x64-msvc@15.1.4': optional: true '@noble/hashes@1.5.0': {} @@ -11633,10 +11633,10 @@ snapshots: '@tanstack/react-query': 5.62.16(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.62.16(react@19.0.0) - next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 '@tanstack/react-query@5.62.16(react@19.0.0)': @@ -11875,33 +11875,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2)': + '@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2)': dependencies: - '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) - next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: '@tanstack/react-query': 5.62.16(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.682(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@tanstack/react-query': 5.62.16(react@19.0.0) - '@trpc/client': 11.0.0-rc.682(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 - '@trpc/server@11.0.0-rc.682(typescript@5.7.2)': + '@trpc/server@11.0.0-rc.688(typescript@5.7.2)': dependencies: typescript: 5.7.2 @@ -15495,23 +15495,23 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-auth@5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - next-intl@3.26.3(next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-intl@3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@15.1.3(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): + next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): dependencies: - '@next/env': 15.1.3 + '@next/env': 15.1.4 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -15521,14 +15521,14 @@ snapshots: react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.3 - '@next/swc-darwin-x64': 15.1.3 - '@next/swc-linux-arm64-gnu': 15.1.3 - '@next/swc-linux-arm64-musl': 15.1.3 - '@next/swc-linux-x64-gnu': 15.1.3 - '@next/swc-linux-x64-musl': 15.1.3 - '@next/swc-win32-arm64-msvc': 15.1.3 - '@next/swc-win32-x64-msvc': 15.1.3 + '@next/swc-darwin-arm64': 15.1.4 + '@next/swc-darwin-x64': 15.1.4 + '@next/swc-linux-arm64-gnu': 15.1.4 + '@next/swc-linux-arm64-musl': 15.1.4 + '@next/swc-linux-x64-gnu': 15.1.4 + '@next/swc-linux-x64-musl': 15.1.4 + '@next/swc-win32-arm64-msvc': 15.1.4 + '@next/swc-win32-x64-msvc': 15.1.4 '@playwright/test': 1.49.1 sass: 1.83.1 sharp: 0.33.5 @@ -17519,9 +17519,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.1(@trpc/server@11.0.0-rc.682(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.682(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 9b7fd629c..0331d87ad 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,7 +17,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "^15.1.3", + "@next/eslint-plugin-next": "^15.1.4", "eslint-config-prettier": "^9.1.0", "eslint-config-turbo": "^2.3.3", "eslint-plugin-import": "^2.31.0", From 64cf3d02c40e6f807b6efd4905dbf725d7947343 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 00:44:58 +0000 Subject: [PATCH 192/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 36 +++---- packages/translation/src/lang/tr.json | 30 +++--- packages/translation/src/lang/zh.json | 132 +++++++++++++------------- 3 files changed, 99 insertions(+), 99 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index f527a0082..3fc7317c1 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -213,10 +213,10 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "默认搜索引擎更改成功" }, "error": { - "message": "" + "message": "无法更改默认的搜索引擎" } } }, @@ -2187,7 +2187,7 @@ "item": { "language": "语言与地区", "board": "主面板", - "defaultSearchEngine": "", + "defaultSearchEngine": "默认搜索引擎", "firstDayOfWeek": "一周的第一天", "accessibility": "无障碍服务" } @@ -2350,10 +2350,10 @@ } }, "search": { - "title": "", + "title": "搜索", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "全局默认搜索引擎", + "description": "无法在这里选择集成搜索引擎" } }, "appearance": { @@ -2582,19 +2582,19 @@ } }, "addToHomarr": { - "label": "", + "label": "添加到 Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "已添加到 Homarr", + "message": "所选应用已被添加到 Homarr" }, "error": { - "title": "", - "message": "" + "title": "无法添加到 Homarr", + "message": "所选应用无法添加到 Homarr" } }, "modal": { - "title": "" + "title": "将 docker 容器添加到 Homarr" } } }, @@ -2872,20 +2872,20 @@ "home": { "group": { "search": { - "title": "", + "title": "搜索", "option": { "other": { - "label": "" + "label": "使用另一个搜索引擎搜索" }, "no-default": { - "label": "", - "description": "" + "label": "没有默认的搜索引擎", + "description": "在首选项中设置默认搜索引擎" }, "search": { - "label": "" + "label": "用{name}搜索“{query}”" }, "from-integration": { - "description": "" + "description": "输入内容以搜索" } } }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index b0b9b041f..36d6dc062 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -213,10 +213,10 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Öntanımlı arama motoru başarıyla değiştirildi" }, "error": { - "message": "" + "message": "Öntanımlı arama motoru değiştirilemiyor" } } }, @@ -877,7 +877,7 @@ "zod": { "errors": { "default": "Bu alan geçersiz", - "required": "Bu alan gereklidir", + "required": "Bu alan gerekli", "string": { "startsWith": "Bu alan {startsWith} ile başlamalıdır", "endsWith": "Bu alan {endsWith} ile bitmelidir", @@ -1773,7 +1773,7 @@ "action": { "duplicate": { "title": "Paneli Kopyala", - "message": "Bu, {name} panelini tüm içeriğiyle birlikte kopyalayacaktır. Kullanmanıza izin verilmeyen entegrasyonları içeren widget'lar kaldırılacaklardır.", + "message": "{name} panelini tüm içerikleri ile birlikte kopyalamayı seçtiniz. Kullanım yetkiniz olmayan entegrasyonlar ve bunları içeren araçlar dahil edilmeyecektir.", "notification": { "success": { "title": "Panel Kopyalandı", @@ -2144,7 +2144,7 @@ "label": "Ayarlar" }, "setHomeBoard": { - "label": "Öntanımlı panel olarak ayarlayın", + "label": "Öntanımlı Panel Olarak Ata", "badge": { "label": "Ana Sayfa", "tooltip": "Bu panel sizin öntanımlı paneliniz olarak görüntülenecektir" @@ -2187,7 +2187,7 @@ "item": { "language": "Dil & Bölge", "board": "Öntanımlı panel", - "defaultSearchEngine": "", + "defaultSearchEngine": "Öntanımlı arama motoru", "firstDayOfWeek": "Haftanın ilk günü", "accessibility": "Erişilebilirlik" } @@ -2350,10 +2350,10 @@ } }, "search": { - "title": "", + "title": "Ara", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "Genel öntanımlı arama motoru", + "description": "Entegrasyona bağlı arama motorları burada seçilemez" } }, "appearance": { @@ -2872,20 +2872,20 @@ "home": { "group": { "search": { - "title": "", + "title": "Ara", "option": { "other": { - "label": "" + "label": "Farklı bir arama motoruyla arama yap" }, "no-default": { - "label": "", - "description": "" + "label": "Öntanımlı arama motoru yapılandırılmadı", + "description": "Tercihlerde öntanımlı arama motoru belirleyin" }, "search": { - "label": "" + "label": "{name} ile '{query}' ifadesini arayın" }, "from-integration": { - "description": "" + "description": "Aramak için yazmaya başla" } } }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 088dcc085..9800a9eab 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -144,7 +144,7 @@ "label": "確認密碼" }, "previousPassword": { - "label": "以前的密碼" + "label": "過去的密碼" }, "homeBoard": { "label": "主面板" @@ -172,7 +172,7 @@ }, "forgotPassword": { "label": "忘記密碼嗎?", - "description": "管理員可以使用已下命令重設密碼" + "description": "管理員可以使用以下命令重設密碼" } }, "register": { @@ -213,20 +213,20 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "預設搜尋引擎已變更成功" }, "error": { - "message": "" + "message": "預設搜尋引擎無法變更" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "成功修改一周的第一天" + "message": "成功編輯一周的第一天" }, "error": { - "message": "無法修改一周的第一天" + "message": "無法編輯一周的第一天" } } }, @@ -245,7 +245,7 @@ "label": "更改圖案", "notification": { "success": { - "message": "圖案修改成功" + "message": "圖案編輯成功" }, "error": { "message": "無法更改圖案" @@ -289,14 +289,14 @@ "notFound": "使用者不存在" }, "transfer": { - "label": "選擇新所有者" + "label": "選擇新的所有者" } } }, "group": { "title": "用戶組", "name": "組", - "search": "查找用戶組", + "search": "尋找用戶組", "field": { "name": "名稱", "members": "成員" @@ -320,15 +320,15 @@ }, "use-all": { "label": "使用全部應用程式", - "description": "允許成員修改全部應用程式" + "description": "允許成員編輯全部應用程式" }, "modify-all": { - "label": "修改全部應用程式", - "description": "允許成員修改全部應用程式" + "label": "編輯全部應用程式", + "description": "允許成員編輯全部應用程式" }, "full-all": { "label": "完整應用程式權限", - "description": "允許成員修改全部應用程式" + "description": "允許成員編輯全部應用程式" } } }, @@ -344,12 +344,12 @@ "description": "允許成員查看全部面板" }, "modify-all": { - "label": "修改全部面板", - "description": "允許成員修改全部面板,不包括訪問控制和危險區域" + "label": "編輯全部面板", + "description": "允許成員編輯全部面板,不包括訪問控制和危險區域" }, "full-all": { "label": "完整面板權限", - "description": "允許成員查看、修改和移除全部面板,包括訪問控制和危險區域" + "description": "允許成員查看、編輯和移除全部面板,包括訪問控制和危險區域" } } }, @@ -408,8 +408,8 @@ "description": "允許使用者創建搜尋引擎" }, "modify-all": { - "label": "修改全部搜尋引擎", - "description": "允許使用者修改全部搜尋引擎" + "label": "編輯全部搜尋引擎", + "description": "允許使用者編輯全部搜尋引擎" }, "full-all": { "label": "完整搜尋引擎的訪問權限", @@ -522,10 +522,10 @@ } }, "edit": { - "title": "修改應用程式", + "title": "編輯應用程式", "notification": { "success": { - "title": "應用程式修改成功", + "title": "應用程式編輯成功", "message": "應用程式儲存成功" }, "error": { @@ -590,10 +590,10 @@ } }, "edit": { - "title": "修改 {name} 集成", + "title": "編輯 {name} 集成", "notification": { "success": { - "title": "修改成功", + "title": "編輯成功", "message": "集成已儲存成功" }, "error": { @@ -744,7 +744,7 @@ }, "media": { "plural": "多媒體", - "search": "查找多媒體", + "search": "尋找多媒體", "field": { "name": "名稱", "size": "大小", @@ -788,7 +788,7 @@ "apply": "應用", "backToOverview": "返回總覽", "create": "創建", - "edit": "修改", + "edit": "編輯", "import": "匯入", "insert": "插入", "remove": "移除", @@ -954,7 +954,7 @@ "action": { "create": "創建項目", "import": "匯入項目", - "edit": "修改項目", + "edit": "編輯項目", "moveResize": "移動 / 調整大小項目", "duplicate": "複製項目", "remove": "移除項目" @@ -986,7 +986,7 @@ } }, "edit": { - "title": "修改項目", + "title": "編輯項目", "advancedOptions": { "label": "進階選項", "title": "進階項目選項" @@ -1466,8 +1466,8 @@ "option": {} }, "video": { - "name": "串流影視", - "description": "崁入來自攝影機或網站的影視", + "name": "串流影音", + "description": "崁入來自攝影機或網站的影音", "option": { "feedUrl": { "label": "訂閱網址" @@ -1484,8 +1484,8 @@ } }, "error": { - "noUrl": "無提供影視網址", - "forYoutubeUseIframe": "Youtube 影視使用 iFrame 選項" + "noUrl": "無提供影音網址", + "forYoutubeUseIframe": "Youtube 影音使用 iFrame 選項" } }, "mediaServer": { @@ -1762,11 +1762,11 @@ }, "widgetPreview": { "toggle": { - "enabled": "啟用修改模式", - "disabled": "停用修改模式" + "enabled": "啟用編輯模式", + "disabled": "停用編輯模式" }, "dimensions": { - "title": "更改尺寸" + "title": "編輯尺寸" } }, "board": { @@ -1788,17 +1788,17 @@ "edit": { "notification": { "success": { - "title": "成功應用修改", + "title": "成功應用編輯", "message": "面板儲存成功" }, "error": { - "title": "無法應用修改", + "title": "無法應用編輯", "message": "面板無法儲存" } }, "confirmLeave": { - "title": "未儲存修改", - "message": "尚未保存修改,確認要離開嗎?" + "title": "未儲存編輯", + "message": "尚未保存編輯,確認要離開嗎?" } }, "oldImport": { @@ -1979,7 +1979,7 @@ "label": "查看面板" }, "modify": { - "label": "修改面板" + "label": "編輯面板" }, "full": { "label": "完全訪問" @@ -2187,7 +2187,7 @@ "item": { "language": "語言與地區", "board": "主面板", - "defaultSearchEngine": "", + "defaultSearchEngine": "預設搜尋引擎", "firstDayOfWeek": "一周的第一天", "accessibility": "無障礙服務" } @@ -2204,7 +2204,7 @@ "title": "使用者" }, "edit": { - "metaTitle": "修改使用者 {username}" + "metaTitle": "編輯使用者 {username}" }, "create": { "metaTitle": "創建使用者", @@ -2281,7 +2281,7 @@ }, "members": { "title": "成員", - "search": "查找成員", + "search": "尋找成員", "notFound": "不存在的成員" }, "permissions": { @@ -2324,7 +2324,7 @@ }, "crawlingAndIndexing": { "title": "爬取和索引", - "warning": "啟用或禁用這裡的任何設定將嚴重影響搜尋引擎如何索引或抓取頁面,任何設定都是一個請求,是否應用這些設定取決於爬蟲,任何修改可能需要數天或數周才能申請,某設定可能是搜尋引擎特定的", + "warning": "啟用或禁用這裡的任何設定將嚴重影響搜尋引擎如何索引或抓取頁面,任何設定都是一個請求,是否應用這些設定取決於爬蟲,任何編輯可能需要數天或數周才能申請,某設定可能是搜尋引擎特定的", "noIndex": { "title": "不要索引", "text": "不要在搜尋引擎上索引網址,也不要在任何搜尋結果中顯示" @@ -2350,10 +2350,10 @@ } }, "search": { - "title": "", + "title": "搜尋", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "全局預設搜尋引擎", + "description": "舞法在此選擇極盛的搜尋引擎" } }, "appearance": { @@ -2520,7 +2520,7 @@ "label": "啟動", "notification": { "success": { - "title": "榮起已啟動", + "title": "容器已啟動", "message": "容器已成功啟動" }, "error": { @@ -2582,19 +2582,19 @@ } }, "addToHomarr": { - "label": "", + "label": "新增至 Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "已新增至 Homarr", + "message": "已選擇的應用程式已新增至 Homarr" }, "error": { - "title": "", - "message": "" + "title": "無法新增至 Homarr", + "message": "已選擇的應用程式無法新增至 Homarr" } }, "modal": { - "title": "" + "title": "新增 Docker 容器至 Homarr" } } }, @@ -2640,7 +2640,7 @@ "integrations": { "label": "集成", "edit": { - "label": "修改" + "label": "編輯" }, "new": { "label": "創建" @@ -2652,7 +2652,7 @@ "label": "創建" }, "edit": { - "label": "修改" + "label": "編輯" } }, "medias": { @@ -2664,7 +2664,7 @@ "label": "創建" }, "edit": { - "label": "修改" + "label": "編輯" } }, "users": { @@ -2717,7 +2717,7 @@ "label": "開啟應用程式網址" }, "edit": { - "label": "修改應用程式" + "label": "編輯應用程式" } }, "detail": { @@ -2763,7 +2763,7 @@ "dark": "切換暗黑模式" }, "language": { - "label": "修改語言", + "label": "編輯語言", "children": { "detail": { "title": "選擇主要語言" @@ -2842,7 +2842,7 @@ }, "youTube": { "name": "YouTube", - "description": "使用 YouTube 搜尋影視" + "description": "使用 YouTube 搜尋影音" } } } @@ -2872,20 +2872,20 @@ "home": { "group": { "search": { - "title": "", + "title": "搜尋", "option": { "other": { - "label": "" + "label": "使用其他搜尋引擎進行搜尋" }, "no-default": { - "label": "", - "description": "" + "label": "無預設搜尋引擎", + "description": "於偏好設定中設定預設搜尋引擎" }, "search": { - "label": "" + "label": "使用 {name} 搜尋 {query}" }, "from-integration": { - "description": "" + "description": "開始輸入以進行搜尋" } } }, @@ -3032,10 +3032,10 @@ } }, "edit": { - "title": "修改搜尋引擎", + "title": "編輯搜尋引擎", "notification": { "success": { - "title": "應用修改成功", + "title": "應用編輯成功", "message": "搜尋引擎已儲存成功" }, "error": { From ffdc8d34960dea0172c50a1d93a4cd14997b13ac Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:15:24 +0000 Subject: [PATCH 193/262] fix(deps): update dependency @tabler/icons-react to ^3.28.1 (#1891) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/notifications/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 50 ++++++++++++------------- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 89784c1ef..d814e9aa9 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -46,7 +46,7 @@ "@mantine/tiptap": "^7.15.3", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", - "@tabler/icons-react": "^3.27.1", + "@tabler/icons-react": "^3.28.1", "@tanstack/react-query": "^5.62.16", "@tanstack/react-query-devtools": "^5.62.16", "@tanstack/react-query-next-experimental": "5.62.16", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index b8608e51b..edfc855f5 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,7 +33,7 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.3", - "@tabler/icons-react": "^3.27.1", + "@tabler/icons-react": "^3.28.1", "dayjs": "^1.11.13", "next": "15.1.4", "react": "19.0.0", diff --git a/packages/notifications/package.json b/packages/notifications/package.json index da528346d..0542c5349 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/ui": "workspace:^0.1.0", "@mantine/notifications": "^7.15.3", - "@tabler/icons-react": "^3.27.1" + "@tabler/icons-react": "^3.28.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 91bf88381..fed1a0563 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -35,7 +35,7 @@ "@mantine/core": "^7.15.3", "@mantine/hooks": "^7.15.3", "@mantine/spotlight": "^7.15.3", - "@tabler/icons-react": "^3.27.1", + "@tabler/icons-react": "^3.28.1", "jotai": "^2.11.0", "next": "15.1.4", "react": "19.0.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index 290f494b2..012b20f33 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -32,7 +32,7 @@ "@mantine/core": "^7.15.3", "@mantine/dates": "^7.15.3", "@mantine/hooks": "^7.15.3", - "@tabler/icons-react": "^3.27.1", + "@tabler/icons-react": "^3.28.1", "mantine-react-table": "2.0.0-beta.7", "next": "15.1.4", "react": "19.0.0", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d2c6cb9e9..d23549d97 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -43,7 +43,7 @@ "@homarr/validation": "workspace:^0.1.0", "@mantine/core": "^7.15.3", "@mantine/hooks": "^7.15.3", - "@tabler/icons-react": "^3.27.1", + "@tabler/icons-react": "^3.28.1", "@tiptap/extension-color": "2.11.0", "@tiptap/extension-highlight": "2.11.0", "@tiptap/extension-image": "2.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc012f16d..7984c468f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -173,8 +173,8 @@ importers: specifier: ^0.11.1 version: 0.11.1(typescript@5.7.2)(zod@3.24.1) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) '@tanstack/react-query': specifier: ^5.62.16 version: 5.62.16(react@19.0.0) @@ -228,7 +228,7 @@ importers: version: 2.11.0(@types/react@19.0.3)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1194,8 +1194,8 @@ importers: specifier: ^7.15.3 version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -1234,8 +1234,8 @@ importers: specifier: ^7.15.3 version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1535,8 +1535,8 @@ importers: specifier: ^7.15.3 version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) jotai: specifier: ^2.11.0 version: 2.11.0(@types/react@19.0.3)(react@19.0.0) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1642,11 +1642,11 @@ importers: specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1767,8 +1767,8 @@ importers: specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@tabler/icons-react': - specifier: ^3.27.1 - version: 3.27.1(react@19.0.0) + specifier: ^3.28.1 + version: 3.28.1(react@19.0.0) '@tiptap/extension-color': specifier: 2.11.0 version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/extension-text-style@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -3808,13 +3808,13 @@ packages: typescript: optional: true - '@tabler/icons-react@3.27.1': - resolution: {integrity: sha512-4C8PPvWPIQZvHgpWSGVIJUAbZz1qhKHvaSi9GWgXaDYB9CAfVz4puEcjo3nFCeg1OUPv3ZQZ0Ste0nh9/IeuWw==} + '@tabler/icons-react@3.28.1': + resolution: {integrity: sha512-KNBpA2kbxr3/2YK5swt7b/kd/xpDP1FHYZCxDFIw54tX8slELRFEf95VMxsccQHZeIcUbdoojmUUuYSbt/sM5Q==} peerDependencies: react: '>= 16' - '@tabler/icons@3.27.1': - resolution: {integrity: sha512-Utt80OeExBV/Pi9m9Z7ZRHOHQPapMO8t4mCSMb/n5oiLWCEU2HX+9mGzo772SVxyDZ3YQBgmzIYnGKhL3tUSSQ==} + '@tabler/icons@3.28.1': + resolution: {integrity: sha512-h7nqKEvFooLtFxhMOC1/2eiV+KRXhBUuDUUJrJlt6Ft6tuMw2eU/9GLQgrTk41DNmIEzp/LI83K9J9UUU8YBYQ==} '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} @@ -11612,12 +11612,12 @@ snapshots: optionalDependencies: typescript: 5.7.2 - '@tabler/icons-react@3.27.1(react@19.0.0)': + '@tabler/icons-react@3.28.1(react@19.0.0)': dependencies: - '@tabler/icons': 3.27.1 + '@tabler/icons': 3.28.1 react: 19.0.0 - '@tabler/icons@3.27.1': {} + '@tabler/icons@3.28.1': {} '@tanstack/match-sorter-utils@8.19.4': dependencies: @@ -15308,12 +15308,12 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.27.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) - '@tabler/icons-react': 3.27.1(react@19.0.0) + '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From e33e0a4d2bd91d610c6d29522a98cae8b9953478 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 14:36:02 +0000 Subject: [PATCH 194/262] fix(deps): update tanstack-query monorepo to ^5.63.0 (#1893) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++--- pnpm-lock.yaml | 54 ++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index d814e9aa9..4e07c644d 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.28.1", - "@tanstack/react-query": "^5.62.16", - "@tanstack/react-query-devtools": "^5.62.16", - "@tanstack/react-query-next-experimental": "5.62.16", + "@tanstack/react-query": "^5.63.0", + "@tanstack/react-query-devtools": "^5.63.0", + "@tanstack/react-query-next-experimental": "5.63.0", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7984c468f..cb32b6bcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) '@tanstack/react-query': - specifier: ^5.62.16 - version: 5.62.16(react@19.0.0) + specifier: ^5.63.0 + version: 5.63.0(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.62.16 - version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(react@19.0.0) + specifier: ^5.63.0 + version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.62.16 - version: 5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + specifier: 5.63.0 + version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/next': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.688(typescript@5.7.2) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) '@trpc/server': specifier: next version: 11.0.0-rc.688(typescript@5.7.2) @@ -3826,21 +3826,21 @@ packages: '@tanstack/query-devtools@5.62.16': resolution: {integrity: sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==} - '@tanstack/react-query-devtools@5.62.16': - resolution: {integrity: sha512-EjF0tgHnWYcqhk8KxGKnmGlYcnldhWjW3bbH2WZqxo7t41ytzkIQtZ/UyLph//YMmZZE/RVTmSo3rGq/EG9iCA==} + '@tanstack/react-query-devtools@5.63.0': + resolution: {integrity: sha512-j3+22r6srSJVy8oiLUpOOupI4g7IHwbISeEGM+5ASIzzOnVUUSsY6e4nu5pxxj7ODJbiag3GpkHU/otG9B9sAA==} peerDependencies: - '@tanstack/react-query': ^5.62.16 + '@tanstack/react-query': ^5.63.0 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.62.16': - resolution: {integrity: sha512-Gch1AXHjqQf1OJF5zbDY3B+UPCU7DSzjTL4NigR0RGexnsMbcLuEur58xnkEqPtUmA6xaFysAnt+T2wksKIViA==} + '@tanstack/react-query-next-experimental@5.63.0': + resolution: {integrity: sha512-km5aJnrxL8LMvSN6J4DV85s0wu3QKG+78j6ZoFLFbVvqwIXIxdhNuVKOsfo5gwE0XlaJOPYRnRG+5He8WI2WOg==} peerDependencies: - '@tanstack/react-query': ^5.62.16 + '@tanstack/react-query': ^5.63.0 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.62.16': - resolution: {integrity: sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==} + '@tanstack/react-query@5.63.0': + resolution: {integrity: sha512-QWizLzSiog8xqIRYmuJRok9VELlXVBAwtINgVCgW1SNvamQwWDO5R0XFSkjoBEj53x9Of1KAthLRBUC5xmtVLQ==} peerDependencies: react: ^18 || ^19 @@ -11627,19 +11627,19 @@ snapshots: '@tanstack/query-devtools@5.62.16': {} - '@tanstack/react-query-devtools@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.62.16 - '@tanstack/react-query': 5.62.16(react@19.0.0) + '@tanstack/react-query': 5.63.0(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.62.16(@tanstack/react-query@5.62.16(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.62.16(react@19.0.0) + '@tanstack/react-query': 5.63.0(react@19.0.0) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - '@tanstack/react-query@5.62.16(react@19.0.0)': + '@tanstack/react-query@5.63.0(react@19.0.0)': dependencies: '@tanstack/query-core': 5.62.16 react: 19.0.0 @@ -11880,7 +11880,7 @@ snapshots: '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) typescript: 5.7.2 - '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) @@ -11889,12 +11889,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.2 optionalDependencies: - '@tanstack/react-query': 5.62.16(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@tanstack/react-query': 5.63.0(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) - '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.62.16(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': dependencies: - '@tanstack/react-query': 5.62.16(react@19.0.0) + '@tanstack/react-query': 5.63.0(react@19.0.0) '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) react: 19.0.0 From 34a6c65ead0b375d0948fe4f9c3fb22abc5ee1dc Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 16:06:01 +0100 Subject: [PATCH 195/262] chore(deps): update node.js to v22.13.0 (#1890) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a52519f94..59d40428f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.12.0-alpine AS base +FROM node:22.13.0-alpine AS base FROM base AS builder RUN apk add --no-cache libc6-compat From a69c64d88d57293eba8adbdf88ce694194268492 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 19:12:13 +0000 Subject: [PATCH 196/262] fix(deps): update dependency ldapts to v7.3.1 (#1896) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/auth/package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/auth/package.json b/packages/auth/package.json index ffcf18c95..8732c203f 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -33,7 +33,7 @@ "@t3-oss/env-nextjs": "^0.11.1", "bcrypt": "^5.1.1", "cookies": "^0.9.1", - "ldapts": "7.3.0", + "ldapts": "7.3.1", "next": "15.1.4", "next-auth": "5.0.0-beta.25", "react": "19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb32b6bcc..8ba84fc11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -625,8 +625,8 @@ importers: specifier: ^0.9.1 version: 0.9.1 ldapts: - specifier: 7.3.0 - version: 7.3.0 + specifier: 7.3.1 + version: 7.3.1 next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -6867,8 +6867,8 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} - ldapts@7.3.0: - resolution: {integrity: sha512-hj+cOy50uwu496x66IrqeY0WY35pMnkKrOgdYtZFu0uii4Xzw39Wng1hgzmGYWmzK9On4jYiiYyz1ZdVc857XA==} + ldapts@7.3.1: + resolution: {integrity: sha512-g8mxobOSeuxVkXRT9JZBGUvfDjXIpQPEHH5kYG9UjrIlWV5Rqxq+MMmqzlSh4OqSXh+3lFvzyYu+lsJldoZvvA==} engines: {node: '>=18'} levn@0.4.1: @@ -9356,8 +9356,8 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true - uuid@11.0.3: - resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} + uuid@11.0.4: + resolution: {integrity: sha512-IzL6VtTTYcAhA/oghbFJ1Dkmqev+FpQWnCBaKq/gUluLxliWvO8DPFWfIviRmYbtaavtSQe4WBL++rFjdcGWEg==} hasBin: true uuid@8.3.2: @@ -13260,7 +13260,7 @@ snapshots: data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.1.0 data-view-buffer@1.0.1: dependencies: @@ -15157,13 +15157,13 @@ snapshots: dependencies: readable-stream: 2.3.8 - ldapts@7.3.0: + ldapts@7.3.1: dependencies: '@types/asn1': 0.2.4 asn1: 0.2.6 debug: 4.4.0 strict-event-emitter-types: 2.0.0 - uuid: 11.0.3 + uuid: 11.0.4 whatwg-url: 14.1.0 transitivePeerDependencies: - supports-color @@ -17896,7 +17896,7 @@ snapshots: uuid@10.0.0: {} - uuid@11.0.3: {} + uuid@11.0.4: {} uuid@8.3.2: {} From 3860af31b64e8a74e7e1c91470a9de5450f9e5e7 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 19:14:26 +0000 Subject: [PATCH 197/262] fix(deps): update dependency octokit to ^4.1.0 (#1898) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/request-handler/package.json | 2 +- pnpm-lock.yaml | 263 ++++++++++++++++++-------- 2 files changed, 181 insertions(+), 84 deletions(-) diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index e50417232..c660ea35f 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -29,7 +29,7 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "dayjs": "^1.11.13", - "octokit": "^4.0.3", + "octokit": "^4.1.0", "pretty-print-error": "^1.1.2", "superjson": "2.2.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ba84fc11..7a25238ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1446,8 +1446,8 @@ importers: specifier: ^1.11.13 version: 1.11.13 octokit: - specifier: ^4.0.3 - version: 4.0.3 + specifier: ^4.1.0 + version: 4.1.0 pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=4arrfgbz7em6s4gqywse7esg4u) @@ -3282,38 +3282,42 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@octokit/app@15.1.1': - resolution: {integrity: sha512-fk8xrCSPTJGpyBdBNI+DcZ224dm0aApv4vi6X7/zTmANXlegKV2Td+dJ+fd7APPaPN7R+xttUsj2Fm+AFDSfMQ==} + '@octokit/app@15.1.2': + resolution: {integrity: sha512-6aKmKvqnJKoVK+kx0mLlBMKmQYoziPw4Rd/PWr0j65QVQlrDXlu6hGU8fmTXt7tNkf/DsubdIaTT4fkoWzCh5g==} engines: {node: '>= 18'} - '@octokit/auth-app@7.1.3': - resolution: {integrity: sha512-GZdkOp2kZTIy5dG9oXqvzUAZiPvDx4C/lMlN6yQjtG9d/+hYa7W8WXTJoOrXE8UdfL9A/sZMl206dmtkl9lwVQ==} + '@octokit/auth-app@7.1.4': + resolution: {integrity: sha512-5F+3l/maq9JfWQ4bV28jT2G/K8eu9OJ317yzXPTGe4Kw+lKDhFaS4dQ3Ltmb6xImKxfCQdqDqMXODhc9YLipLw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-app@8.1.1': - resolution: {integrity: sha512-5UtmxXAvU2wfcHIPPDWzVSAWXVJzG3NWsxb7zCFplCWEmMCArSZV0UQu5jw5goLQXbFyOr5onzEH37UJB3zQQg==} + '@octokit/auth-oauth-app@8.1.2': + resolution: {integrity: sha512-3woNZgq5/S6RS+9ZTq+JdymxVr7E0s4EYxF20ugQvgX3pomdPUL5r/XdTY9wALoBM2eHVy4ettr5fKpatyTyHw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-device@7.1.1': - resolution: {integrity: sha512-HWl8lYueHonuyjrKKIup/1tiy0xcmQCdq5ikvMO1YwkNNkxb6DXfrPjrMYItNLyCP/o2H87WuijuE+SlBTT8eg==} + '@octokit/auth-oauth-device@7.1.2': + resolution: {integrity: sha512-gTOIzDeV36OhVfxCl69FmvJix7tJIiU6dlxuzLVAzle7fYfO8UDyddr9B+o4CFQVaMBLMGZ9ak2CWMYcGeZnPw==} engines: {node: '>= 18'} - '@octokit/auth-oauth-user@5.1.1': - resolution: {integrity: sha512-rRkMz0ErOppdvEfnemHJXgZ9vTPhBuC6yASeFaB7I2yLMd7QpjfrL1mnvRPlyKo+M6eeLxrKanXJ9Qte29SRsw==} + '@octokit/auth-oauth-user@5.1.2': + resolution: {integrity: sha512-PgVDDPJgZYb3qSEXK4moksA23tfn68zwSAsQKZ1uH6IV9IaNEYx35OXXI80STQaLYnmEE86AgU0tC1YkM4WjsA==} engines: {node: '>= 18'} '@octokit/auth-token@5.1.1': resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} engines: {node: '>= 18'} - '@octokit/auth-unauthenticated@6.1.0': - resolution: {integrity: sha512-zPSmfrUAcspZH/lOFQnVnvjQZsIvmfApQH6GzJrkIunDooU1Su2qt2FfMTSVPRp7WLTQyC20Kd55lF+mIYaohQ==} + '@octokit/auth-unauthenticated@6.1.1': + resolution: {integrity: sha512-bGXqdN6RhSFHvpPq46SL8sN+F3odQ6oMNLWc875IgoqcC3qus+fOL2th6Tkl94wvdSTy8/OeHzWy/lZebmnhog==} engines: {node: '>= 18'} '@octokit/core@6.1.2': resolution: {integrity: sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==} engines: {node: '>= 18'} + '@octokit/core@6.1.3': + resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} + engines: {node: '>= 18'} + '@octokit/endpoint@10.1.1': resolution: {integrity: sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==} engines: {node: '>= 18'} @@ -3322,21 +3326,28 @@ packages: resolution: {integrity: sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==} engines: {node: '>= 18'} - '@octokit/oauth-app@7.1.3': - resolution: {integrity: sha512-EHXbOpBkSGVVGF1W+NLMmsnSsJRkcrnVmDKt0TQYRBb6xWfWzoi9sBD4DIqZ8jGhOWO/V8t4fqFyJ4vDQDn9bg==} + '@octokit/graphql@8.1.2': + resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} + engines: {node: '>= 18'} + + '@octokit/oauth-app@7.1.5': + resolution: {integrity: sha512-/Y2MiwWDlGUK4blKKfjJiwjzu/FzwKTTTfTZAAQ0QbdBIDEGJPWhOFH6muSN86zaa4tNheB4YS3oWIR2e4ydzA==} engines: {node: '>= 18'} '@octokit/oauth-authorization-url@7.1.1': resolution: {integrity: sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==} engines: {node: '>= 18'} - '@octokit/oauth-methods@5.1.2': - resolution: {integrity: sha512-C5lglRD+sBlbrhCUTxgJAFjWgJlmTx5bQ7Ch0+2uqRjYv7Cfb5xpX4WuSC9UgQna3sqRGBL9EImX9PvTpMaQ7g==} + '@octokit/oauth-methods@5.1.3': + resolution: {integrity: sha512-M+bDBi5H8FnH0xhCTg0m9hvcnppdDnxUqbZyOkxlLblKpLAR+eT2nbDPvJDp0eLrvJWA1I8OX0KHf/sBMQARRA==} engines: {node: '>= 18'} '@octokit/openapi-types@22.2.0': resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + '@octokit/openapi-types@23.0.1': + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + '@octokit/openapi-webhooks-types@8.5.1': resolution: {integrity: sha512-i3h1b5zpGSB39ffBbYdSGuAd0NhBAwPyA3QV3LYi/lx4lsbZiu7u2UHgXVUR6EpvOI8REOuVh1DZTRfHoJDvuQ==} @@ -3352,8 +3363,14 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-rest-endpoint-methods@13.2.6': - resolution: {integrity: sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==} + '@octokit/plugin-paginate-rest@11.4.0': + resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@13.3.0': + resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' @@ -3364,29 +3381,52 @@ packages: peerDependencies: '@octokit/core': '>=6' + '@octokit/plugin-retry@7.1.3': + resolution: {integrity: sha512-8nKOXvYWnzv89gSyIvgFHmCBAxfQAOPRlkacUHL9r5oWtp5Whxl8Skb2n3ACZd+X6cYijD6uvmrQuPH/UCL5zQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + '@octokit/plugin-throttling@9.3.2': resolution: {integrity: sha512-FqpvcTpIWFpMMwIeSoypoJXysSAQ3R+ALJhXXSG1HTP3YZOIeLmcNcimKaXxTcws+Sh6yoRl13SJ5r8sXc1Fhw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': ^6.0.0 + '@octokit/plugin-throttling@9.4.0': + resolution: {integrity: sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': ^6.1.3 + '@octokit/request-error@6.1.5': resolution: {integrity: sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==} engines: {node: '>= 18'} + '@octokit/request-error@6.1.6': + resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} + engines: {node: '>= 18'} + '@octokit/request@9.1.3': resolution: {integrity: sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==} engines: {node: '>= 18'} + '@octokit/request@9.1.4': + resolution: {integrity: sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==} + engines: {node: '>= 18'} + '@octokit/types@13.6.2': resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} + '@octokit/types@13.7.0': + resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} + '@octokit/webhooks-methods@5.1.0': resolution: {integrity: sha512-yFZa3UH11VIxYnnoOYCVoJ3q4ChuSOk2IVBBQ0O3xtKX4x9bmKb/1t+Mxixv2iUhzMdOl1qeWJqEhouXXzB3rQ==} engines: {node: '>= 18'} - '@octokit/webhooks@13.4.1': - resolution: {integrity: sha512-I5YPUtfWidh+OzyrlDahJsUpkpGK0kCTmDRbuqGmlCUzOtxdEkX3R4d6Cd08ijQYwkVXQJanPdbKuZBeV2NMaA==} + '@octokit/webhooks@13.4.2': + resolution: {integrity: sha512-fakbgkCScapQXPxyqx2jZs/Y3jGlyezwUp7ATL7oLAGJ0+SqBKWKstoKZpiQ+REeHutKpYjY9UtxdLSurwl2Tg==} engines: {node: '>= 18'} '@panva/hkdf@1.2.1': @@ -5889,6 +5929,9 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -7505,8 +7548,8 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - octokit@4.0.3: - resolution: {integrity: sha512-kfqH80Yuuux4fLbZ4SvObjCvVu89U0eCh5+fulh6tr/hJkDYS1inXDGnNJDOp312GANMEhWWMLYmjQR8MvSSMQ==} + octokit@4.1.0: + resolution: {integrity: sha512-/UrQAOSvkc+lUUWKNzy4ByAgYU9KpFzZQt8DnC962YmQuDiZb1SNJ90YukCCK5aMzKqqCA+z1kkAlmzYvdYKag==} engines: {node: '>= 18'} ofetch@1.4.1: @@ -10829,56 +10872,56 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@octokit/app@15.1.1': + '@octokit/app@15.1.2': dependencies: - '@octokit/auth-app': 7.1.3 - '@octokit/auth-unauthenticated': 6.1.0 - '@octokit/core': 6.1.2 - '@octokit/oauth-app': 7.1.3 - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) - '@octokit/types': 13.6.2 - '@octokit/webhooks': 13.4.1 + '@octokit/auth-app': 7.1.4 + '@octokit/auth-unauthenticated': 6.1.1 + '@octokit/core': 6.1.3 + '@octokit/oauth-app': 7.1.5 + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) + '@octokit/types': 13.7.0 + '@octokit/webhooks': 13.4.2 - '@octokit/auth-app@7.1.3': + '@octokit/auth-app@7.1.4': dependencies: - '@octokit/auth-oauth-app': 8.1.1 - '@octokit/auth-oauth-user': 5.1.1 - '@octokit/request': 9.1.3 - '@octokit/request-error': 6.1.5 - '@octokit/types': 13.6.2 + '@octokit/auth-oauth-app': 8.1.2 + '@octokit/auth-oauth-user': 5.1.2 + '@octokit/request': 9.1.4 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 toad-cache: 3.7.0 universal-github-app-jwt: 2.2.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-app@8.1.1': + '@octokit/auth-oauth-app@8.1.2': dependencies: - '@octokit/auth-oauth-device': 7.1.1 - '@octokit/auth-oauth-user': 5.1.1 - '@octokit/request': 9.1.3 - '@octokit/types': 13.6.2 + '@octokit/auth-oauth-device': 7.1.2 + '@octokit/auth-oauth-user': 5.1.2 + '@octokit/request': 9.1.4 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-device@7.1.1': + '@octokit/auth-oauth-device@7.1.2': dependencies: - '@octokit/oauth-methods': 5.1.2 - '@octokit/request': 9.1.3 - '@octokit/types': 13.6.2 + '@octokit/oauth-methods': 5.1.3 + '@octokit/request': 9.1.4 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 - '@octokit/auth-oauth-user@5.1.1': + '@octokit/auth-oauth-user@5.1.2': dependencies: - '@octokit/auth-oauth-device': 7.1.1 - '@octokit/oauth-methods': 5.1.2 - '@octokit/request': 9.1.3 - '@octokit/types': 13.6.2 + '@octokit/auth-oauth-device': 7.1.2 + '@octokit/oauth-methods': 5.1.3 + '@octokit/request': 9.1.4 + '@octokit/types': 13.7.0 universal-user-agent: 7.0.2 '@octokit/auth-token@5.1.1': {} - '@octokit/auth-unauthenticated@6.1.0': + '@octokit/auth-unauthenticated@6.1.1': dependencies: - '@octokit/request-error': 6.1.5 - '@octokit/types': 13.6.2 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 '@octokit/core@6.1.2': dependencies: @@ -10890,6 +10933,16 @@ snapshots: before-after-hook: 3.0.2 universal-user-agent: 7.0.2 + '@octokit/core@6.1.3': + dependencies: + '@octokit/auth-token': 5.1.1 + '@octokit/graphql': 8.1.2 + '@octokit/request': 9.1.4 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + '@octokit/endpoint@10.1.1': dependencies: '@octokit/types': 13.6.2 @@ -10901,43 +10954,56 @@ snapshots: '@octokit/types': 13.6.2 universal-user-agent: 7.0.2 - '@octokit/oauth-app@7.1.3': + '@octokit/graphql@8.1.2': dependencies: - '@octokit/auth-oauth-app': 8.1.1 - '@octokit/auth-oauth-user': 5.1.1 - '@octokit/auth-unauthenticated': 6.1.0 - '@octokit/core': 6.1.2 + '@octokit/request': 9.1.4 + '@octokit/types': 13.7.0 + universal-user-agent: 7.0.2 + + '@octokit/oauth-app@7.1.5': + dependencies: + '@octokit/auth-oauth-app': 8.1.2 + '@octokit/auth-oauth-user': 5.1.2 + '@octokit/auth-unauthenticated': 6.1.1 + '@octokit/core': 6.1.3 '@octokit/oauth-authorization-url': 7.1.1 - '@octokit/oauth-methods': 5.1.2 + '@octokit/oauth-methods': 5.1.3 '@types/aws-lambda': 8.10.146 universal-user-agent: 7.0.2 '@octokit/oauth-authorization-url@7.1.1': {} - '@octokit/oauth-methods@5.1.2': + '@octokit/oauth-methods@5.1.3': dependencies: '@octokit/oauth-authorization-url': 7.1.1 - '@octokit/request': 9.1.3 - '@octokit/request-error': 6.1.5 - '@octokit/types': 13.6.2 + '@octokit/request': 9.1.4 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 '@octokit/openapi-types@22.2.0': {} + '@octokit/openapi-types@23.0.1': {} + '@octokit/openapi-webhooks-types@8.5.1': {} - '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.2)': + '@octokit/plugin-paginate-graphql@5.2.4(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 + '@octokit/core': 6.1.3 '@octokit/plugin-paginate-rest@11.3.6(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 '@octokit/types': 13.6.2 - '@octokit/plugin-rest-endpoint-methods@13.2.6(@octokit/core@6.1.2)': + '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': dependencies: - '@octokit/core': 6.1.2 - '@octokit/types': 13.6.2 + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 + + '@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 '@octokit/plugin-retry@7.1.2(@octokit/core@6.1.2)': dependencies: @@ -10946,16 +11012,33 @@ snapshots: '@octokit/types': 13.6.2 bottleneck: 2.19.5 + '@octokit/plugin-retry@7.1.3(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 + bottleneck: 2.19.5 + '@octokit/plugin-throttling@9.3.2(@octokit/core@6.1.2)': dependencies: '@octokit/core': 6.1.2 '@octokit/types': 13.6.2 bottleneck: 2.19.5 + '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/types': 13.7.0 + bottleneck: 2.19.5 + '@octokit/request-error@6.1.5': dependencies: '@octokit/types': 13.6.2 + '@octokit/request-error@6.1.6': + dependencies: + '@octokit/types': 13.7.0 + '@octokit/request@9.1.3': dependencies: '@octokit/endpoint': 10.1.1 @@ -10963,16 +11046,28 @@ snapshots: '@octokit/types': 13.6.2 universal-user-agent: 7.0.2 + '@octokit/request@9.1.4': + dependencies: + '@octokit/endpoint': 10.1.1 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 + fast-content-type-parse: 2.0.1 + universal-user-agent: 7.0.2 + '@octokit/types@13.6.2': dependencies: '@octokit/openapi-types': 22.2.0 + '@octokit/types@13.7.0': + dependencies: + '@octokit/openapi-types': 23.0.1 + '@octokit/webhooks-methods@5.1.0': {} - '@octokit/webhooks@13.4.1': + '@octokit/webhooks@13.4.2': dependencies: '@octokit/openapi-webhooks-types': 8.5.1 - '@octokit/request-error': 6.1.5 + '@octokit/request-error': 6.1.6 '@octokit/webhooks-methods': 5.1.0 '@panva/hkdf@1.2.1': {} @@ -14123,6 +14218,8 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + fast-content-type-parse@2.0.1: {} + fast-deep-equal@3.1.3: {} fast-fifo@1.3.2: {} @@ -15706,18 +15803,18 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - octokit@4.0.3: + octokit@4.1.0: dependencies: - '@octokit/app': 15.1.1 - '@octokit/core': 6.1.2 - '@octokit/oauth-app': 7.1.3 - '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.2) - '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) - '@octokit/plugin-rest-endpoint-methods': 13.2.6(@octokit/core@6.1.2) - '@octokit/plugin-retry': 7.1.2(@octokit/core@6.1.2) - '@octokit/plugin-throttling': 9.3.2(@octokit/core@6.1.2) - '@octokit/request-error': 6.1.5 - '@octokit/types': 13.6.2 + '@octokit/app': 15.1.2 + '@octokit/core': 6.1.3 + '@octokit/oauth-app': 7.1.5 + '@octokit/plugin-paginate-graphql': 5.2.4(@octokit/core@6.1.3) + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) + '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) + '@octokit/plugin-retry': 7.1.3(@octokit/core@6.1.3) + '@octokit/plugin-throttling': 9.4.0(@octokit/core@6.1.3) + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.7.0 ofetch@1.4.1: dependencies: From e056f620da5982d08ca1f1682f7f82fc70870b52 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 19:14:44 +0000 Subject: [PATCH 198/262] chore(deps): update dependency typescript to ^5.7.3 (#1897) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/cli/package.json | 2 +- packages/common/package.json | 2 +- packages/cron-job-runner/package.json | 2 +- packages/cron-job-status/package.json | 2 +- packages/cron-jobs-core/package.json | 2 +- packages/cron-jobs/package.json | 2 +- packages/db/package.json | 2 +- packages/definitions/package.json | 2 +- packages/form/package.json | 2 +- packages/icons/package.json | 2 +- packages/integrations/package.json | 2 +- packages/log/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 2 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 2 +- packages/old-schema/package.json | 2 +- packages/ping/package.json | 2 +- packages/redis/package.json | 2 +- packages/request-handler/package.json | 2 +- packages/server-settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 352 ++++++++++++------------ tooling/eslint/package.json | 2 +- tooling/prettier/package.json | 2 +- 36 files changed, 211 insertions(+), 211 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 4e07c644d..db14974ac 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -91,6 +91,6 @@ "eslint": "^9.17.0", "node-loader": "^2.1.0", "prettier": "^3.4.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 01b5f9e15..60f2aa31e 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -49,6 +49,6 @@ "eslint": "^9.17.0", "prettier": "^3.4.2", "tsx": "4.19.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 8b76172fe..32220cd6d 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -36,6 +36,6 @@ "@types/ws": "^8.5.13", "eslint": "^9.17.0", "prettier": "^3.4.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/package.json b/package.json index 6be3db6b7..335a9e143 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "semantic-release": "^24.2.1", "testcontainers": "^10.16.0", "turbo": "^2.3.3", - "typescript": "^5.7.2", + "typescript": "^5.7.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, diff --git a/packages/analytics/package.json b/packages/analytics/package.json index bdc330845..ede56c834 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/api/package.json b/packages/api/package.json index d9127f43b..1a994e3c0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -56,6 +56,6 @@ "@types/dockerode": "^3.3.34", "eslint": "^9.17.0", "prettier": "^3.4.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 8732c203f..d5db197f7 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -47,6 +47,6 @@ "@types/cookies": "0.9.0", "eslint": "^9.17.0", "prettier": "^3.4.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 1dfb7b67f..3286f23ec 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -34,6 +34,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index 8a90754ea..a85a7d5f5 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -37,6 +37,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index 0c797ea51..b642f94e4 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -31,6 +31,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index 148c40604..6143cd192 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index 08ec4866a..d40a59fb2 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -33,6 +33,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 6635fa036..3791dab57 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -46,6 +46,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index cd3e92438..4a666265f 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -61,6 +61,6 @@ "eslint": "^9.17.0", "prettier": "^3.4.2", "tsx": "4.19.2", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 105aa402b..151d26d84 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/form/package.json b/packages/form/package.json index 77d7d00f3..fd34708fc 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index d0bc89830..6dcaf8b77 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -32,6 +32,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index e1dab49da..69052c2da 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -43,6 +43,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/log/package.json b/packages/log/package.json index 967383b46..52735d96c 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -35,6 +35,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index edfc855f5..6a3cad5cd 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -44,6 +44,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index e8803c460..eb3fd39b9 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 0542c5349..7fc6c70d3 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -32,6 +32,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 7b3d85443..c8d7c7d02 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -53,6 +53,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/adm-zip": "0.5.7", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index 25c082f6f..afdbd2a93 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index a4efede52..bf31c713a 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index 12ae812ce..4627813dc 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -34,6 +34,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index c660ea35f..aa6900035 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -38,6 +38,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index 6e391a324..812e2af4f 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index fed1a0563..f4bae441b 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -47,6 +47,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index 6d1969ec9..3d060fcb8 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -42,6 +42,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 012b20f33..33856f0df 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -44,6 +44,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index 13b77aeca..3706fe60e 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -33,6 +33,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d23549d97..574baff40 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -73,6 +73,6 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a25238ff..9cdfc7fb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,25 +18,25 @@ importers: version: link:tooling/prettier '@semantic-release/changelog': specifier: ^6.0.3 - version: 6.0.3(semantic-release@24.2.1(typescript@5.7.2)) + version: 6.0.3(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/commit-analyzer': specifier: ^13.0.1 - version: 13.0.1(semantic-release@24.2.1(typescript@5.7.2)) + version: 13.0.1(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/git': specifier: ^10.0.1 - version: 10.0.1(semantic-release@24.2.1(typescript@5.7.2)) + version: 10.0.1(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/github': specifier: ^11.0.1 - version: 11.0.1(semantic-release@24.2.1(typescript@5.7.2)) + version: 11.0.1(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/npm': specifier: ^12.0.1 - version: 12.0.1(semantic-release@24.2.1(typescript@5.7.2)) + version: 12.0.1(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/release-notes-generator': specifier: ^14.0.3 - version: 14.0.3(semantic-release@24.2.1(typescript@5.7.2)) + version: 14.0.3(semantic-release@24.2.1(typescript@5.7.3)) '@turbo/gen': specifier: ^2.3.3 - version: 2.3.3(@types/node@22.10.5)(typescript@5.7.2) + version: 2.3.3(@types/node@22.10.5)(typescript@5.7.3) '@vitejs/plugin-react': specifier: ^4.3.4 version: 4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) @@ -60,7 +60,7 @@ importers: version: 3.4.2 semantic-release: specifier: ^24.2.1 - version: 24.2.1(typescript@5.7.2) + version: 24.2.1(typescript@5.7.3) testcontainers: specifier: ^10.16.0 version: 10.16.0 @@ -68,11 +68,11 @@ importers: specifier: ^2.3.3 version: 2.3.3 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) @@ -171,7 +171,7 @@ importers: version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) '@t3-oss/env-nextjs': specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.2)(zod@3.24.1) + version: 0.11.1(typescript@5.7.3)(zod@3.24.1) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -186,16 +186,16 @@ importers: version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.688(typescript@5.7.2) + version: 11.0.0-rc.688(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -303,8 +303,8 @@ importers: specifier: ^3.4.2 version: 3.4.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 apps/tasks: dependencies: @@ -391,8 +391,8 @@ importers: specifier: 4.19.2 version: 4.19.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 apps/websocket: dependencies: @@ -449,8 +449,8 @@ importers: specifier: ^3.4.2 version: 3.4.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/analytics: dependencies: @@ -483,8 +483,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/api: dependencies: @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) + version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.688(typescript@5.7.2) + version: 11.0.0-rc.688(typescript@5.7.3) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.1 - version: 2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -589,8 +589,8 @@ importers: specifier: ^3.4.2 version: 3.4.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/auth: dependencies: @@ -617,7 +617,7 @@ importers: version: link:../validation '@t3-oss/env-nextjs': specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.2)(zod@3.24.1) + version: 0.11.1(typescript@5.7.3)(zod@3.24.1) bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -662,8 +662,8 @@ importers: specifier: ^3.4.2 version: 3.4.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/cli: dependencies: @@ -696,8 +696,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/common: dependencies: @@ -730,8 +730,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/cron-job-runner: dependencies: @@ -758,8 +758,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/cron-job-status: dependencies: @@ -780,8 +780,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/cron-jobs: dependencies: @@ -853,8 +853,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/cron-jobs-core: dependencies: @@ -881,8 +881,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/db: dependencies: @@ -906,7 +906,7 @@ importers: version: 2.2.2 '@t3-oss/env-nextjs': specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.2)(zod@3.24.1) + version: 0.11.1(typescript@5.7.3)(zod@3.24.1) '@testcontainers/mysql': specifier: ^10.16.0 version: 10.16.0 @@ -954,8 +954,8 @@ importers: specifier: 4.19.2 version: 4.19.2 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/definitions: dependencies: @@ -976,8 +976,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/form: dependencies: @@ -1007,8 +1007,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/icons: dependencies: @@ -1035,8 +1035,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/integrations: dependencies: @@ -1093,8 +1093,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/log: dependencies: @@ -1121,8 +1121,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/modals: dependencies: @@ -1155,8 +1155,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/modals-collection: dependencies: @@ -1222,8 +1222,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/notifications: dependencies: @@ -1250,8 +1250,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/old-import: dependencies: @@ -1332,8 +1332,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/old-schema: dependencies: @@ -1357,8 +1357,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/ping: dependencies: @@ -1382,8 +1382,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/redis: dependencies: @@ -1419,8 +1419,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/request-handler: dependencies: @@ -1468,8 +1468,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/server-settings: dependencies: @@ -1493,8 +1493,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/spotlight: dependencies: @@ -1566,8 +1566,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/translation: dependencies: @@ -1612,8 +1612,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/ui: dependencies: @@ -1673,8 +1673,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/validation: dependencies: @@ -1704,8 +1704,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 packages/widgets: dependencies: @@ -1852,8 +1852,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 tooling/eslint: dependencies: @@ -1868,7 +1868,7 @@ importers: version: 2.3.3(eslint@9.17.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0) + version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.17.0) @@ -1880,7 +1880,7 @@ importers: version: 5.1.0(eslint@9.17.0) typescript-eslint: specifier: ^8.19.1 - version: 8.19.1(eslint@9.17.0)(typescript@5.7.2) + version: 8.19.1(eslint@9.17.0)(typescript@5.7.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -1892,8 +1892,8 @@ importers: specifier: ^9.17.0 version: 9.17.0 typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 tooling/github: {} @@ -1913,8 +1913,8 @@ importers: specifier: ^2.5.6 version: 2.5.6(prettier@3.4.2) typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.7.3 + version: 5.7.3 tooling/typescript: {} @@ -9208,8 +9208,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} engines: {node: '>=14.17'} hasBin: true @@ -11253,15 +11253,15 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/changelog@6.0.3(semantic-release@24.2.1(typescript@5.7.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.2.0 lodash: 4.17.21 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.1(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -11271,7 +11271,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -11279,7 +11279,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/git@10.0.1(semantic-release@24.2.1(typescript@5.7.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -11289,11 +11289,11 @@ snapshots: lodash: 4.17.21 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@11.0.1(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/github@11.0.1(semantic-release@24.2.1(typescript@5.7.3))': dependencies: '@octokit/core': 6.1.2 '@octokit/plugin-paginate-rest': 11.3.6(@octokit/core@6.1.2) @@ -11310,12 +11310,12 @@ snapshots: lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@12.0.1(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/npm@12.0.1(semantic-release@24.2.1(typescript@5.7.3))': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 @@ -11328,11 +11328,11 @@ snapshots: rc: 1.2.8 read-pkg: 9.0.1 registry-auth-token: 5.0.2 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) semver: 7.6.3 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.1(typescript@5.7.2))': + '@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.1(typescript@5.7.3))': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 @@ -11344,7 +11344,7 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 24.2.1(typescript@5.7.2) + semantic-release: 24.2.1(typescript@5.7.3) transitivePeerDependencies: - supports-color @@ -11694,18 +11694,18 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.11.1(typescript@5.7.2)(zod@3.24.1)': + '@t3-oss/env-core@0.11.1(typescript@5.7.3)(zod@3.24.1)': dependencies: zod: 3.24.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 - '@t3-oss/env-nextjs@0.11.1(typescript@5.7.2)(zod@3.24.1)': + '@t3-oss/env-nextjs@0.11.1(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@t3-oss/env-core': 0.11.1(typescript@5.7.2)(zod@3.24.1) + '@t3-oss/env-core': 0.11.1(typescript@5.7.3)(zod@3.24.1) zod: 3.24.1 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 '@tabler/icons-react@3.28.1(react@19.0.0)': dependencies: @@ -11970,35 +11970,35 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2)': + '@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) - typescript: 5.7.2 + '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) + typescript: 5.7.3 - '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - typescript: 5.7.2 + typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2) + '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)': + '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(typescript@5.7.2) - '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) + '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - typescript: 5.7.2 + typescript: 5.7.3 - '@trpc/server@11.0.0-rc.688(typescript@5.7.2)': + '@trpc/server@11.0.0-rc.688(typescript@5.7.3)': dependencies: - typescript: 5.7.2 + typescript: 5.7.3 '@tsconfig/node10@1.0.11': {} @@ -12010,7 +12010,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.3(@types/node@22.10.5)(typescript@5.7.2)': + '@turbo/gen@2.3.3(@types/node@22.10.5)(typescript@5.7.3)': dependencies: '@turbo/workspaces': 2.3.3 commander: 10.0.1 @@ -12020,7 +12020,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.10.5)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@22.10.5)(typescript@5.7.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -12261,32 +12261,32 @@ snapshots: dependencies: '@types/node': 22.10.5 - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 eslint: 9.17.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12295,20 +12295,20 @@ snapshots: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0)(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) debug: 4.4.0 eslint: 9.17.0 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.19.1': {} - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 @@ -12317,19 +12317,19 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.1(eslint@9.17.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.19.1(eslint@9.17.0)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) eslint: 9.17.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -13280,14 +13280,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.7.2): + cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 cpu-features@0.0.10: dependencies: @@ -13995,17 +13995,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14016,7 +14016,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14028,7 +14028,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -16829,15 +16829,15 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - semantic-release@24.2.1(typescript@5.7.2): + semantic-release@24.2.1(typescript@5.7.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.1(typescript@5.7.2)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.1(typescript@5.7.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 11.0.1(semantic-release@24.2.1(typescript@5.7.2)) - '@semantic-release/npm': 12.0.1(semantic-release@24.2.1(typescript@5.7.2)) - '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.1(typescript@5.7.2)) + '@semantic-release/github': 11.0.1(semantic-release@24.2.1(typescript@5.7.3)) + '@semantic-release/npm': 12.0.1(semantic-release@24.2.1(typescript@5.7.3)) + '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.1(typescript@5.7.3)) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(typescript@5.7.2) + cosmiconfig: 9.0.0(typescript@5.7.3) debug: 4.4.0 env-ci: 11.1.0 execa: 9.5.2 @@ -17616,9 +17616,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.2))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.688(typescript@5.7.2) + '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 @@ -17627,13 +17627,13 @@ snapshots: optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 - ts-api-utils@2.0.0(typescript@5.7.2): + ts-api-utils@2.0.0(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.10.5)(typescript@5.7.2): + ts-node@10.9.2(@types/node@22.10.5)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -17647,15 +17647,15 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.2 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 ts-toolbelt@9.6.0: {} - tsconfck@3.1.3(typescript@5.7.2): + tsconfck@3.1.3(typescript@5.7.3): optionalDependencies: - typescript: 5.7.2 + typescript: 5.7.3 tsconfig-paths@3.15.0: dependencies: @@ -17804,17 +17804,17 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.19.1(eslint@9.17.0)(typescript@5.7.2): + typescript-eslint@8.19.1(eslint@9.17.0)(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) eslint: 9.17.0 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - typescript@5.7.2: {} + typescript@5.7.3: {} uc.micro@2.1.0: {} @@ -18052,11 +18052,11 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 - tsconfck: 3.1.3(typescript@5.7.2) + tsconfck: 3.1.3(typescript@5.7.3) optionalDependencies: vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 0331d87ad..38f739bcb 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -30,6 +30,6 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.17.0", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 1f384f858..e6ce38088 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -16,6 +16,6 @@ "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", "prettier-plugin-packagejson": "^2.5.6", - "typescript": "^5.7.2" + "typescript": "^5.7.3" } } From bfe5e9a8e13f9664f4d691bf2b695ecbe9d0fbd2 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 20:18:06 +0000 Subject: [PATCH 199/262] chore(deps): update dependency @types/react to v19.0.4 (#1899) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 166 +++++++++++++++++++-------------------- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index db14974ac..1892b9adc 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -84,7 +84,7 @@ "@types/chroma-js": "3.1.0", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.3", + "@types/react": "19.0.4", "@types/react-dom": "19.0.2", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cdfc7fb8..fc399c310 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,19 +153,19 @@ importers: version: 7.15.3(chroma-js@3.1.2) '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/modals': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -225,10 +225,10 @@ importers: version: 11.0.0 jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.3)(react@19.0.0) + version: 2.11.0(@types/react@19.0.4)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -258,7 +258,7 @@ importers: version: 2.2.2 swagger-ui-react: specifier: ^5.18.2 - version: 5.18.2(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.18.2(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -282,11 +282,11 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.3 - version: 19.0.3 + specifier: 19.0.4 + version: 19.0.4 '@types/react-dom': specifier: 19.0.2 - version: 19.0.2(@types/react@19.0.3) + version: 19.0.2(@types/react@19.0.4) '@types/swagger-ui-react': specifier: ^4.18.3 version: 4.18.3 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -1134,7 +1134,7 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1192,7 +1192,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1232,7 +1232,7 @@ importers: version: link:../ui '@mantine/notifications': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1290,7 +1290,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1527,19 +1527,19 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/spotlight': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.3)(react@19.0.0) + version: 2.11.0(@types/react@19.0.4)(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1634,10 +1634,10 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1646,7 +1646,7 @@ importers: version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1762,7 +1762,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -4303,8 +4303,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.3': - resolution: {integrity: sha512-UavfHguIjnnuq9O67uXfgy/h3SRJbidAYvNjLceB+2RIKVRBzVsh0QO+Pw6BCSQqFS9xwzKfwstXx0m6AbAREA==} + '@types/react@19.0.4': + resolution: {integrity: sha512-3O4QisJDYr1uTUMZHA2YswiQZRq+Pd8D+GdVFYikTutYsTz+QZgWkAPnP7rx9txoI6EXKcPiluMqWPFV3tT9Wg==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -10682,7 +10682,7 @@ snapshots: dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) @@ -10690,24 +10690,24 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.3)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.3)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.4)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.4)(react@19.0.0) type-fest: 4.30.2 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10723,25 +10723,25 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 @@ -10751,9 +10751,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tiptap/extension-link': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) '@tiptap/react': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12199,11 +12199,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.2(@types/react@19.0.3)': + '@types/react-dom@19.0.2(@types/react@19.0.4)': dependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 - '@types/react@19.0.3': + '@types/react@19.0.4': dependencies: csstype: 3.1.3 @@ -12235,7 +12235,7 @@ snapshots: '@types/swagger-ui-react@4.18.3': dependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 '@types/through@0.0.33': dependencies: @@ -13574,18 +13574,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - '@types/react': 19.0.3 + '@types/react': 19.0.4 better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.3)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: @@ -15153,9 +15153,9 @@ snapshots: jose@5.9.6: {} - jotai@2.11.0(@types/react@19.0.3)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.4)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 react: 19.0.0 js-base64@3.7.7: @@ -15405,10 +15405,10 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16443,35 +16443,35 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.1.2(@types/react@19.0.3)(react@19.0.0)(redux@5.0.1): + react-redux@9.1.2(@types/react@19.0.4)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 redux: 5.0.1 react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.0.3)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.4)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.3)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.4)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 - react-remove-scroll@2.6.2(@types/react@19.0.3)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.4)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.3)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.3)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.4)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.4)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.3)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.3)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.4)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.4)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 react-scan@0.0.31: dependencies: @@ -16486,22 +16486,22 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@19.0.3)(react@19.0.0): + react-style-singleton@2.2.1(@types/react@19.0.4)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 - react-style-singleton@2.2.3(@types/react@19.0.3)(react@19.0.0): + react-style-singleton@2.2.3(@types/react@19.0.4)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 react-syntax-highlighter@15.5.0(react@19.0.0): dependencies: @@ -16512,12 +16512,12 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@19.0.3)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.4)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.3)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.4)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17348,7 +17348,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.18.2(@types/react@19.0.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.18.2(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.25.6 '@braintree/sanitize-url': 7.0.4 @@ -17373,7 +17373,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.1.2(@types/react@19.0.3)(react@19.0.0)(redux@5.0.1) + react-redux: 9.1.2(@types/react@19.0.4)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.5.0(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -17941,12 +17941,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.0.3)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.4)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -17964,26 +17964,26 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.3)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.4)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 - use-latest@1.2.1(@types/react@19.0.3)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.4)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.3)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.4)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 - use-sidecar@1.1.2(@types/react@19.0.3)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.4)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.3 + '@types/react': 19.0.4 use-sync-external-store@1.2.2(react@19.0.0): dependencies: From 93d7d99e7081668cea1309f34e35c9860a046615 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 00:44:53 +0000 Subject: [PATCH 200/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cs.json | 234 +++++++++++++------------- packages/translation/src/lang/sk.json | 36 ++-- 2 files changed, 135 insertions(+), 135 deletions(-) diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index c6af4cb0e..8d4222466 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -65,7 +65,7 @@ }, "user": { "title": "Správce", - "subtitle": "", + "subtitle": "Zadejte přihlašovací údaje pro administrátora.", "notification": { "success": { "title": "Uživatel byl vytvořen", @@ -78,7 +78,7 @@ }, "group": { "title": "Externí skupina", - "subtitle": "", + "subtitle": "Zadejte skupinu, která by měla být použita pro externí uživatele.", "form": { "name": { "label": "Název skupiny", @@ -438,8 +438,8 @@ } }, "transfer": { - "label": "", - "description": "", + "label": "Převést vlastnictví", + "description": "Převést vlastnictví této skupiny na jiného uživatele.", "confirm": "Jste si jisti, že chcete převést vlastnictví skupiny {name} na {username}?", "notification": { "success": { @@ -451,19 +451,19 @@ } }, "addMember": { - "label": "" + "label": "Přidat člena" }, "removeMember": { - "label": "", + "label": "Odebrat člena", "confirm": "Jste si jisti, že chcete odstranit {user} z této skupiny?" }, "delete": { - "label": "", - "description": "", + "label": "Vymazat skupinu", + "description": "Jakmile smažete skupinu, není možné se vrátit zpět. Prosím, buďte si jistí.", "confirm": "Jste si jisti, že chcete odstranit skupinu {name}?", "notification": { "success": { - "message": "" + "message": "Skupina {name} byla úspěšně smazána" }, "error": { "message": "Nelze odstranit skupinu {name}" @@ -473,19 +473,19 @@ "changePermissions": { "notification": { "success": { - "title": "", - "message": "" + "title": "Oprávnění byla uložena", + "message": "Oprávnění byla úspěšně uložena" }, "error": { - "title": "", - "message": "" + "title": "Oprávnění nebyla uložena", + "message": "Oprávnění nebyla uložena" } } }, "update": { "notification": { "success": { - "message": "" + "message": "Skupina {name} byla úspěšně uložena" }, "error": { "message": "Nelze uložit skupinu {name}" @@ -493,8 +493,8 @@ } }, "select": { - "label": "", - "notFound": "" + "label": "Vyberte skupinu", + "notFound": "Nebyla nalezena žádná skupina" } } }, @@ -665,19 +665,19 @@ }, "unauthorized": { "title": "", - "message": "" + "message": "Pravděpodobně špatné přihlašovací údaje" }, "forbidden": { - "title": "", - "message": "" + "title": "Zakázáno", + "message": "Pravděpodobně chybějící oprávnění" }, "notFound": { "title": "", - "message": "" + "message": "Pravděpodobně špatná adresa URL nebo cesta" }, "internalServerError": { - "title": "", - "message": "" + "title": "Interní chyba serveru", + "message": "Server zaznamenal chybu" }, "serviceUnavailable": { "title": "", @@ -701,7 +701,7 @@ }, "wrongPath": { "title": "", - "message": "" + "message": "Cesta pravděpodobně není správná" } } }, @@ -922,29 +922,29 @@ } }, "action": { - "create": "", - "edit": "", - "remove": "", + "create": "Nová kategorie", + "edit": "Přejmenovat kategorii", + "remove": "Odstranit kategorii", "moveUp": "Posunout nahoru", "moveDown": "Posunout dolů", - "createAbove": "", - "createBelow": "" + "createAbove": "Nová kategorie nad", + "createBelow": "Nová kategorie pod" }, "create": { - "title": "", - "submit": "" + "title": "Nová kategorie", + "submit": "Přidat kategorii" }, "remove": { - "title": "", + "title": "Odstranit kategorii", "message": "Jste si jisti, že chcete odstranit kategorii {name}?" }, "edit": { - "title": "", - "submit": "" + "title": "Přejmenovat kategorii", + "submit": "Přejmenovat kategorii" }, "menu": { "label": { - "create": "", + "create": "Nová kategorie", "changePosition": "Změnit pozici" } } @@ -954,10 +954,10 @@ "action": { "create": "", "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "edit": "Upravit položku", + "moveResize": "Přesunout / změnit velikost položky", + "duplicate": "Duplikovat položku", + "remove": "Odstranit položku" }, "menu": { "label": { @@ -988,7 +988,7 @@ "edit": { "title": "", "advancedOptions": { - "label": "", + "label": "Pokročilé možnosti", "title": "" }, "field": { @@ -1323,7 +1323,7 @@ "releaseType": { "label": "Typ vydání filmu pro Radarr", "options": { - "inCinemas": "", + "inCinemas": "V kinech", "digitalRelease": "", "physicalRelease": "" } @@ -1341,24 +1341,24 @@ "description": "Zobrazuje aktuální informace o počasí na nastaveném místě.", "option": { "isFormatFahrenheit": { - "label": "" + "label": "Teplota ve Fahrenheitech" }, "location": { "label": "Lokalita pro počasí" }, "showCity": { - "label": "" + "label": "Zobrazit město" }, "hasForecast": { "label": "Zobrazit předpověď" }, "forecastDayCount": { "label": "", - "description": "" + "description": "Když widget není dostatečně široký, zobrazí se méně dní" }, "dateFormat": { - "label": "", - "description": "" + "label": "Formát data", + "description": "Jak by datum mělo vypadat" } }, "kind": { @@ -1380,16 +1380,16 @@ }, "indexerManager": { "name": "Stav správce indexeru", - "description": "", + "description": "Stav Vašich indexerů", "option": { "openIndexerSiteInNewTab": { - "label": "" + "label": "Otevřít stránku indexeru v nové kartě" } }, "title": "Správce indexeru", "testAll": "Otestovat vše", "error": { - "internalServerError": "" + "internalServerError": "Nepodařilo se načíst stav indexerů" } }, "healthMonitoring": { @@ -1524,7 +1524,7 @@ "label": "" }, "categoryFilter": { - "label": "" + "label": "Kategorie/štítky k filtrování" }, "filterIsWhitelist": { "label": "" @@ -1546,8 +1546,8 @@ "detailsTitle": "Datum přidání" }, "category": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Doplňky", + "detailsTitle": "Kategorie (nebo další informace)" }, "downSpeed": { "columnTitle": "Stahování", @@ -1678,7 +1678,7 @@ }, "users": { "main": "Top uživatelé", - "requests": "" + "requests": "Žádosti" } } }, @@ -1860,19 +1860,19 @@ }, "field": { "pageTitle": { - "label": "" + "label": "Nadpis strany" }, "metaTitle": { "label": "" }, "logoImageUrl": { - "label": "" + "label": "URL adresa loga" }, "faviconImageUrl": { - "label": "" + "label": "URL obrázku Favicon" }, "backgroundImageUrl": { - "label": "" + "label": "Adresa URL obrázku na pozadí" }, "backgroundImageAttachment": { "label": "Příloha obrázku na pozadí", @@ -1891,8 +1891,8 @@ "label": "", "option": { "repeat": { - "label": "", - "description": "" + "label": "Opakovat", + "description": "Obrázek se opakuje tak často, jak je potřeba, aby pokryl celou oblast obrazu na pozadí." }, "no-repeat": { "label": "", @@ -1982,7 +1982,7 @@ "label": "" }, "full": { - "label": "" + "label": "Plný přístup" } } } @@ -2050,12 +2050,12 @@ "admin": { "description": "", "link": "", - "notice": "" + "notice": "Chcete-li tuto stránku schovat pro všechny uživatele, nastavte domovskou plochu pro server" }, "user": { - "description": "", - "link": "", - "notice": "" + "description": "Zatím jste nenastavili domovskou plochu.", + "link": "Nastavit Vaší domovskou plochu", + "notice": "Chcete-li tuto stránku schovat, nastavte si domovskou plochu ve vašich preferencích" }, "anonymous": { "description": "", @@ -2068,9 +2068,9 @@ "management": { "metaTitle": "", "title": { - "morning": "", - "afternoon": "", - "evening": "" + "morning": "Dobré ráno, {username}", + "afternoon": "Dobré odpoledne, {username}", + "evening": "Dobrý večer, {username}" }, "notFound": { "title": "", @@ -2089,7 +2089,7 @@ "items": { "manage": "Spravovat", "invites": "Pozvánky", - "groups": "" + "groups": "Skupiny" } }, "tools": { @@ -2122,7 +2122,7 @@ "invite": "Pozvánky", "integration": "", "app": "Aplikace", - "group": "" + "group": "Skupiny" }, "statisticLabel": { "boards": "Plochy", @@ -2179,15 +2179,15 @@ "includeFromAllUsers": "" }, "user": { - "back": "", - "fieldsDisabledExternalProvider": "", + "back": "Zpět na uživatele", + "fieldsDisabledExternalProvider": "Některá pole jsou vypnuta, protože jsou spravována externím poskytovatelem ověřování.", "setting": { "general": { "title": "Obecné", "item": { "language": "Jazyk & oblast", - "board": "", - "defaultSearchEngine": "", + "board": "Domovská plocha", + "defaultSearchEngine": "Výchozí vyhledávač", "firstDayOfWeek": "První den v týdnu", "accessibility": "Přístupnost" } @@ -2204,50 +2204,50 @@ "title": "Uživatelé" }, "edit": { - "metaTitle": "" + "metaTitle": "Upravit uživatele {username}" }, "create": { "metaTitle": "Vytvořit uživatele", - "title": "", + "title": "Vytvořit nového uživatele", "step": { "personalInformation": { - "label": "" + "label": "Osobní údaje" }, "security": { "label": "Bezpečnost" }, "groups": { - "label": "", - "title": "", - "description": "" + "label": "Skupiny", + "title": "Vyberte všechny skupiny, jejichž členem by měl uživatel být", + "description": "Skupina {everyoneGroup} je přiřazena všem uživatelům a nemůže být odstraněna." }, "review": { "label": "" }, "completed": { - "title": "" + "title": "Uživatel byl vytvořen" }, "error": { - "title": "" + "title": "Vytvoření uživatele se nezdařilo" } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "Vytvořit nového uživatele", + "back": "Zpět na seznam uživatelů" } }, "invite": { "title": "Správa pozvánek uživatelů", "action": { "new": { - "title": "", + "title": "Nová pozvánka", "description": "Po vypršení platnosti pozvánka přestane být platná a příjemce pozvánky si nebude moci vytvořit účet." }, "copy": { - "title": "", - "description": "", + "title": "Zkopírovat pozvánku", + "description": "Vaše pozvánka byla vygenerována. Po zavření tohoto okna již nebude možné tento odkaz zkopírovat. Pokud si již nepřejete uvedenou osobu pozvat, můžete tuto pozvánku kdykoli smazat.", "link": "Odkaz na pozvánku", - "button": "" + "button": "Zkopírovat a zavřít" }, "delete": { "title": "Odstranit pozvánku", @@ -2265,29 +2265,29 @@ "label": "Datum konce platnosti" }, "token": { - "label": "" + "label": "Token" } } } }, "group": { - "back": "", + "back": "Zpět na skupiny", "setting": { "general": { "title": "Obecné", "owner": "Vlastník", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "ownerOfGroup": "Vlastník této skupiny", + "ownerOfGroupDeleted": "Vlastník této skupiny byl odstraněn. V současné době nemá žádného vlastníka." }, "members": { - "title": "", - "search": "", - "notFound": "" + "title": "Členové", + "search": "Najít člena", + "notFound": "Žádný člen nebyl nenalezen" }, "permissions": { - "title": "", + "title": "Oprávnění", "form": { - "unsavedChanges": "" + "unsavedChanges": "Máte neuložené změny!" } } } @@ -2318,7 +2318,7 @@ "text": "" }, "usersData": { - "title": "", + "title": "Uživatelská data", "text": "" } }, @@ -2417,7 +2417,7 @@ "label": "" }, "indexerManager": { - "label": "" + "label": "Správce indexeru" }, "healthMonitoring": { "label": "" @@ -2603,32 +2603,32 @@ } }, "permission": { - "title": "", + "title": "Oprávnění", "userSelect": { - "title": "" + "title": "Přidat oprávnění uživatele" }, "groupSelect": { - "title": "" + "title": "Přidat oprávnění ke skupině" }, "tab": { "user": "Uživatelé", - "group": "", - "inherited": "" + "group": "Skupiny", + "inherited": "Zděděné skupiny" }, "field": { "user": { "label": "Uživatel" }, "group": { - "label": "" + "label": "Skupina" }, "permission": { - "label": "" + "label": "Oprávnění" } }, "action": { - "saveUser": "", - "saveGroup": "" + "saveUser": "Uložit oprávnění uživatele", + "saveGroup": "Uložit oprávnění skupiny" } }, "navigationStructure": { @@ -2676,7 +2676,7 @@ "security": "Bezpečnost", "board": "Plochy", "groups": { - "label": "" + "label": "Skupiny" }, "invites": { "label": "Pozvánky" @@ -2771,7 +2771,7 @@ } }, "newBoard": { - "label": "" + "label": "Vytvořit novou plochu" }, "importBoard": { "label": "" @@ -2788,7 +2788,7 @@ } }, "newUser": { - "label": "" + "label": "Vytvořit nového uživatele" }, "newInvite": { "label": "" @@ -2956,37 +2956,37 @@ } }, "userGroup": { - "help": "", + "help": "Hledat uživatele nebo skupiny", "group": { "user": { "title": "Uživatelé", "children": { "action": { "detail": { - "label": "" + "label": "Zobrazit detaily uživatele" } }, "detail": { - "title": "" + "title": "Vyberte akci pro uživatele" } } }, "group": { - "title": "", + "title": "Skupiny", "children": { "action": { "detail": { - "label": "" + "label": "Zobrazit detaily skupiny" }, "manageMember": { - "label": "" + "label": "Spravovat členy" }, "managePermission": { - "label": "" + "label": "Spravovat oprávnění" } }, "detail": { - "title": "" + "title": "Vyberte akci pro uživatele" } } } diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index c5a23d460..827c328a5 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -213,10 +213,10 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Predvolený vyhľadávací nástroj sa úspešne zmenil" }, "error": { - "message": "" + "message": "Nie je možné zmeniť predvolený vyhľadávací nástroj" } } }, @@ -2187,7 +2187,7 @@ "item": { "language": "Jazyk a región", "board": "Domáca doska", - "defaultSearchEngine": "", + "defaultSearchEngine": "Predvolený vyhľadávací nástroj", "firstDayOfWeek": "Prvý deň v týždni", "accessibility": "Prístupnosť" } @@ -2350,10 +2350,10 @@ } }, "search": { - "title": "", + "title": "Hladať", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "Predvolený vyhľadávací nástroj", + "description": "Integračné vyhľadávače tu nie je možné vybrať" } }, "appearance": { @@ -2582,19 +2582,19 @@ } }, "addToHomarr": { - "label": "", + "label": "Pridať do Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "Pridané do Homarr", + "message": "Vybrané aplikácie boli pridané do Homarr" }, "error": { - "title": "", - "message": "" + "title": "Nepodarilo sa pridať do Homarr", + "message": "Vybrané aplikácie nebolo možné pridať do Homarr" } }, "modal": { - "title": "" + "title": "Pridajte docker kontajner/y do Homarr" } } }, @@ -2872,20 +2872,20 @@ "home": { "group": { "search": { - "title": "", + "title": "Hladať", "option": { "other": { - "label": "" + "label": "Hľadajte pomocou iného vyhľadávača" }, "no-default": { - "label": "", - "description": "" + "label": "Žiadny predvolený vyhľadávací nástroj", + "description": "Nastavte predvolený vyhľadávací nástroj v preferenciách" }, "search": { - "label": "" + "label": "Hľadať '{query}' s {name}" }, "from-integration": { - "description": "" + "description": "Ak chcete hľadať, začnite písať" } } }, From b034dcbb11017a016e30db0e2bf8c1a0765174ca Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:16:57 +0000 Subject: [PATCH 201/262] fix(deps): update dependency undici to v7.2.1 (#1904) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 60f2aa31e..1ef0e5267 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -38,7 +38,7 @@ "dayjs": "^1.11.13", "dotenv": "^16.4.7", "superjson": "2.2.2", - "undici": "7.2.0" + "undici": "7.2.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc399c310..8868d9bba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -363,8 +363,8 @@ importers: specifier: 2.2.2 version: 2.2.2 undici: - specifier: 7.2.0 - version: 7.2.0 + specifier: 7.2.1 + version: 7.2.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -9248,8 +9248,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@7.2.0: - resolution: {integrity: sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==} + undici@7.2.1: + resolution: {integrity: sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==} engines: {node: '>=20.18.1'} unenv@1.10.0: @@ -17849,7 +17849,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@7.2.0: {} + undici@7.2.1: {} unenv@1.10.0: dependencies: From 86a925939cb8ef92fe0bca5a762e688887916b04 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:34:35 +0000 Subject: [PATCH 202/262] fix(deps): update dependency mantine-react-table to v2.0.0-beta.8 (#1902) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 42 +++++++++++++++---------------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 1892b9adc..dd7508086 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -64,7 +64,7 @@ "flag-icons": "^7.2.3", "glob": "^11.0.0", "jotai": "^2.11.0", - "mantine-react-table": "2.0.0-beta.7", + "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", "postcss-preset-mantine": "^1.17.0", "prismjs": "^1.29.0", diff --git a/packages/translation/package.json b/packages/translation/package.json index 3d060fcb8..3217e0e3b 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -31,7 +31,7 @@ "@homarr/definitions": "workspace:^0.1.0", "dayjs": "^1.11.13", "deepmerge": "4.3.1", - "mantine-react-table": "2.0.0-beta.7", + "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", "next-intl": "3.26.3", "react": "19.0.0", diff --git a/packages/ui/package.json b/packages/ui/package.json index 33856f0df..9e2b87db8 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -33,7 +33,7 @@ "@mantine/dates": "^7.15.3", "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.28.1", - "mantine-react-table": "2.0.0-beta.7", + "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 574baff40..652bb8aa8 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -61,7 +61,7 @@ "@tiptap/starter-kit": "^2.11.0", "clsx": "^2.1.1", "dayjs": "^1.11.13", - "mantine-react-table": "2.0.0-beta.7", + "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", "react": "19.0.0", "react-dom": "19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8868d9bba..e1c9e98cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -227,8 +227,8 @@ importers: specifier: ^2.11.0 version: 2.11.0(@types/react@19.0.4)(react@19.0.0) mantine-react-table: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 2.0.0-beta.8 + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1584,8 +1584,8 @@ importers: specifier: 4.3.1 version: 4.3.1 mantine-react-table: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 2.0.0-beta.8 + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1645,8 +1645,8 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) mantine-react-table: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 2.0.0-beta.8 + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1821,8 +1821,8 @@ importers: specifier: ^1.11.13 version: 1.11.13 mantine-react-table: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 2.0.0-beta.8 + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -3891,18 +3891,18 @@ packages: react: '>=16.8' react-dom: '>=16.8' - '@tanstack/react-virtual@3.10.8': - resolution: {integrity: sha512-VbzbVGSsZlQktyLrP5nxE+vE1ZR+U0NFAWPbJLoG2+DKPwd2D7dVICTVIIaYlJqX1ZCEnYDbaOpmMwbsyhBoIA==} + '@tanstack/react-virtual@3.11.2': + resolution: {integrity: sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 '@tanstack/table-core@8.20.5': resolution: {integrity: sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==} engines: {node: '>=12'} - '@tanstack/virtual-core@3.10.8': - resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + '@tanstack/virtual-core@3.11.2': + resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} '@testcontainers/mysql@10.16.0': resolution: {integrity: sha512-GyxWqKfpY13lUrTEBmkKrAXyN7RZ//ntMdY/5Eyo/SukDM9LNGu3j5aNuDTGlYr4AEMJuzJ8CHxqUDAFGnCB/w==} @@ -7058,8 +7058,8 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - mantine-react-table@2.0.0-beta.7: - resolution: {integrity: sha512-jpM3hXLL+DHURmm1AJ2uOyxu3xiZvlzS7NOtDh5qHo2AIv9zEEkXK/mrvKmRvXJ0O8pVPHLuYKAel9RBY5NfUA==} + mantine-react-table@2.0.0-beta.8: + resolution: {integrity: sha512-3Ey0jbLtqcN89n24kDRiOeYwhR5zcfHzzCz7KOip5fXvvrtn6N7vj+Fw2jYFFbPQr7TLzBviSSQkPcVyQbs+/w==} engines: {node: '>=16'} peerDependencies: '@mantine/core': ^7.9 @@ -11745,15 +11745,15 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@tanstack/react-virtual@3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-virtual@3.11.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tanstack/virtual-core': 3.10.8 + '@tanstack/virtual-core': 3.11.2 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) '@tanstack/table-core@8.20.5': {} - '@tanstack/virtual-core@3.10.8': {} + '@tanstack/virtual-core@3.11.2': {} '@testcontainers/mysql@10.16.0': dependencies: @@ -15405,7 +15405,7 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.7(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -15413,7 +15413,7 @@ snapshots: '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/react-virtual': 3.10.8(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/react-virtual': 3.11.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 From 8edf922e3050ba9d8c951180ae68f628067c190e Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:43:55 +0000 Subject: [PATCH 203/262] fix(deps): update dependency trpc-to-openapi to ^2.1.2 (#1900) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/api/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index 1a994e3c0..70e50144a 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -47,7 +47,7 @@ "react": "19.0.0", "react-dom": "19.0.0", "superjson": "2.2.2", - "trpc-to-openapi": "^2.1.1" + "trpc-to-openapi": "^2.1.2" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1c9e98cc..ff7510035 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -567,8 +567,8 @@ importers: specifier: 2.2.2 version: 2.2.2 trpc-to-openapi: - specifier: ^2.1.1 - version: 2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + specifier: ^2.1.2 + version: 2.1.2(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -9031,8 +9031,8 @@ packages: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - trpc-to-openapi@2.1.1: - resolution: {integrity: sha512-61VvDOSLHk7+vZnjswvD4yPThvCo+4ymZ2NbOqYQPbkbr5qRyyfVPdBV5YaJCUcCsIzxxgjq46DELxKYXlM6uA==} + trpc-to-openapi@2.1.2: + resolution: {integrity: sha512-v6GmrXchDdHUGtPz0foviSYZBkNQePmZF4fvnw8TPhdyDFdiMpVHbkz8QNIWVeqPOG6qKAyCVAvXTO+14/dHWw==} peerDependencies: '@trpc/server': ^11.0.0-rc.648 zod: ^3.23.8 @@ -17616,7 +17616,7 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.1(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) co-body: 6.2.0 From ec8ad483caf1c3e34994c1e42504633d19767240 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 23:59:35 +0100 Subject: [PATCH 204/262] chore(deps): update dependency jsdom to v26 (#1903) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 164 +++++++++++++++++++++++++++++++++++++------------ 2 files changed, 125 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 335a9e143..1d2970fb8 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@vitest/ui": "^2.1.8", "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", - "jsdom": "^25.0.1", + "jsdom": "^26.0.0", "prettier": "^3.4.2", "semantic-release": "^24.2.1", "testcontainers": "^10.16.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff7510035..ab121f179 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,8 +53,8 @@ importers: specifier: ^7.0.3 version: 7.0.3 jsdom: - specifier: ^25.0.1 - version: 25.0.1 + specifier: ^26.0.0 + version: 26.0.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -75,7 +75,7 @@ importers: version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -1928,6 +1928,9 @@ packages: resolution: {integrity: sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==} hasBin: true + '@asamuzakjp/css-color@2.8.2': + resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@auth/core@0.37.2': resolution: {integrity: sha512-kUvzyvkcd6h1vpeMAojK2y7+PAV5H+0Cc9+ZlKYDFhDY31AlvsB+GW5vNO4qE3Y07KeQgvNO9U0QUx/fN62kBw==} peerDependencies: @@ -2082,6 +2085,34 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@csstools/color-helpers@5.0.1': + resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.1': + resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.7': + resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@ctrl/deluge@7.1.0': resolution: {integrity: sha512-A7MUxhVDpblfUloUYCtQTZJXWDUQ6V5oQnWvtNTDhzGjQU4vez2b0uQqzpywyrAkiBtdjWFgm61cESaivJGNXA==} engines: {node: '>=18'} @@ -4586,6 +4617,10 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -5267,8 +5302,8 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@4.1.0: - resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + cssstyle@4.2.1: + resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} engines: {node: '>=18'} csstype@3.1.3: @@ -6063,6 +6098,10 @@ packages: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -6379,6 +6418,10 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -6836,11 +6879,11 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@25.0.1: - resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} engines: {node: '>=18'} peerDependencies: - canvas: ^2.11.2 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true @@ -7027,6 +7070,10 @@ packages: resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} engines: {node: 20 || >=22} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7495,8 +7542,8 @@ packages: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. - nwsapi@2.2.12: - resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} oauth4webapi@3.0.0: resolution: {integrity: sha512-Rw9SxQYuQX9J41VgM4rVNGtm1ng0Qcd8ndv7JmhmwqQ3hHBokX+WjV379IJhKk7bVPHefgvrDgHoO/rB2dY7YA==} @@ -7703,8 +7750,8 @@ packages: parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} pascal-case@2.0.1: resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} @@ -8357,8 +8404,8 @@ packages: rrdom@0.1.7: resolution: {integrity: sha512-ZLd8f14z9pUy2Hk9y636cNv5Y2BMnNEY99wxzW9tD2BLDfe1xFxtLjB4q/xCBYo6HRe0wofzKzjm4JojmpBfFw==} - rrweb-cssom@0.7.1: - resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} rrweb-player@1.0.0-alpha.4: resolution: {integrity: sha512-Wlmn9GZ5Fdqa37vd3TzsYdLl/JWEvXNUrLCrYpnOwEgmY409HwVIvvA5aIo7k582LoKgdRCsB87N+f0oWAR0Kg==} @@ -9561,10 +9608,6 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} - whatwg-url@14.1.0: resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} engines: {node: '>=18'} @@ -9782,6 +9825,14 @@ snapshots: '@antfu/ni@0.21.12': {} + '@asamuzakjp/css-color@2.8.2': + dependencies: + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 11.0.2 + '@auth/core@0.37.2': dependencies: '@panva/hkdf': 1.2.1 @@ -9964,6 +10015,26 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@csstools/color-helpers@5.0.1': {} + + '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.1 + '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + '@ctrl/deluge@7.1.0': dependencies: '@ctrl/magnet-link': 4.0.2 @@ -12393,7 +12464,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12440,7 +12511,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.8': dependencies: @@ -12588,6 +12659,8 @@ snapshots: transitivePeerDependencies: - supports-color + agent-base@7.1.3: {} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -13342,9 +13415,10 @@ snapshots: cssesc@3.0.0: {} - cssstyle@4.1.0: + cssstyle@4.2.1: dependencies: - rrweb-cssom: 0.7.1 + '@asamuzakjp/css-color': 2.8.2 + rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -14340,6 +14414,12 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + format@0.2.2: {} from2@2.3.0: @@ -14711,6 +14791,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} human-signals@5.0.0: {} @@ -15171,19 +15258,19 @@ snapshots: jsbn@1.1.0: {} - jsdom@25.0.1: + jsdom@26.0.0: dependencies: - cssstyle: 4.1.0 + cssstyle: 4.2.1 data-urls: 5.0.0 decimal.js: 10.4.3 - form-data: 4.0.0 + form-data: 4.0.1 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.12 - parse5: 7.1.2 - rrweb-cssom: 0.7.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 5.0.0 @@ -15191,7 +15278,7 @@ snapshots: webidl-conversions: 7.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 + whatwg-url: 14.1.0 ws: 8.18.0 xml-name-validator: 5.0.0 transitivePeerDependencies: @@ -15371,6 +15458,8 @@ snapshots: lru-cache@11.0.1: {} + lru-cache@11.0.2: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -15741,7 +15830,7 @@ snapshots: gauge: 3.0.2 set-blocking: 2.0.0 - nwsapi@2.2.12: {} + nwsapi@2.2.16: {} oauth4webapi@3.0.0: {} @@ -15993,7 +16082,7 @@ snapshots: parse5@6.0.1: {} - parse5@7.1.2: + parse5@7.2.1: dependencies: entities: 4.5.0 @@ -16734,7 +16823,7 @@ snapshots: dependencies: rrweb-snapshot: 2.0.0-alpha.4 - rrweb-cssom@0.7.1: {} + rrweb-cssom@0.8.0: {} rrweb-player@1.0.0-alpha.4: dependencies: @@ -18075,7 +18164,7 @@ snapshots: sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@25.0.1)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) @@ -18100,7 +18189,7 @@ snapshots: optionalDependencies: '@types/node': 22.10.5 '@vitest/ui': 2.1.8(vitest@2.1.8) - jsdom: 25.0.1 + jsdom: 26.0.0 transitivePeerDependencies: - less - lightningcss @@ -18178,11 +18267,6 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@14.0.0: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-url@14.1.0: dependencies: tr46: 5.0.0 From dc3d27e1a1b1611c1997235bf51daf00e3d1f239 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 11:15:46 +0000 Subject: [PATCH 205/262] fix(deps): update tiptap monorepo to v2.11.1 (#1909) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 30 +- pnpm-lock.yaml | 498 +++++++++++++++++----------------- 2 files changed, 264 insertions(+), 264 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 652bb8aa8..e8b8c1482 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -44,21 +44,21 @@ "@mantine/core": "^7.15.3", "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.28.1", - "@tiptap/extension-color": "2.11.0", - "@tiptap/extension-highlight": "2.11.0", - "@tiptap/extension-image": "2.11.0", - "@tiptap/extension-link": "^2.11.0", - "@tiptap/extension-table": "2.11.0", - "@tiptap/extension-table-cell": "2.11.0", - "@tiptap/extension-table-header": "2.11.0", - "@tiptap/extension-table-row": "2.11.0", - "@tiptap/extension-task-item": "2.11.0", - "@tiptap/extension-task-list": "2.11.0", - "@tiptap/extension-text-align": "2.11.0", - "@tiptap/extension-text-style": "2.11.0", - "@tiptap/extension-underline": "2.11.0", - "@tiptap/react": "^2.11.0", - "@tiptap/starter-kit": "^2.11.0", + "@tiptap/extension-color": "2.11.1", + "@tiptap/extension-highlight": "2.11.1", + "@tiptap/extension-image": "2.11.1", + "@tiptap/extension-link": "^2.11.1", + "@tiptap/extension-table": "2.11.1", + "@tiptap/extension-table-cell": "2.11.1", + "@tiptap/extension-table-header": "2.11.1", + "@tiptap/extension-table-row": "2.11.1", + "@tiptap/extension-task-item": "2.11.1", + "@tiptap/extension-task-list": "2.11.1", + "@tiptap/extension-text-align": "2.11.1", + "@tiptap/extension-text-style": "2.11.1", + "@tiptap/extension-underline": "2.11.1", + "@tiptap/react": "^2.11.1", + "@tiptap/starter-kit": "^2.11.1", "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab121f179..232427fc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,7 +165,7 @@ importers: version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1))(@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -186,16 +186,16 @@ importers: version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.688(typescript@5.7.3) + version: 11.0.0-rc.693(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.688(typescript@5.7.3) + version: 11.0.0-rc.693(typescript@5.7.3) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1770,50 +1770,50 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) '@tiptap/extension-color': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/extension-text-style@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))) '@tiptap/extension-highlight': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-image': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-link': - specifier: ^2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) + specifier: ^2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) '@tiptap/extension-table': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) '@tiptap/extension-table-cell': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-table-header': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-table-row': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-task-item': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) '@tiptap/extension-task-list': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-text-align': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-text-style': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/extension-underline': - specifier: 2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + specifier: 2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) '@tiptap/react': - specifier: ^2.11.0 - version: 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^2.11.1 + version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tiptap/starter-kit': - specifier: ^2.11.0 - version: 2.11.0 + specifier: ^2.11.1 + version: 2.11.1 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -3938,217 +3938,217 @@ packages: '@testcontainers/mysql@10.16.0': resolution: {integrity: sha512-GyxWqKfpY13lUrTEBmkKrAXyN7RZ//ntMdY/5Eyo/SukDM9LNGu3j5aNuDTGlYr4AEMJuzJ8CHxqUDAFGnCB/w==} - '@tiptap/core@2.11.0': - resolution: {integrity: sha512-0S3AWx6E2QqwdQqb6z0/q6zq2u9lA9oL3BLyAaITGSC9zt8OwjloS2k1zN6wLa9hp2rO0c0vDnWsTPeFaEaMdw==} + '@tiptap/core@2.11.1': + resolution: {integrity: sha512-PM+rW7QnDna4oO1KOcrSHtJ83O4nVt55uG+MRxcjaGGz/jKdRuIellhG2VSPkiO/m5wLgpC7/kCBq8WvYbOu9g==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.11.0': - resolution: {integrity: sha512-DBjWbgmbAAR879WAsk0+5xxgqpOTweWNnY7kEqWv3EJtLUvECXN63smiv3o4fREwwbEJqgihBu5/YugRC5z1dg==} + '@tiptap/extension-blockquote@2.11.1': + resolution: {integrity: sha512-s/FkRAnyn/FXwx1vSibKAgycfR5OWNoBK/Xw4JLhQTvDzs0lylxa/nCjGNgXb/XVHs6a6zqGnUPBbMcqBpKFNg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.11.0': - resolution: {integrity: sha512-3x9BQZHYD5xFA0pCEneEMHZyIoxYo4NKcbhR4CLxGad1Xd+5g109nr1+eZ1JgvnChkeVf1eD6SaQE2A28lxR5g==} + '@tiptap/extension-bold@2.11.1': + resolution: {integrity: sha512-f4889tnVjAeuhyY5lwwbbL4IhUiwIA/fpdynEMaJUXy7SEGJJ3g5VpU3rOHuxU0T4dwuadThyE46fFc9qXEZzA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bubble-menu@2.11.0': - resolution: {integrity: sha512-21KyB7+QSQjw72Oxzs3Duw9WErAUrigFZCyoCZNjp24wP7mFVsy1jAcnRiAi8pBVwlwHBZ29IW1PeavqCSFFVA==} + '@tiptap/extension-bubble-menu@2.11.1': + resolution: {integrity: sha512-M0MMTi+K9R9GU96dGuaKXIcGOaO2XLLpW1mcejcH2AXATfM0m30AvrIxNEOVSmKtXiuNwFUmt1bfv09AhK+tLg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-bullet-list@2.11.0': - resolution: {integrity: sha512-UALypJvO+cPSk/nC1HhkX/ImS9FxbKe2Pr0iDofakvZU1U1msumLVn2M/iq+ax1Mm9thodpvJv0hGDtFRwm7lQ==} + '@tiptap/extension-bullet-list@2.11.1': + resolution: {integrity: sha512-xIHK3pT04bkdJHOL8ktjJFDfDjWnAiogmHcFXarzIzJfrsVKsnXNMSxUr35ZmRzxCY6keopDa5uI/MOYtABj+A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-code-block@2.11.0': - resolution: {integrity: sha512-8of3qTOLjpveHBrrk8KVliSUVd6R2i2TNrBj0f/21HcFVAy0fP++02p6vI6UPOhwM3+p3CprGdSM48DFCu1rqw==} + '@tiptap/extension-code-block@2.11.1': + resolution: {integrity: sha512-wo5Kes/5OqPocfZasLRlwiPCu+OOlXI5KocLeLR114aHusTyLduX6Y4M7Gaiw78RkRRjc+xtIu18XFSsiaiYJg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.11.0': - resolution: {integrity: sha512-2roNZxcny1bGjyZ8x6VmGTuKbwfJyTZ1hiqPc/CRTQ1u42yOhbjF4ziA5kfyUoQlzygZrWH9LR5IMYGzPQ1N3w==} + '@tiptap/extension-code@2.11.1': + resolution: {integrity: sha512-RhK5PDTUC05UM+Poflv+9FbJoYygm4eCXNoTQHL5UTcKBVrQh+IJtD7tNXquNUgJD3bO6CY9Qkna2HoPh1siLw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-color@2.11.0': - resolution: {integrity: sha512-9dO6zr7Zzz7vvJAct+IGHvYpV6pHcNyifLjmXNdJdKY118lnoeQfu1dsxiPGl9KXCv5bHgn4dUg3CsrnAlb9OQ==} + '@tiptap/extension-color@2.11.1': + resolution: {integrity: sha512-zc5J0jjEEYGCKWmu+tKE/m64n0121g2DU/IHRLKqbiVXtnZs1pV8isB0DzSPGgZCWfspfXua7R/YkIss1b5tPw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-document@2.11.0': - resolution: {integrity: sha512-9YI0AT3mxyUZD7NHECHyV1uAjQ8KwxOS5ACwvrK1MU8TqY084LmodYNTXPKwpqbr51yvt3qZq1R7UIVu4/22Cg==} + '@tiptap/extension-document@2.11.1': + resolution: {integrity: sha512-GSn0v65u1qAsa+4xPempbXCmUbM1GQh6II+N1aiwXJh0xCkZDydx7jJyj+2QaN7duMXznbM894BKUMgcoOlRSg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.11.0': - resolution: {integrity: sha512-p7tUtlz7KzBa+06+7W2LJ8AEiHG5chdnUIapojZ7SqQCrFRVw70R+orpkzkoictxNNHsun0A9FCUy4rz8L0+nQ==} + '@tiptap/extension-dropcursor@2.11.1': + resolution: {integrity: sha512-/TctJFSDxDMAjZQFpBY+YWt0fam0ZQjQ/KXJw44B3hRyXt7zxn09QTIEf3xFrooFGntLcjv/pqfvTVrJdpWTGA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-floating-menu@2.11.0': - resolution: {integrity: sha512-dexhhUJm0x9OolbeVCa7RpxuALU3bJZC7dFpu/rPG3ZetXKhVw8hTrqUQD5w1DjXpczBzScnLgLrvnjxbG66pw==} + '@tiptap/extension-floating-menu@2.11.1': + resolution: {integrity: sha512-hV5Xa7V19NQV4Am05bUf4YjGbmR31AJhW4KvM+DWsdWvj9mjWJZsKcP+bwsLntwNx99DLLuY1UYqXjagZMnrZw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.11.0': - resolution: {integrity: sha512-1TVOthPkUYwTQnQwP0BzuIHVz09epOiXJQ3GqgNZsmTehwcMzz2vGCpx1JXhZ5DoMaREHNLCdraXb1n2FdhDNA==} + '@tiptap/extension-gapcursor@2.11.1': + resolution: {integrity: sha512-VXgNHOJDXLUR7RSnd8+i6bBzetS7IAVCRnUBbl5wdSoKQfYXsLE/h8OPKMRlpdTghosVybVh18Z5Q+Cye1z7vw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.11.0': - resolution: {integrity: sha512-7pMgPNk2FnPT0LcWaWNNxOLK3LQnRSYFgrdBGMXec3sy+y3Lit3hM+EZhbZcHpTIQTbWWs+eskh1waRMIt0ZaQ==} + '@tiptap/extension-hard-break@2.11.1': + resolution: {integrity: sha512-7FoB3F0R9rPI05/jGzpHongju1oFswjIOXHq2Y35d8S1A6o05F87RcoqRHnGkm8m8oOVVEiIC9hs/fr41qVdoQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.11.0': - resolution: {integrity: sha512-vrYvxibsY7/Sd2wYQDZ8AfIORfFi/UHZAWI7JmaMtDkILuMLYQ+jXb7p4K2FFW/1nN7C8QqgLLFI5AfjZUusgw==} + '@tiptap/extension-heading@2.11.1': + resolution: {integrity: sha512-6J5KmuUcLLxSA3Ip7O6wPOuhX6VsyS9Y2DxNrbL9iHpB0o5wbyqS5VfPwPKWJukRjjmMWoJ2sjv6nMFrnT6GQQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-highlight@2.11.0': - resolution: {integrity: sha512-+szogL1ux8HMOuIn+TyB5PNhS0mdy4so5ejT2KAMtdZioPNS3Awj1FypimrXJV1kDjaN6LHRkF+w8/bV0qX4hA==} + '@tiptap/extension-highlight@2.11.1': + resolution: {integrity: sha512-UfZacEum02Bc/G4LqxcjLle921Uy0AU4KUpn7uMe/KuSLvGG6hPOYJHq1CSU5etBMKBGtrdUEI/k4qacrdOqrQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.11.0': - resolution: {integrity: sha512-eEUEDoOtS17AHVEPbGfZ+x2L5A87SiIsppWYTkpfIH/8EnVQmzu+3i1tcT9cWvHC31d9JTG7TDptVuuHr30TJw==} + '@tiptap/extension-history@2.11.1': + resolution: {integrity: sha512-jQSRYXDOAGBN+vr8OqBt3WW/VbGDmwr4NWgd6lz39Ms6Uzr1uc3Jr3cS/cxIFSZ8ydeIa9Y9idyzp/ywERGlRQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.11.0': - resolution: {integrity: sha512-ZbkILwmcccmwQB2VTA/dzHRMB+xoJQ8UJdafcUiaAUlQfvDgl898+AYMa2GRTZkLPvzCKjXMC9hybSyy54Lz3Q==} + '@tiptap/extension-horizontal-rule@2.11.1': + resolution: {integrity: sha512-YHWD0M9QVlpNMUIZVNtl+nBpCYGkMOPPyrBne7lm7aQx6yPb789MbVcPtm5UBVEBpNglwkZpz2076IB9lr8vYA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-image@2.11.0': - resolution: {integrity: sha512-R+JkK5ocX35ag1c42aAw6rcb9QlLUBB0ju8A7b+8qZXN5yWKE0yO/oixYFmnZN7WSnBYtzuCVDX8cvRG+BPbgA==} + '@tiptap/extension-image@2.11.1': + resolution: {integrity: sha512-aZEbZbum1uGmlR7QYQ16q0b3jr5DO/4LG+yZF8oj8tUQRmfpDnIOCKOVqUMDM2ixhymKBmH+dvKiIU/yQVZtNg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-italic@2.11.0': - resolution: {integrity: sha512-T+jjS0gOsvNzQXVTSArmUp/kt2R9OikPQaV1DI60bfjO0rknOgtG0tbwZmfbugzwc07RbpxOYFy3vBxMLDsksA==} + '@tiptap/extension-italic@2.11.1': + resolution: {integrity: sha512-sz97E3gi/edwrot58RII1RRhOUgeIzPXiVnrFn5GJjI9TRpPXKuHkadiHeRiiyrp8/TudhhZPrRdxIuuBYRDcQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.11.0': - resolution: {integrity: sha512-hvJSj0Ul4h8uxivtFtqaSy08s9G3smaW0He0ybYJ7rcJIsZ1zSrxQLGvIr/J8/yUq8VoVNspNR5cGUoyQaaw4A==} + '@tiptap/extension-link@2.11.1': + resolution: {integrity: sha512-f1Q580h8icxpfZiABqfDO61nRNUjm3tZv5I4nX/02AblurYOWeWQySgrc7BJdFxJAPqUlvdSr948Uniyyttb2w==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.11.0': - resolution: {integrity: sha512-Jikcg0fccpM13a3hAFLtguMcpVg4eMWI8NnC0aUULD9rFhvWZQYQYQuoK3fO6vQrAQpNhsV4oa0dfSq1btu9kg==} + '@tiptap/extension-list-item@2.11.1': + resolution: {integrity: sha512-WaJqJpdFPREZT7Dtbs2v7VVdp1+iTQAAZuVAPyMyMgVXbpfKizykuj/aMDrYEPBiw3vTuptG44se0d9xZkY8sA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.11.0': - resolution: {integrity: sha512-i6pNsDHA2QvBAebwjAuvhHKwz+bZVJ929PCIJaN8mxg0ldiAmFbAsf+rwIIFHWogMp+5xEX2RBzux20usNVZ9w==} + '@tiptap/extension-ordered-list@2.11.1': + resolution: {integrity: sha512-DDrwOFhz3LYBdqhO1beYngLKZmhGMTRQGQ6HOEXeWs23zmHcuGLO7bpOY9CVDUQ6crAtdTbpzcByYz/Bq2blxA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-paragraph@2.11.0': - resolution: {integrity: sha512-xLNC05An3SQq0bVHJtOTLa8As5r6NxDZFpK0NZqO2hTq/fAIRL/9VPeZ8E0tziXULwIvIPp+L0Taw3TvaUkRUg==} + '@tiptap/extension-paragraph@2.11.1': + resolution: {integrity: sha512-eI1gKdvMje2tqCI8BdqKauvJT/oqPIuumF/d8MTtvp4CTbYw3/+BNwtP6svWmctfK9vZIH4Ld7URm7ZaeuC2vg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.11.0': - resolution: {integrity: sha512-71i2IZT58kY2ohlhyO+ucyAioNNCkNkuPkrVERc9lXhmcCKOff5y6ekDHQHO2jNjnejkVE5ibyDO3Z7RUXjh1A==} + '@tiptap/extension-strike@2.11.1': + resolution: {integrity: sha512-sVSN3H5K8eOmfYcxcb/VUtBD+Qtrk/aJ32YzOAThm11MN0H6EJk+RctxNw3IbTRuDkGeQPWsGgCeYT7c12ymhw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-cell@2.11.0': - resolution: {integrity: sha512-05lXXaGPWzVi/mVYRzsiLbaZ1VVU42buCkoTZrduvJsGEu6K+Cut2fqo7I29CJmJ0P/hDSyMEJDKqdKSP9xalA==} + '@tiptap/extension-table-cell@2.11.1': + resolution: {integrity: sha512-hOmg6j5SEDx/ifImywRzhNfzBXM7WC+/O6VYnvpLiuTCCcqL7c8mK8chuoOajfNoJoOp9o2WfRogdGitrPzXTg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-header@2.11.0': - resolution: {integrity: sha512-pOKz1E7VT9v37psA0lFJ0mcj2DAa/KNqNqO3TGOUnNOYaN+/6w01i6tA7rAinULsxaFTZx5x1BGLMqonc6n0fw==} + '@tiptap/extension-table-header@2.11.1': + resolution: {integrity: sha512-GUc42FATWYvsb7CUx8Njta7DvkSl9i/TRw+FFVkTgKtz74uj/PhjuO59gNjVQqLThmoVhtVjxlcPuJOeyp0T/w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-row@2.11.0': - resolution: {integrity: sha512-j+o5Lr1JynSWcd/NN+4mNELvcVwj6CxcNT3J37oc5uy0a6CBhHlmp1d9eEbEnk95tMEsibunVV73wRqE150nEw==} + '@tiptap/extension-table-row@2.11.1': + resolution: {integrity: sha512-GnPyOE7XUTzG4Weqjn4n/LGgy+CCtgMAWZdXr/n4ufuox7CaPgFa0WoKJPNJj0c3rLLyKdZ9qwnPFXaA6G/udA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table@2.11.0': - resolution: {integrity: sha512-RH9pw2L2eilFjQxEGaWdk7929rm4NLxCs/aXuFVY+zL3ZHzHovsMDM5SZiyk4pTnVpE2Bj8+NcDZ8r/zMcvYIA==} + '@tiptap/extension-table@2.11.1': + resolution: {integrity: sha512-bTpj+Gkzg3rHBJ630fAZa/Dyxf7OZqv8NhRZJfDfqB/ifRe7LqLAd9fx7MXXgvkb2oUmW/u6oTJrltP76m+QWg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-item@2.11.0': - resolution: {integrity: sha512-qu6VuRc8qF80Bwr82CItFcrKtC67LJkwpxESLEIi42zWZ5sXF/3DJEPPS/4Kk+nAc9UCBoEMFAULibPq7rRl/w==} + '@tiptap/extension-task-item@2.11.1': + resolution: {integrity: sha512-XIcsANkz+aHGRSX8TL9dTM5MuhwtndRSb6ReDvI3Tnd9lhpyurxxjVM3zuXXFVs/8hVWRiYlhs7afbSmq0DF+g==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-list@2.11.0': - resolution: {integrity: sha512-+dZRjeXLXxyliFt3J7uQADxfOwi6ntyepVM+ri1rnmIaqVZUHJbUFodOc0LivI+Z5iZZ10u3TId8gehqWJHD+w==} + '@tiptap/extension-task-list@2.11.1': + resolution: {integrity: sha512-UWBDJYLbUdUMvhixS27l03LmVGB4DDuyjE0P9mRtonpDuVbakNL0cmSetD9fMJ6XobWY4TK+wuTUKxFjKFVugA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-align@2.11.0': - resolution: {integrity: sha512-VRXBqO17po6ddqhoWLBa2aCX/tqHdzdKPLfjnBy1fF8hjQKbidzjMWhb4CMm31ApvJjKK/DTkM3EnyYS/XDhng==} + '@tiptap/extension-text-align@2.11.1': + resolution: {integrity: sha512-foXtqUh82yb/7n9RwUw/vIU4FK3aL3Udd3g1pfM/HSrbyAuSID1A434Xu7QXRfEUXDxiJWxJvq2nL0XgbLxnew==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.11.0': - resolution: {integrity: sha512-vuA16wMZ6J3fboL7FObwV2f5uN9Vg0WYmqU7971vxzJyaRj9VE1eeH8Kh5fq4RgwDzc13MZGvZZV4HcE1R8o8A==} + '@tiptap/extension-text-style@2.11.1': + resolution: {integrity: sha512-f3aGt7TmZf6Lz0nH578rOUNntywzQIe7DiScjrAg2oKbujWilZ7bmXJjDBCWuHRQKl6ZRilIeZw8JfRX4YlVIw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.11.0': - resolution: {integrity: sha512-LcyrP+7ZEVx3YaKzjMAeujq+4xRt4mZ3ITGph2CQ4vOKFaMI8bzSR909q18t7Qyyvek0a9VydEU1NHSaq4G5jw==} + '@tiptap/extension-text@2.11.1': + resolution: {integrity: sha512-YZ26osxxXINEX1fOJ6MWJB3TYLmYYUf/4DI3py+8rstQMbIAg8Jhm02j3gewbHqLZiBdpFuFNKSNyBpaMm9gHA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.11.0': - resolution: {integrity: sha512-DE1piq441y1+9Aj1pvvuq1dcc5B2HZ2d1SPtO4DTMjCxrhok12biTkMxxq0q1dzA5/BouLlUW6WTPpinhmrUWA==} + '@tiptap/extension-underline@2.11.1': + resolution: {integrity: sha512-h74VbUu6N+Q7WQnB/fqJ9ZR5WRl4i7NntkJs8iFry6lv93EFKVfjFNRig1up1yyaGUgbg+gHTNG/eTqgd9Wsjg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.11.0': - resolution: {integrity: sha512-4RU6bpODkMY+ZshzdRFcuUc5jWlMW82LWXR6UOsHK/X/Mav41ZFS0Cyf+hQM6gxxTB09YFIICmGpEpULb+/CuA==} + '@tiptap/pm@2.11.1': + resolution: {integrity: sha512-V4PxHw9cBXPBJSJZFEcp7vyn84swcVGIDiRiLlw47UySIgCSdtUfNhj5tgVg/zV5TrwMRDXfc1J40tEwUVtyDg==} - '@tiptap/react@2.11.0': - resolution: {integrity: sha512-AALzHbqNq/gerJpkbXmN2OXFmHAs2bQENH7rXbnH70bpxVdIfQVtvjK4dIb+cQQvAuTWZvhsISnTrFY2BesT3Q==} + '@tiptap/react@2.11.1': + resolution: {integrity: sha512-1zwh6oNtp4ujFdJIEfYYjtSpwe1Xijk8DcHUtwDEn+FsxzX7HSh/fjWNnFZNtwrbWav35sSyCNTqv6bHrbruGw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tiptap/starter-kit@2.11.0': - resolution: {integrity: sha512-lrYmkeaAFiuUjN5nGnCowdjponrsR7eRmeTf/15/5oZsNrMN7t/fvPb014AqhG/anNasa0ism4CKZns3D+4pKQ==} + '@tiptap/starter-kit@2.11.1': + resolution: {integrity: sha512-lNyuidSV37dWPGILwFBk9J5wv2tLkEZfoDpP3EyqGfhaJ3K/vNSMmajULN205kagOzdqlIyDepK3vc10NU+7UQ==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.688': - resolution: {integrity: sha512-e+2efSrqMrBjtAK6DxVvtkwX0kj+5ww7eZSyxHcoC0rjP1CYXl8HUUcWrSHpzOZEYt1Ey9E9o/zFlKKNeTGKWg==} + '@trpc/client@11.0.0-rc.693': + resolution: {integrity: sha512-w442Zd2DQgGsortb5sBKu6aI6sH5fmnC+b+k+KvslAC+8bwtWTtvPo8V+OwSpDBJAE7LF0xpmAlC6y4/NyeOvg==} peerDependencies: - '@trpc/server': 11.0.0-rc.688+87ea49ed1 + '@trpc/server': 11.0.0-rc.693+c3a9b2102 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.688': - resolution: {integrity: sha512-XcxbQE/Rr55sclTI3eFh87CXE/HielLpe+fTZCnGj9/yRmlGdBBshjRN9sluIOvIE7AMnurfe+VNU2q2N3Ufcw==} + '@trpc/next@11.0.0-rc.693': + resolution: {integrity: sha512-zQxNjezeIo5H4rECeGsPdeA8vSeXZtzM9OqDXB6OUEd9fqKLS5gKSgf3v7T8YY7Dsob8Bs6RflsU/SK0oA0KYw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.688+87ea49ed1 - '@trpc/react-query': 11.0.0-rc.688+87ea49ed1 - '@trpc/server': 11.0.0-rc.688+87ea49ed1 + '@trpc/client': 11.0.0-rc.693+c3a9b2102 + '@trpc/react-query': 11.0.0-rc.693+c3a9b2102 + '@trpc/server': 11.0.0-rc.693+c3a9b2102 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4159,18 +4159,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.688': - resolution: {integrity: sha512-V9vj5cN4ct0ju9lGeFv/POOuitNPAq9qrPv+zBJV82m336pLr81jBBQtZ1b4Dc+uFiyMD+Ld4SZtvD9joMJlpg==} + '@trpc/react-query@11.0.0-rc.693': + resolution: {integrity: sha512-Yr58CWvxwYTasWd2PzjBBYUrw2YZCoW70e9MStWGmZkV74HQpLovNOJcdpbDgkjqUbCkcRxcmb9Uqj7b8ByB5g==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.688+87ea49ed1 - '@trpc/server': 11.0.0-rc.688+87ea49ed1 + '@trpc/client': 11.0.0-rc.693+c3a9b2102 + '@trpc/server': 11.0.0-rc.693+c3a9b2102 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.688': - resolution: {integrity: sha512-nv1uJFMWFnD5Y+pt2rECXTYZ2J8WZMKesNU3DbPxZYUcmLXo18sKRYTlJGjVr5amJ58L3Z5F4JNrFO3GV0DsEQ==} + '@trpc/server@11.0.0-rc.693': + resolution: {integrity: sha512-0PTZP6fK/1giuGBHKVlY5W9iQtDWTdJ7HyA7bSx9Lod1c9beKf86MtLKqgh0/ItkAVzSqyA8GxXZi745Ja8++Q==} peerDependencies: typescript: '>=5.7.2' @@ -10822,12 +10822,12 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0))(@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1))(@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) - '@tiptap/extension-link': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/react': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tiptap/extension-link': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/react': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11832,157 +11832,157 @@ snapshots: transitivePeerDependencies: - supports-color - '@tiptap/core@2.11.0(@tiptap/pm@2.11.0)': + '@tiptap/core@2.11.1(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/pm': 2.11.0 + '@tiptap/pm': 2.11.1 - '@tiptap/extension-blockquote@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-blockquote@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-bold@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-bold@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-bubble-menu@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-bubble-menu@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 tippy.js: 6.3.7 - '@tiptap/extension-bullet-list@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-bullet-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-code-block@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-code-block@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-code@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-code@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-color@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/extension-text-style@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)))': + '@tiptap/extension-color@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/extension-text-style': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/extension-text-style': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-document@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-document@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-dropcursor@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-dropcursor@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-floating-menu@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-floating-menu@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 tippy.js: 6.3.7 - '@tiptap/extension-gapcursor@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-gapcursor@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-hard-break@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-hard-break@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-heading@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-heading@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-highlight@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-highlight@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-history@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-history@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-horizontal-rule@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-horizontal-rule@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-image@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-image@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-italic@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-italic@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-link@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 linkifyjs: 4.2.0 - '@tiptap/extension-list-item@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-list-item@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-ordered-list@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-ordered-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-paragraph@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-paragraph@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-strike@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-strike@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-table-cell@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-table-cell@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-table-header@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-table-header@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-table-row@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-table-row@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-table@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-table@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-task-item@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)': + '@tiptap/extension-task-item@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 - '@tiptap/extension-task-list@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-task-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-text-align@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-text-align@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-text-style@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-text@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-text@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-underline@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))': + '@tiptap/extension-underline@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm@2.11.0': + '@tiptap/pm@2.11.1': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -12003,71 +12003,71 @@ snapshots: prosemirror-transform: 1.10.2 prosemirror-view: 1.37.0 - '@tiptap/react@2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/extension-bubble-menu': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-floating-menu': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/extension-bubble-menu': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-floating-menu': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/pm': 2.11.1 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) use-sync-external-store: 1.2.2(react@19.0.0) - '@tiptap/starter-kit@2.11.0': + '@tiptap/starter-kit@2.11.1': dependencies: - '@tiptap/core': 2.11.0(@tiptap/pm@2.11.0) - '@tiptap/extension-blockquote': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-bold': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-bullet-list': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-code': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-code-block': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-document': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-dropcursor': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-gapcursor': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-hard-break': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-heading': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-history': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-horizontal-rule': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0))(@tiptap/pm@2.11.0) - '@tiptap/extension-italic': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-list-item': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-ordered-list': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-paragraph': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-strike': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-text': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/extension-text-style': 2.11.0(@tiptap/core@2.11.0(@tiptap/pm@2.11.0)) - '@tiptap/pm': 2.11.0 + '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/extension-blockquote': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-bold': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-bullet-list': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-code': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-code-block': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-document': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-dropcursor': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-gapcursor': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-hard-break': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-heading': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-history': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-horizontal-rule': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + '@tiptap/extension-italic': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-list-item': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-ordered-list': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-paragraph': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-strike': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-text': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/extension-text-style': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/pm': 2.11.1 '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.688(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.688(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.688(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.693(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -17705,9 +17705,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.688(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.688(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 From 7d1b1d83429acaa9846479a7a5c48092d4614b75 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 11:29:01 +0000 Subject: [PATCH 206/262] fix(deps): update dependency glob to ^11.0.1 (#1908) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index dd7508086..d43f482d0 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -62,7 +62,7 @@ "dayjs": "^1.11.13", "dotenv": "^16.4.7", "flag-icons": "^7.2.3", - "glob": "^11.0.0", + "glob": "^11.0.1", "jotai": "^2.11.0", "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 232427fc9..44f601f69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -221,8 +221,8 @@ importers: specifier: ^7.2.3 version: 7.2.3 glob: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^11.0.1 + version: 11.0.1 jotai: specifier: ^2.11.0 version: 2.11.0(@types/react@19.0.4)(react@19.0.0) @@ -6246,8 +6246,8 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + glob@11.0.1: + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} hasBin: true @@ -7066,10 +7066,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.1: - resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} - engines: {node: 20 || >=22} - lru-cache@11.0.2: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} @@ -14590,7 +14586,7 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - glob@11.0.0: + glob@11.0.1: dependencies: foreground-child: 3.3.0 jackspeak: 4.0.1 @@ -15456,8 +15452,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.1: {} - lru-cache@11.0.2: {} lru-cache@5.1.1: @@ -16114,7 +16108,7 @@ snapshots: path-scurry@2.0.0: dependencies: - lru-cache: 11.0.1 + lru-cache: 11.0.2 minipass: 7.1.2 path-type@4.0.0: {} From 80c02ef9f24cec74025a0fcc983c6db37f7fd457 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:44:31 +0100 Subject: [PATCH 207/262] fix(translation): query parameter in search with escaped (#1895) --- packages/translation/src/lang/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 430144747..59f4fc071 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2882,7 +2882,7 @@ "description": "Set a default search engine in preferences" }, "search": { - "label": "Search for '{query}' with {name}" + "label": "Search for \"{query}\" with {name}" }, "from-integration": { "description": "Start typing to search" From a12dd102692ee237e9695bd852dc894a2856b30e Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:45:30 +0100 Subject: [PATCH 208/262] fix(security): restrict link protocols to http and https (#1888) --- packages/translation/src/lang/en.json | 1 + packages/validation/src/app.ts | 6 ++++- packages/validation/src/integration.ts | 5 +++- packages/validation/src/search-engine.ts | 2 +- packages/widgets/src/iframe/component.tsx | 31 ++++++++++++++++++++++- 5 files changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 59f4fc071..169df14d1 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1280,6 +1280,7 @@ }, "error": { "noUrl": "No iFrame URL provided", + "unsupportedProtocol": "The URL provided is using an unsupported protocol. Please use one of ({supportedProtocols})", "noBrowerSupport": "Your Browser does not support iframes. Please update your browser." } }, diff --git a/packages/validation/src/app.ts b/packages/validation/src/app.ts index 507c2f8bf..dfe1a749a 100644 --- a/packages/validation/src/app.ts +++ b/packages/validation/src/app.ts @@ -4,7 +4,11 @@ const manageAppSchema = z.object({ name: z.string().min(1).max(64), description: z.string().max(512).nullable(), iconUrl: z.string().min(1), - href: z.string().nullable(), + href: z + .string() + .url() + .regex(/^https?:\/\//) // Only allow http and https for security reasons (javascript: is not allowed) + .nullable(), }); const editAppSchema = manageAppSchema.and(z.object({ id: z.string() })); diff --git a/packages/validation/src/integration.ts b/packages/validation/src/integration.ts index ad22d8eeb..e9606a268 100644 --- a/packages/validation/src/integration.ts +++ b/packages/validation/src/integration.ts @@ -7,7 +7,10 @@ import { createSavePermissionsSchema } from "./permissions"; const integrationCreateSchema = z.object({ name: z.string().nonempty().max(127), - url: z.string().url(), + url: z + .string() + .url() + .regex(/^https?:\/\//), // Only allow http and https for security reasons (javascript: is not allowed) kind: zodEnumFromArray(integrationKinds), secrets: z.array( z.object({ diff --git a/packages/validation/src/search-engine.ts b/packages/validation/src/search-engine.ts index dbf9b0f4b..720f5fb86 100644 --- a/packages/validation/src/search-engine.ts +++ b/packages/validation/src/search-engine.ts @@ -5,7 +5,7 @@ import type { SearchEngineType } from "@homarr/definitions"; const genericSearchEngine = z.object({ type: z.literal("generic" satisfies SearchEngineType), - urlTemplate: z.string().min(1).startsWith("http").includes("%s"), + urlTemplate: z.string().min(1).startsWith("http").includes("%s"), // Only allow http and https for security reasons (javascript: is not allowed) }); const fromIntegrationSearchEngine = z.object({ diff --git a/packages/widgets/src/iframe/component.tsx b/packages/widgets/src/iframe/component.tsx index b561bd060..3f32742c7 100644 --- a/packages/widgets/src/iframe/component.tsx +++ b/packages/widgets/src/iframe/component.tsx @@ -1,7 +1,7 @@ "use client"; import { Box, Stack, Text, Title } from "@mantine/core"; -import { IconBrowserOff } from "@tabler/icons-react"; +import { IconBrowserOff, IconProtocol } from "@tabler/icons-react"; import { objectEntries } from "@homarr/common"; import { useI18n } from "@homarr/translation/client"; @@ -15,6 +15,9 @@ export default function IFrameWidget({ options, isEditMode }: WidgetComponentPro const allowedPermissions = getAllowedPermissions(permissions); if (embedUrl.trim() === "") return ; + if (!isSupportedProtocol(embedUrl)) { + return ; + } return ( @@ -31,6 +34,17 @@ export default function IFrameWidget({ options, isEditMode }: WidgetComponentPro ); } +const supportedProtocols = ["http", "https"]; + +const isSupportedProtocol = (url: string) => { + try { + const parsedUrl = new URL(url); + return supportedProtocols.map((protocol) => `${protocol}:`).includes(`${parsedUrl.protocol}`); + } catch { + return false; + } +}; + const NoUrl = () => { const t = useI18n(); @@ -42,6 +56,21 @@ const NoUrl = () => { ); }; +const UnsupportedProtocol = () => { + const t = useI18n(); + + return ( + + + + {t("widget.iframe.error.unsupportedProtocol", { + supportedProtocols: supportedProtocols.map((protocol) => protocol).join(", "), + })} + + + ); +}; + const getAllowedPermissions = (permissions: Omit["options"], "embedUrl">) => { return objectEntries(permissions) .filter(([_key, value]) => value) From 546c824888a2a6909b831b69ce1a4e283099bda5 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:46:21 +0100 Subject: [PATCH 209/262] fix(dns-hole-summary): calculation for domains and percentage for multiple integrations (#1894) --- packages/translation/src/lang/en.json | 3 +- .../src/dns-hole/summary/component.tsx | 120 ++++++++++-------- 2 files changed, 67 insertions(+), 56 deletions(-) diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 169df14d1..8072ad1ee 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1091,7 +1091,8 @@ "adsBlockedTodayPercentage": "Blocked today", "dnsQueriesToday": "Queries today", "domainsBeingBlocked": "Domains on blocklist" - } + }, + "domainsTooltip": "Due to multiple integrations Homarr can't calculate the exact number of domains being blocked" }, "dnsHoleControls": { "name": "DNS Hole Controls", diff --git a/packages/widgets/src/dns-hole/summary/component.tsx b/packages/widgets/src/dns-hole/summary/component.tsx index ff4634dff..50d06de42 100644 --- a/packages/widgets/src/dns-hole/summary/component.tsx +++ b/packages/widgets/src/dns-hole/summary/component.tsx @@ -2,7 +2,7 @@ import { useMemo } from "react"; import type { BoxProps } from "@mantine/core"; -import { Avatar, AvatarGroup, Box, Card, Flex, Stack, Text, Tooltip } from "@mantine/core"; +import { Avatar, AvatarGroup, Box, Card, Flex, Stack, Text, Tooltip, TooltipFloating } from "@mantine/core"; import { useElementSize } from "@mantine/hooks"; import { IconBarrierBlock, IconPercentage, IconSearch, IconWorldWww } from "@tabler/icons-react"; @@ -98,11 +98,11 @@ const stats = [ }, { icon: IconPercentage, - value: (data) => - `${formatNumber( - data.reduce((count, { adsBlockedTodayPercentage }) => count + adsBlockedTodayPercentage, 0), - 2, - )}%`, + value: (data) => { + const totalCount = data.reduce((count, { dnsQueriesToday }) => count + dnsQueriesToday, 0); + const blocked = data.reduce((count, { adsBlockedToday }) => count + adsBlockedToday, 0); + return `${formatNumber(totalCount === 0 ? 0 : (blocked / totalCount) * 100, 2)}%`; + }, label: (t) => t("widget.dnsHoleSummary.data.adsBlockedTodayPercentage"), color: "rgba(255, 165, 20, 0.4)", // YELLOW }, @@ -118,11 +118,17 @@ const stats = [ }, { icon: IconWorldWww, - value: (data) => - formatNumber( - data.reduce((count, { domainsBeingBlocked }) => count + domainsBeingBlocked, 0), - 2, - ), + value: (data) => { + // We use a suffix to indicate that there might be more domains in the at least two lists. + const suffix = data.length >= 2 ? "+" : ""; + return ( + formatNumber( + data.reduce((count, { domainsBeingBlocked }) => count + domainsBeingBlocked, 0), + 2, + ) + suffix + ); + }, + tooltip: (data, t) => (data.length >= 2 ? t("widget.dnsHoleSummary.domainsTooltip") : undefined), label: (t) => t("widget.dnsHoleSummary.data.domainsBeingBlocked"), color: "rgba(0, 176, 96, 0.4)", // GREEN }, @@ -130,7 +136,8 @@ const stats = [ interface StatItem { icon: TablerIcon; - value: (x: DnsHoleSummary[]) => string; + value: (summaries: DnsHoleSummary[]) => string; + tooltip?: (summaries: DnsHoleSummary[], t: TranslationFunction) => string | undefined; label: stringOrTranslation; color: string; } @@ -144,58 +151,61 @@ interface StatCardProps { const StatCard = ({ item, data, usePiHoleColors, t }: StatCardProps) => { const { ref, height, width } = useElementSize(); const isLong = width > height + 20; + const tooltip = item.tooltip?.(data, t); return ( - - + - - + - {item.value(data)} - - {item.label && ( - - {translateIfNecessary(t, item.label)} + + {item.value(data)} - )} + {item.label && ( + + {translateIfNecessary(t, item.label)} + + )} + - - + + ); }; From 39171ac76ad42f1fea10281e8715a655311ca959 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:46:31 +0100 Subject: [PATCH 210/262] refactor(icons): move walkxcode/dashboard-icons to homarr-labs/dashboard-icons (#1883) --- .../manage/_components/hero-banner.tsx | 36 +++++----- packages/api/src/router/app.ts | 2 +- .../integration/integration-router.spec.ts | 2 +- packages/cron-jobs/src/jobs/icons-updater.ts | 68 +++++++++++++------ packages/definitions/src/integration.ts | 40 +++++------ packages/icons/src/icons-fetcher.ts | 10 +-- 6 files changed, 92 insertions(+), 66 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx index 575c5afe2..b9aec4e3a 100644 --- a/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx +++ b/apps/nextjs/src/app/[locale]/manage/_components/hero-banner.tsx @@ -5,29 +5,29 @@ import { splitToNChunks } from "@homarr/common"; import classes from "./hero-banner.module.css"; const icons = [ - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/homarr.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/sabnzbd.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/deluge.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/radarr.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/sonarr.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/lidarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/homarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sabnzbd.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/deluge.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/radarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/sonarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/lidarr.svg", "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets/assets/pihole.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/dashdot.png", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/overseerr.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/plex.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/jellyfin.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/dashdot.png", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/overseerr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/plex.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyfin.svg", "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets/assets/homeassistant.svg", "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets/assets/freshrss.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/readarr.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/transmission.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/qbittorrent.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/nzbget.png", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/openmediavault.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/readarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/transmission.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/qbittorrent.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/nzbget.png", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/openmediavault.svg", "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets/assets/docker.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/jellyseerr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/jellyseerr.svg", "https://cdn.jsdelivr.net/gh/loganmarchione/homelab-svg-assets/assets/adguardhome.svg", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/tdarr.png", - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/svg/prowlarr.svg", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/tdarr.png", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/prowlarr.svg", ]; const countIconGroups = 3; diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 2d1a70ed1..43cc24031 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -10,7 +10,7 @@ import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { canUserSeeAppAsync } from "./app/app-access-control"; -const defaultIcon = "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/svg/homarr.svg"; +const defaultIcon = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/homarr.svg"; export const appRouter = createTRPCRouter({ getPaginated: protectedProcedure diff --git a/packages/api/src/router/test/integration/integration-router.spec.ts b/packages/api/src/router/test/integration/integration-router.spec.ts index 3a3efb1ed..6b8b48cc8 100644 --- a/packages/api/src/router/test/integration/integration-router.spec.ts +++ b/packages/api/src/router/test/integration/integration-router.spec.ts @@ -240,7 +240,7 @@ describe("create should create a new integration", () => { expect(dbSearchEngine!.short).toBe("j"); expect(dbSearchEngine!.name).toBe(input.name); expect(dbSearchEngine!.iconUrl).toBe( - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyseerr.png", + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/jellyseerr.png", ); }); diff --git a/packages/cron-jobs/src/jobs/icons-updater.ts b/packages/cron-jobs/src/jobs/icons-updater.ts index 48fa0c59c..e818020d6 100644 --- a/packages/cron-jobs/src/jobs/icons-updater.ts +++ b/packages/cron-jobs/src/jobs/icons-updater.ts @@ -1,7 +1,7 @@ import { splitToNChunks, Stopwatch } from "@homarr/common"; import { EVERY_WEEK } from "@homarr/cron-jobs-core/expressions"; import type { InferInsertModel } from "@homarr/db"; -import { db, inArray } from "@homarr/db"; +import { db, inArray, sql } from "@homarr/db"; import { createId } from "@homarr/db/client"; import { iconRepositories, icons } from "@homarr/db/schema"; import { fetchIconsAsync } from "@homarr/icons"; @@ -22,13 +22,13 @@ export const iconsUpdaterJob = createCronJob("iconsUpdater", EVERY_WEEK, { `Successfully fetched ${countIcons} icons from ${repositoryIconGroups.length} repositories within ${stopWatch.getElapsedInHumanWords()}`, ); - const databaseIconGroups = await db.query.iconRepositories.findMany({ + const databaseIconRepositories = await db.query.iconRepositories.findMany({ with: { icons: true, }, }); - const skippedChecksums: string[] = []; + const skippedChecksums: `${string}.${string}`[] = []; let countDeleted = 0; let countInserted = 0; @@ -43,18 +43,24 @@ export const iconsUpdaterJob = createCronJob("iconsUpdater", EVERY_WEEK, { continue; } - const repositoryInDb = databaseIconGroups.find((dbIconGroup) => dbIconGroup.slug === repositoryIconGroup.slug); - const repositoryIconGroupId: string = repositoryInDb?.id ?? createId(); + const repositoryInDb = databaseIconRepositories.find( + (dbIconGroup) => dbIconGroup.slug === repositoryIconGroup.slug, + ); + const iconRepositoryId: string = repositoryInDb?.id ?? createId(); if (!repositoryInDb?.id) { newIconRepositories.push({ - id: repositoryIconGroupId, + id: iconRepositoryId, slug: repositoryIconGroup.slug, }); } for (const icon of repositoryIconGroup.icons) { - if (databaseIconGroups.flatMap((group) => group.icons).some((dbIcon) => dbIcon.checksum === icon.checksum)) { - skippedChecksums.push(icon.checksum); + if ( + databaseIconRepositories + .flatMap((repository) => repository.icons) + .some((dbIcon) => dbIcon.checksum === icon.checksum && dbIcon.iconRepositoryId === iconRepositoryId) + ) { + skippedChecksums.push(`${iconRepositoryId}.${icon.checksum}`); continue; } @@ -63,34 +69,54 @@ export const iconsUpdaterJob = createCronJob("iconsUpdater", EVERY_WEEK, { checksum: icon.checksum, name: icon.fileNameWithExtension, url: icon.imageUrl, - iconRepositoryId: repositoryIconGroupId, + iconRepositoryId, }); countInserted++; } } - const deadIcons = databaseIconGroups - .flatMap((group) => group.icons) - .filter((icon) => !skippedChecksums.includes(icon.checksum)); + const deadIcons = databaseIconRepositories + .flatMap((repository) => repository.icons) + .filter((icon) => !skippedChecksums.includes(`${icon.iconRepositoryId}.${icon.checksum}`)); - await db.transaction(async (transaction) => { + const deadIconRepositories = databaseIconRepositories.filter( + (iconRepository) => !repositoryIconGroups.some((group) => group.slug === iconRepository.slug), + ); + + db.transaction((transaction) => { if (newIconRepositories.length >= 1) { - await transaction.insert(iconRepositories).values(newIconRepositories); + transaction.insert(iconRepositories).values(newIconRepositories).run(); } if (newIcons.length >= 1) { // We only insert 5000 icons at a time to avoid SQLite limitations for (const chunck of splitToNChunks(newIcons, Math.ceil(newIcons.length / 5000))) { - await transaction.insert(icons).values(chunck); + transaction.insert(icons).values(chunck).run(); } } if (deadIcons.length >= 1) { - await transaction.delete(icons).where( - inArray( - icons.checksum, - deadIcons.map((icon) => icon.checksum), - ), - ); + transaction + .delete(icons) + .where( + inArray( + // Combine iconRepositoryId and checksum to allow same icons on different repositories + sql`concat(${icons.iconRepositoryId}, '.', ${icons.checksum})`, + deadIcons.map((icon) => `${icon.iconRepositoryId}.${icon.checksum}`), + ), + ) + .run(); + } + + if (deadIconRepositories.length >= 1) { + transaction + .delete(iconRepositories) + .where( + inArray( + iconRepositories.id, + deadIconRepositories.map((iconRepository) => iconRepository.id), + ), + ) + .run(); } countDeleted += deadIcons.length; diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 1ace6b955..82f6e2080 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -20,122 +20,122 @@ export const integrationDefs = { sabNzbd: { name: "SABnzbd", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/sabnzbd.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/sabnzbd.png", category: ["downloadClient", "usenet"], }, nzbGet: { name: "NZBGet", secretKinds: [["username", "password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/nzbget.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/nzbget.png", category: ["downloadClient", "usenet"], }, deluge: { name: "Deluge", secretKinds: [["password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/deluge.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/deluge.png", category: ["downloadClient", "torrent"], }, transmission: { name: "Transmission", secretKinds: [["username", "password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/transmission.png", category: ["downloadClient", "torrent"], }, qBittorrent: { name: "qBittorrent", secretKinds: [["username", "password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/qbittorrent.png", category: ["downloadClient", "torrent"], }, sonarr: { name: "Sonarr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/sonarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/sonarr.png", category: ["calendar"], }, radarr: { name: "Radarr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/radarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/radarr.png", category: ["calendar"], }, lidarr: { name: "Lidarr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/lidarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/lidarr.png", category: ["calendar"], }, readarr: { name: "Readarr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/readarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/readarr.png", category: ["calendar"], }, prowlarr: { name: "Prowlarr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/prowlarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/prowlarr.png", category: ["indexerManager"], }, jellyfin: { name: "Jellyfin", secretKinds: [["username", "password"], ["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/jellyfin.png", category: ["mediaService"], }, plex: { name: "Plex", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/plex.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/plex.png", category: ["mediaService"], }, jellyseerr: { name: "Jellyseerr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyseerr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/jellyseerr.png", category: ["mediaSearch", "mediaRequest", "search"], }, overseerr: { name: "Overseerr", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/overseerr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/overseerr.png", category: ["mediaSearch", "mediaRequest", "search"], }, piHole: { name: "Pi-hole", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/pi-hole.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/pi-hole.png", category: ["dnsHole"], }, adGuardHome: { name: "AdGuard Home", secretKinds: [["username", "password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/adguard-home.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/adguard-home.png", category: ["dnsHole"], }, homeAssistant: { name: "Home Assistant", secretKinds: [["apiKey"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/home-assistant.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/home-assistant.png", category: ["smartHomeServer"], }, openmediavault: { name: "OpenMediaVault", secretKinds: [["username", "password"]], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/openmediavault.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/openmediavault.png", category: ["healthMonitoring"], }, dashDot: { name: "Dash.", secretKinds: [[]], category: ["healthMonitoring"], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dashdot.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/dashdot.png", }, tdarr: { name: "Tdarr", secretKinds: [[]], category: ["mediaTranscoding"], - iconUrl: "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/tdarr.png", + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/tdarr.png", }, } as const satisfies Record; diff --git a/packages/icons/src/icons-fetcher.ts b/packages/icons/src/icons-fetcher.ts index d1be6a75a..b9ab3c450 100644 --- a/packages/icons/src/icons-fetcher.ts +++ b/packages/icons/src/icons-fetcher.ts @@ -5,12 +5,12 @@ import type { RepositoryIconGroup } from "./types"; const repositories = [ new GitHubIconRepository( - "Walkxcode", - "walkxcode/dashboard-icons", + "Dashboard Icons", + "homarr-labs/dashboard-icons", undefined, - new URL("https://github.com/walkxcode/dashboard-icons"), - new URL("https://api.github.com/repos/walkxcode/dashboard-icons/git/trees/main?recursive=true"), - "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/{0}", + new URL("https://github.com/homarr-labs/dashboard-icons"), + new URL("https://api.github.com/repos/homarr-labs/dashboard-icons/git/trees/main?recursive=true"), + "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/{0}", ), new GitHubIconRepository( "selfh.st", From 62da953356ff76694ddc50980a2b879a01bcbdd6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:46:39 +0100 Subject: [PATCH 211/262] feat(items): add search to selection (#1887) --- .../board/items/item-select-modal.tsx | 97 +++++++++++++------ packages/translation/src/lang/en.json | 1 + 2 files changed, 67 insertions(+), 31 deletions(-) diff --git a/apps/nextjs/src/components/board/items/item-select-modal.tsx b/apps/nextjs/src/components/board/items/item-select-modal.tsx index 3789ebca3..a2fce1264 100644 --- a/apps/nextjs/src/components/board/items/item-select-modal.tsx +++ b/apps/nextjs/src/components/board/items/item-select-modal.tsx @@ -1,21 +1,67 @@ -import { Button, Card, Center, Grid, Stack, Text } from "@mantine/core"; +import { useMemo, useState } from "react"; +import { Button, Card, Center, Grid, Input, Stack, Text } from "@mantine/core"; +import { IconSearch } from "@tabler/icons-react"; import { objectEntries } from "@homarr/common"; import type { WidgetKind } from "@homarr/definitions"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; +import type { TablerIcon } from "@homarr/ui"; import { widgetImports } from "@homarr/widgets"; -import type { WidgetDefinition } from "@homarr/widgets"; import { useItemActions } from "./item-actions"; export const ItemSelectModal = createModal(({ actions }) => { + const [search, setSearch] = useState(""); + const t = useI18n(); + const { createItem } = useItemActions(); + + const items = useMemo( + () => + objectEntries(widgetImports) + .map(([kind, value]) => ({ + kind, + icon: value.definition.icon, + name: t(`widget.${kind}.name`), + description: t(`widget.${kind}.description`), + })) + .sort((itemA, itemB) => itemA.name.localeCompare(itemB.name)), + [t], + ); + + const filteredItems = useMemo( + () => items.filter((item) => item.name.toLowerCase().includes(search.toLowerCase())), + [items, search], + ); + + const handleAdd = (kind: WidgetKind) => { + createItem({ kind }); + actions.closeModal(); + }; + return ( - - {objectEntries(widgetImports).map(([key, value]) => { - return ; - })} - + + setSearch(event.currentTarget.value)} + leftSection={} + placeholder={`${t("item.create.search")}...`} + data-autofocus + onKeyDown={(event) => { + // Add item if there is only one item in the list and user presses Enter + if (event.key === "Enter" && filteredItems.length === 1) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + handleAdd(filteredItems[0]!.kind); + } + }} + /> + + + {filteredItems.map((item) => ( + handleAdd(item.kind)} /> + ))} + + ); }).withOptions({ defaultTitle: (t) => t("item.create.title"), @@ -23,20 +69,18 @@ export const ItemSelectModal = createModal(({ actions }) => { }); const WidgetItem = ({ - kind, - definition, - closeModal, + item, + onSelect, }: { - kind: WidgetKind; - definition: WidgetDefinition; - closeModal: () => void; + item: { + kind: WidgetKind; + name: string; + description: string; + icon: TablerIcon; + }; + onSelect: () => void; }) => { const t = useI18n(); - const { createItem } = useItemActions(); - const handleAdd = (kind: WidgetKind) => { - createItem({ kind }); - closeModal(); - }; return ( @@ -44,25 +88,16 @@ const WidgetItem = ({
- +
- {t(`widget.${kind}.name`)} + {item.name} - {t(`widget.${kind}.description`)} + {item.description}
-
diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 8072ad1ee..0f7f627c2 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -966,6 +966,7 @@ }, "create": { "title": "Choose item to add", + "search": "Filter items", "addToBoard": "Add to board" }, "moveResize": { From e695fb64d317ecb47b6844dc2a185502244f7db1 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 10 Jan 2025 14:47:19 +0100 Subject: [PATCH 212/262] fix(widget): set-options from widget components should be partial (#1882) --- apps/nextjs/src/components/board/items/item-content.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index b8aff4fb2..db9323c66 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -88,7 +88,14 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { isEditMode={isEditMode} boardId={board.id} itemId={item.id} - setOptions={updateOptions} + setOptions={(partialNewOptions) => + updateOptions({ + newOptions: { + ...partialNewOptions.newOptions, + ...options, + }, + }) + } {...dimensions} /> From 9a7e421f6827a5a0ac3627318e51537840295e72 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 18:42:40 +0000 Subject: [PATCH 213/262] fix(deps): update tiptap monorepo to v2.11.2 (#1913) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/widgets/package.json | 30 +- pnpm-lock.yaml | 498 +++++++++++++++++----------------- 2 files changed, 264 insertions(+), 264 deletions(-) diff --git a/packages/widgets/package.json b/packages/widgets/package.json index e8b8c1482..061c65334 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -44,21 +44,21 @@ "@mantine/core": "^7.15.3", "@mantine/hooks": "^7.15.3", "@tabler/icons-react": "^3.28.1", - "@tiptap/extension-color": "2.11.1", - "@tiptap/extension-highlight": "2.11.1", - "@tiptap/extension-image": "2.11.1", - "@tiptap/extension-link": "^2.11.1", - "@tiptap/extension-table": "2.11.1", - "@tiptap/extension-table-cell": "2.11.1", - "@tiptap/extension-table-header": "2.11.1", - "@tiptap/extension-table-row": "2.11.1", - "@tiptap/extension-task-item": "2.11.1", - "@tiptap/extension-task-list": "2.11.1", - "@tiptap/extension-text-align": "2.11.1", - "@tiptap/extension-text-style": "2.11.1", - "@tiptap/extension-underline": "2.11.1", - "@tiptap/react": "^2.11.1", - "@tiptap/starter-kit": "^2.11.1", + "@tiptap/extension-color": "2.11.2", + "@tiptap/extension-highlight": "2.11.2", + "@tiptap/extension-image": "2.11.2", + "@tiptap/extension-link": "^2.11.2", + "@tiptap/extension-table": "2.11.2", + "@tiptap/extension-table-cell": "2.11.2", + "@tiptap/extension-table-header": "2.11.2", + "@tiptap/extension-table-row": "2.11.2", + "@tiptap/extension-task-item": "2.11.2", + "@tiptap/extension-task-list": "2.11.2", + "@tiptap/extension-text-align": "2.11.2", + "@tiptap/extension-text-style": "2.11.2", + "@tiptap/extension-underline": "2.11.2", + "@tiptap/react": "^2.11.2", + "@tiptap/starter-kit": "^2.11.2", "clsx": "^2.1.1", "dayjs": "^1.11.13", "mantine-react-table": "2.0.0-beta.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 44f601f69..ad195b8c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -165,7 +165,7 @@ importers: version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1))(@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -186,16 +186,16 @@ importers: version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.693(typescript@5.7.3) + version: 11.0.0-rc.694(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.693(typescript@5.7.3) + version: 11.0.0-rc.694(typescript@5.7.3) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1770,50 +1770,50 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) '@tiptap/extension-color': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/extension-text-style@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))) '@tiptap/extension-highlight': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-image': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-link': - specifier: ^2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + specifier: ^2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/extension-table': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/extension-table-cell': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-table-header': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-table-row': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-task-item': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/extension-task-list': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-text-align': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-text-style': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/extension-underline': - specifier: 2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + specifier: 2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) '@tiptap/react': - specifier: ^2.11.1 - version: 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^2.11.2 + version: 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tiptap/starter-kit': - specifier: ^2.11.1 - version: 2.11.1 + specifier: ^2.11.2 + version: 2.11.2 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -3938,217 +3938,217 @@ packages: '@testcontainers/mysql@10.16.0': resolution: {integrity: sha512-GyxWqKfpY13lUrTEBmkKrAXyN7RZ//ntMdY/5Eyo/SukDM9LNGu3j5aNuDTGlYr4AEMJuzJ8CHxqUDAFGnCB/w==} - '@tiptap/core@2.11.1': - resolution: {integrity: sha512-PM+rW7QnDna4oO1KOcrSHtJ83O4nVt55uG+MRxcjaGGz/jKdRuIellhG2VSPkiO/m5wLgpC7/kCBq8WvYbOu9g==} + '@tiptap/core@2.11.2': + resolution: {integrity: sha512-Z437c/sQg31yrRVgLJVkQuih+7Og5tjRx6FE/zE47QgEayqQ9yXH0LrTAbPiY6IfY1X+f2A0h3e5Y/WGD6rC3Q==} peerDependencies: '@tiptap/pm': ^2.7.0 - '@tiptap/extension-blockquote@2.11.1': - resolution: {integrity: sha512-s/FkRAnyn/FXwx1vSibKAgycfR5OWNoBK/Xw4JLhQTvDzs0lylxa/nCjGNgXb/XVHs6a6zqGnUPBbMcqBpKFNg==} + '@tiptap/extension-blockquote@2.11.2': + resolution: {integrity: sha512-5XeU1o5UfjMCFX3AwgeErwDKlpUr5YPhta2tQqNsQUQ7QvumIdK/3apNT15/d8pySAjdAphDWEd/CZ2di5hq6A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bold@2.11.1': - resolution: {integrity: sha512-f4889tnVjAeuhyY5lwwbbL4IhUiwIA/fpdynEMaJUXy7SEGJJ3g5VpU3rOHuxU0T4dwuadThyE46fFc9qXEZzA==} + '@tiptap/extension-bold@2.11.2': + resolution: {integrity: sha512-pSls6UnKiPMm2c0m1viuZ0aFexxUmTRm17vDA2Gy5PhRm5qSsnHlSxyEuEcKNOi/rIx+oJehvG1oO4uI+kmCKg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-bubble-menu@2.11.1': - resolution: {integrity: sha512-M0MMTi+K9R9GU96dGuaKXIcGOaO2XLLpW1mcejcH2AXATfM0m30AvrIxNEOVSmKtXiuNwFUmt1bfv09AhK+tLg==} + '@tiptap/extension-bubble-menu@2.11.2': + resolution: {integrity: sha512-G+m7JLhe6SGcDugm8q3RXVLVnCm4t67FGNlOLRzq25VNgD7FDNwjgISp04W+qcJa0+Z5cbQt/4naUji5QEH97A==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-bullet-list@2.11.1': - resolution: {integrity: sha512-xIHK3pT04bkdJHOL8ktjJFDfDjWnAiogmHcFXarzIzJfrsVKsnXNMSxUr35ZmRzxCY6keopDa5uI/MOYtABj+A==} + '@tiptap/extension-bullet-list@2.11.2': + resolution: {integrity: sha512-zqZYT7lmmivEDEO+6w5bl5kV3UP1L2dw5mksyMGtxpvoDgbFHZ85+ron6SeHee8C7vJc6aIptc1p6NxIS5/l0A==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-code-block@2.11.1': - resolution: {integrity: sha512-wo5Kes/5OqPocfZasLRlwiPCu+OOlXI5KocLeLR114aHusTyLduX6Y4M7Gaiw78RkRRjc+xtIu18XFSsiaiYJg==} + '@tiptap/extension-code-block@2.11.2': + resolution: {integrity: sha512-O6gVfql3uFZNq9yaUDa98VgV58BqaUSeOUnhZwLzpB/4VlqzTyW6/kvFxhKcSp7f+GmrMQaV4PXRs+tZcq6EFw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-code@2.11.1': - resolution: {integrity: sha512-RhK5PDTUC05UM+Poflv+9FbJoYygm4eCXNoTQHL5UTcKBVrQh+IJtD7tNXquNUgJD3bO6CY9Qkna2HoPh1siLw==} + '@tiptap/extension-code@2.11.2': + resolution: {integrity: sha512-G8vvb17QAYQij3haz9RoDvArK1LSOZHqGzQ2dJ3/d0W5oqOyUrTnseN66fRZjWhBT3pns0VL2erwe/NBIqLOIw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-color@2.11.1': - resolution: {integrity: sha512-zc5J0jjEEYGCKWmu+tKE/m64n0121g2DU/IHRLKqbiVXtnZs1pV8isB0DzSPGgZCWfspfXua7R/YkIss1b5tPw==} + '@tiptap/extension-color@2.11.2': + resolution: {integrity: sha512-KUfASlEXrZeioBeSnpQWmCIiWtVaHDXJ+ZD0giSGSTQ4JwqdsIYZd8HpUrQjsfTkrqxW13zxQ1VklfvSPM8PQA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/extension-text-style': ^2.7.0 - '@tiptap/extension-document@2.11.1': - resolution: {integrity: sha512-GSn0v65u1qAsa+4xPempbXCmUbM1GQh6II+N1aiwXJh0xCkZDydx7jJyj+2QaN7duMXznbM894BKUMgcoOlRSg==} + '@tiptap/extension-document@2.11.2': + resolution: {integrity: sha512-/EZhIAN1x7DYgGM0xv7y7wo5ceBmHb0+rOIPuBerVFeTn+VcC3tST/Q64bdvcxgNe2E59Ti0CUdYEA51wc2u5Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-dropcursor@2.11.1': - resolution: {integrity: sha512-/TctJFSDxDMAjZQFpBY+YWt0fam0ZQjQ/KXJw44B3hRyXt7zxn09QTIEf3xFrooFGntLcjv/pqfvTVrJdpWTGA==} + '@tiptap/extension-dropcursor@2.11.2': + resolution: {integrity: sha512-HbXC9cMVZUY3kyKwbDtVH452CY1qlyLbIvTaN0+dxkFgcVeQZZtfIxU7DwMmqCDmDnsh0CdDqUgUvcXS2UQTwA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-floating-menu@2.11.1': - resolution: {integrity: sha512-hV5Xa7V19NQV4Am05bUf4YjGbmR31AJhW4KvM+DWsdWvj9mjWJZsKcP+bwsLntwNx99DLLuY1UYqXjagZMnrZw==} + '@tiptap/extension-floating-menu@2.11.2': + resolution: {integrity: sha512-DoFGgguE24rxPkZTD7sH3GFi9E3JKQGeGw0sFTwXx1ZFnyCtqbLcPOfT4THlvUEcixt68Mk48M1NTFVOGn/dyA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-gapcursor@2.11.1': - resolution: {integrity: sha512-VXgNHOJDXLUR7RSnd8+i6bBzetS7IAVCRnUBbl5wdSoKQfYXsLE/h8OPKMRlpdTghosVybVh18Z5Q+Cye1z7vw==} + '@tiptap/extension-gapcursor@2.11.2': + resolution: {integrity: sha512-ssJOrcc8dzlo5/Qq3+EixASDHTj3mqCyAv7Ohed1QYEYr+TsSpsTbjR0eMLjWHlgbt24TXL2Wr0ldjYCU8T1ZA==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-hard-break@2.11.1': - resolution: {integrity: sha512-7FoB3F0R9rPI05/jGzpHongju1oFswjIOXHq2Y35d8S1A6o05F87RcoqRHnGkm8m8oOVVEiIC9hs/fr41qVdoQ==} + '@tiptap/extension-hard-break@2.11.2': + resolution: {integrity: sha512-FNcXemfuwkiP4drZ9m90BC6GD4nyikfYHYEUyYuVd74Mm6w5vXpueWXus3mUcdT78xTs1XpQVibDorilLu7X8w==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-heading@2.11.1': - resolution: {integrity: sha512-6J5KmuUcLLxSA3Ip7O6wPOuhX6VsyS9Y2DxNrbL9iHpB0o5wbyqS5VfPwPKWJukRjjmMWoJ2sjv6nMFrnT6GQQ==} + '@tiptap/extension-heading@2.11.2': + resolution: {integrity: sha512-y/wAEXYB0a8y5WmSYGCIXAhus1ydudn0pokKIzT/OD00XutAVh14qOB5h/+m8iXwGU/UYMP7SUCtK82txZqwKA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-highlight@2.11.1': - resolution: {integrity: sha512-UfZacEum02Bc/G4LqxcjLle921Uy0AU4KUpn7uMe/KuSLvGG6hPOYJHq1CSU5etBMKBGtrdUEI/k4qacrdOqrQ==} + '@tiptap/extension-highlight@2.11.2': + resolution: {integrity: sha512-ztq2lGthTIY/zPYtdYrG7+0dc4R4abkZqDVAmLxkFcwjs/mejq7nMG7WM2Unn2cIGo96m8Ibz/UtoOPJDt/+/Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-history@2.11.1': - resolution: {integrity: sha512-jQSRYXDOAGBN+vr8OqBt3WW/VbGDmwr4NWgd6lz39Ms6Uzr1uc3Jr3cS/cxIFSZ8ydeIa9Y9idyzp/ywERGlRQ==} + '@tiptap/extension-history@2.11.2': + resolution: {integrity: sha512-BamS6YjKsETgP7msmm0oIpqmNSLJWbivm3XurR3uSUqJZYrQo1Fv+No4HAR7eAACxoOnYGcDmYsrombRVs9lxw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-horizontal-rule@2.11.1': - resolution: {integrity: sha512-YHWD0M9QVlpNMUIZVNtl+nBpCYGkMOPPyrBne7lm7aQx6yPb789MbVcPtm5UBVEBpNglwkZpz2076IB9lr8vYA==} + '@tiptap/extension-horizontal-rule@2.11.2': + resolution: {integrity: sha512-R7MkTQzxkBy0bXJfq6L+6ax01/hmTEUvPPoyjwDSfU1Ktc1ihBJGUdTNtohT1KoQGQYt2d9khBohVspsXoCmFw==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-image@2.11.1': - resolution: {integrity: sha512-aZEbZbum1uGmlR7QYQ16q0b3jr5DO/4LG+yZF8oj8tUQRmfpDnIOCKOVqUMDM2ixhymKBmH+dvKiIU/yQVZtNg==} + '@tiptap/extension-image@2.11.2': + resolution: {integrity: sha512-Ag+Arj6sclTqhvR+v5I2UD5e2lsWTcXLj0aS2aEsfGpytltk6rcLj6iDjx/SmJrE1BN8ognJsdzmFdZF/rNLpg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-italic@2.11.1': - resolution: {integrity: sha512-sz97E3gi/edwrot58RII1RRhOUgeIzPXiVnrFn5GJjI9TRpPXKuHkadiHeRiiyrp8/TudhhZPrRdxIuuBYRDcQ==} + '@tiptap/extension-italic@2.11.2': + resolution: {integrity: sha512-652oTa+iDiR7sMtmePSy+303HSNJxvxmV/6IvQoMdffJU0oPiWcWnCCL0qrWgtHh15dplj36EtB/znENWbvVOw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-link@2.11.1': - resolution: {integrity: sha512-f1Q580h8icxpfZiABqfDO61nRNUjm3tZv5I4nX/02AblurYOWeWQySgrc7BJdFxJAPqUlvdSr948Uniyyttb2w==} + '@tiptap/extension-link@2.11.2': + resolution: {integrity: sha512-Mbre+JotLMUg9jdWWrwIReiRVMkA2kMzmtD2Aqy/n5P+wuI84898qIZSkhPEzDOGzp0mluUO/iGsz0NdTto/JQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-list-item@2.11.1': - resolution: {integrity: sha512-WaJqJpdFPREZT7Dtbs2v7VVdp1+iTQAAZuVAPyMyMgVXbpfKizykuj/aMDrYEPBiw3vTuptG44se0d9xZkY8sA==} + '@tiptap/extension-list-item@2.11.2': + resolution: {integrity: sha512-cxysDCvw45bem53qLZtTCkle1pttO4Y/FGqYm1hl66ol3cZsuLbjpOb4aDB6wRhyd701Ws6MjOYM+cZsmtTNpw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-ordered-list@2.11.1': - resolution: {integrity: sha512-DDrwOFhz3LYBdqhO1beYngLKZmhGMTRQGQ6HOEXeWs23zmHcuGLO7bpOY9CVDUQ6crAtdTbpzcByYz/Bq2blxA==} + '@tiptap/extension-ordered-list@2.11.2': + resolution: {integrity: sha512-TR8OqwKkQ0OCp40V9hcRJUcO1PSzCYWXy0mvW351lOYO8D6uE+1ouVkEV9qjXBC30sVCnQykSp/FR9UjsIuiVw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-paragraph@2.11.1': - resolution: {integrity: sha512-eI1gKdvMje2tqCI8BdqKauvJT/oqPIuumF/d8MTtvp4CTbYw3/+BNwtP6svWmctfK9vZIH4Ld7URm7ZaeuC2vg==} + '@tiptap/extension-paragraph@2.11.2': + resolution: {integrity: sha512-iydTjeZbPJuqctOaAx7QebLPvz9J/hBxPptuhe4GZmqInknAk7+SFJagYeGNb14wfXKOvDZ9DMqv6mBiqSA90Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-strike@2.11.1': - resolution: {integrity: sha512-sVSN3H5K8eOmfYcxcb/VUtBD+Qtrk/aJ32YzOAThm11MN0H6EJk+RctxNw3IbTRuDkGeQPWsGgCeYT7c12ymhw==} + '@tiptap/extension-strike@2.11.2': + resolution: {integrity: sha512-n/rznmhqFlENGSlFY9t3pWnWzSmvDpUj3sjVhdpYteis+OCzabN9+c5KdQTBPMjtwRuRleQiKWnHmxvif0heEg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-cell@2.11.1': - resolution: {integrity: sha512-hOmg6j5SEDx/ifImywRzhNfzBXM7WC+/O6VYnvpLiuTCCcqL7c8mK8chuoOajfNoJoOp9o2WfRogdGitrPzXTg==} + '@tiptap/extension-table-cell@2.11.2': + resolution: {integrity: sha512-m//QPQ/GN4mMuj2/PcT2HmUGF3bFk41zN3hDcOmfrszClsmcEVIViApVr7U6HqlIq4TFAFDLXtIK79FW9ByIDg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-header@2.11.1': - resolution: {integrity: sha512-GUc42FATWYvsb7CUx8Njta7DvkSl9i/TRw+FFVkTgKtz74uj/PhjuO59gNjVQqLThmoVhtVjxlcPuJOeyp0T/w==} + '@tiptap/extension-table-header@2.11.2': + resolution: {integrity: sha512-y2MCki8jZWT/cM4eG/3sPwUvtsj5d/+7RibbhjWnz1u42XyPoHKTZr9ZqUOAJ67vwB8LF8n8qb7D1YDqvDyA9Q==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table-row@2.11.1': - resolution: {integrity: sha512-GnPyOE7XUTzG4Weqjn4n/LGgy+CCtgMAWZdXr/n4ufuox7CaPgFa0WoKJPNJj0c3rLLyKdZ9qwnPFXaA6G/udA==} + '@tiptap/extension-table-row@2.11.2': + resolution: {integrity: sha512-8eCWoaijS6JD0gJOsqg8BhcTNW6I1uvq6JwnAnpv3lznHj19Q5mevC7ixuFRe9Wk/qiYZaCBXk6NcpzaqB8o/g==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-table@2.11.1': - resolution: {integrity: sha512-bTpj+Gkzg3rHBJ630fAZa/Dyxf7OZqv8NhRZJfDfqB/ifRe7LqLAd9fx7MXXgvkb2oUmW/u6oTJrltP76m+QWg==} + '@tiptap/extension-table@2.11.2': + resolution: {integrity: sha512-s3pVORRDrm1AHuENhvuONpI4KtLLGJbg8QLxO/a7qeScAjHR0V9lOqdpweNfPgiMwj5zMV45tGF/tweM4x2fJQ==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-item@2.11.1': - resolution: {integrity: sha512-XIcsANkz+aHGRSX8TL9dTM5MuhwtndRSb6ReDvI3Tnd9lhpyurxxjVM3zuXXFVs/8hVWRiYlhs7afbSmq0DF+g==} + '@tiptap/extension-task-item@2.11.2': + resolution: {integrity: sha512-TvEfOq81lg7QcaP6VLolSEFQVoop4v0PxWZuzmtpOSywrdelPtLE0PuStfu0FIJIrw1V7axEwoapPCaVwTM8Mg==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tiptap/extension-task-list@2.11.1': - resolution: {integrity: sha512-UWBDJYLbUdUMvhixS27l03LmVGB4DDuyjE0P9mRtonpDuVbakNL0cmSetD9fMJ6XobWY4TK+wuTUKxFjKFVugA==} + '@tiptap/extension-task-list@2.11.2': + resolution: {integrity: sha512-Wy4EYZQJqt/Z6oTlZ+RvaPrDivkyyVuca5cOwcGavrFsUtqvEv/QKxvAl59fsRgofYW6QsfK72K2GpppBBlVUw==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-align@2.11.1': - resolution: {integrity: sha512-foXtqUh82yb/7n9RwUw/vIU4FK3aL3Udd3g1pfM/HSrbyAuSID1A434Xu7QXRfEUXDxiJWxJvq2nL0XgbLxnew==} + '@tiptap/extension-text-align@2.11.2': + resolution: {integrity: sha512-0QfjepmK+iHubjTsJshuhSZvF54M+vaqpReDraf9NKVx+WkiZ+mxJX4S5nZwoFsp21sEz7Q7z03+uXgb/yj7mQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text-style@2.11.1': - resolution: {integrity: sha512-f3aGt7TmZf6Lz0nH578rOUNntywzQIe7DiScjrAg2oKbujWilZ7bmXJjDBCWuHRQKl6ZRilIeZw8JfRX4YlVIw==} + '@tiptap/extension-text-style@2.11.2': + resolution: {integrity: sha512-RAa7BTwEOJRZN3EB2lg03KXyu7JC/Ce96cerh3D0Fo78yrtKOArPaiVHoTki6ZEIG43ccHEit1PPjMYxivPPeg==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-text@2.11.1': - resolution: {integrity: sha512-YZ26osxxXINEX1fOJ6MWJB3TYLmYYUf/4DI3py+8rstQMbIAg8Jhm02j3gewbHqLZiBdpFuFNKSNyBpaMm9gHA==} + '@tiptap/extension-text@2.11.2': + resolution: {integrity: sha512-fJZeKYM5jeJ7NpS3FWLnC/NAvg+mZNbcTaRgXMo5ljBCgiMcYHhYg9p/RHk4SeICZBBpR9WSSZXHMACd9CbJiA==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/extension-underline@2.11.1': - resolution: {integrity: sha512-h74VbUu6N+Q7WQnB/fqJ9ZR5WRl4i7NntkJs8iFry6lv93EFKVfjFNRig1up1yyaGUgbg+gHTNG/eTqgd9Wsjg==} + '@tiptap/extension-underline@2.11.2': + resolution: {integrity: sha512-Gq7hfV3D/3E1zoE6JXSYZ3boKfbjebFu7IuQZ6w6QSS/IkGN8c6kW+WtkhOKN3jV7Z5uF5KIVp3XCqNIwChWNQ==} peerDependencies: '@tiptap/core': ^2.7.0 - '@tiptap/pm@2.11.1': - resolution: {integrity: sha512-V4PxHw9cBXPBJSJZFEcp7vyn84swcVGIDiRiLlw47UySIgCSdtUfNhj5tgVg/zV5TrwMRDXfc1J40tEwUVtyDg==} + '@tiptap/pm@2.11.2': + resolution: {integrity: sha512-lNOMFRcD0mGy7Hf8tFMHW/fnglvq3dA0grs0QrSY4cHyYbH9BHtQjLMDceczXdXbXZq7nEqC40UBWNnqtaclpw==} - '@tiptap/react@2.11.1': - resolution: {integrity: sha512-1zwh6oNtp4ujFdJIEfYYjtSpwe1Xijk8DcHUtwDEn+FsxzX7HSh/fjWNnFZNtwrbWav35sSyCNTqv6bHrbruGw==} + '@tiptap/react@2.11.2': + resolution: {integrity: sha512-fhrfgXQwyc34L6ju+zzNGMa6J94+W20yww0BHyrqojUzjpYskVdO7/37h4OBfFGEhrAhLEXXDxRZcrNPtBf86A==} peerDependencies: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tiptap/starter-kit@2.11.1': - resolution: {integrity: sha512-lNyuidSV37dWPGILwFBk9J5wv2tLkEZfoDpP3EyqGfhaJ3K/vNSMmajULN205kagOzdqlIyDepK3vc10NU+7UQ==} + '@tiptap/starter-kit@2.11.2': + resolution: {integrity: sha512-FUIblP9BSmBzskf/aX7AIcUK5XP5Gi/VqUqm5evCkzlR1FrggLoy+vY+CX0me4oE/WYk4KAgIRXkE9tcbwotQA==} '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.693': - resolution: {integrity: sha512-w442Zd2DQgGsortb5sBKu6aI6sH5fmnC+b+k+KvslAC+8bwtWTtvPo8V+OwSpDBJAE7LF0xpmAlC6y4/NyeOvg==} + '@trpc/client@11.0.0-rc.694': + resolution: {integrity: sha512-e3HwqeNT1VkIn1juC8dwY2a/gWuSWZw6jbYGzVInib45LuIhUKA0Bokky1KRbDGCnwC4Ii2l3wa1Zgd3Fy0/qA==} peerDependencies: - '@trpc/server': 11.0.0-rc.693+c3a9b2102 + '@trpc/server': 11.0.0-rc.694+3d80a2221 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.693': - resolution: {integrity: sha512-zQxNjezeIo5H4rECeGsPdeA8vSeXZtzM9OqDXB6OUEd9fqKLS5gKSgf3v7T8YY7Dsob8Bs6RflsU/SK0oA0KYw==} + '@trpc/next@11.0.0-rc.694': + resolution: {integrity: sha512-HlFgcS0UyCbkQPUNBMZKvLjFWmGQZhQszbp6JUJRLLEPe4sSpDThyq4hyPI99a2B/OwaUeBvL9HqcRRekbNniw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.693+c3a9b2102 - '@trpc/react-query': 11.0.0-rc.693+c3a9b2102 - '@trpc/server': 11.0.0-rc.693+c3a9b2102 + '@trpc/client': 11.0.0-rc.694+3d80a2221 + '@trpc/react-query': 11.0.0-rc.694+3d80a2221 + '@trpc/server': 11.0.0-rc.694+3d80a2221 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4159,18 +4159,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.693': - resolution: {integrity: sha512-Yr58CWvxwYTasWd2PzjBBYUrw2YZCoW70e9MStWGmZkV74HQpLovNOJcdpbDgkjqUbCkcRxcmb9Uqj7b8ByB5g==} + '@trpc/react-query@11.0.0-rc.694': + resolution: {integrity: sha512-P9611TGBIyO5UQUG7EyrJ7QA0lS+zgdvpO1PAyypPcxHfByRhJ6baM9Y1XIVqENSgAj94WtW5tNRAOjYYABNAA==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.693+c3a9b2102 - '@trpc/server': 11.0.0-rc.693+c3a9b2102 + '@trpc/client': 11.0.0-rc.694+3d80a2221 + '@trpc/server': 11.0.0-rc.694+3d80a2221 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.693': - resolution: {integrity: sha512-0PTZP6fK/1giuGBHKVlY5W9iQtDWTdJ7HyA7bSx9Lod1c9beKf86MtLKqgh0/ItkAVzSqyA8GxXZi745Ja8++Q==} + '@trpc/server@11.0.0-rc.694': + resolution: {integrity: sha512-LkgryLrKHWP0bk7uFPDeZuUKMP3o7zXx9hzTZbIK263ZARV41urPVFciwBv0cvASRc4ylKJYqiic71+Xv+awSg==} peerDependencies: typescript: '>=5.7.2' @@ -10818,12 +10818,12 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1))(@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) - '@tiptap/extension-link': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/react': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tiptap/extension-link': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/react': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11828,157 +11828,157 @@ snapshots: transitivePeerDependencies: - supports-color - '@tiptap/core@2.11.1(@tiptap/pm@2.11.1)': + '@tiptap/core@2.11.2(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/pm': 2.11.1 + '@tiptap/pm': 2.11.2 - '@tiptap/extension-blockquote@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-blockquote@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-bold@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-bold@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-bubble-menu@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-bubble-menu@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 tippy.js: 6.3.7 - '@tiptap/extension-bullet-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-bullet-list@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-code-block@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-code-block@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-code@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-code@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-color@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)))': + '@tiptap/extension-color@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/extension-text-style@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-text-style': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/extension-text-style': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) - '@tiptap/extension-document@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-document@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-dropcursor@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-dropcursor@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-floating-menu@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-floating-menu@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 tippy.js: 6.3.7 - '@tiptap/extension-gapcursor@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-gapcursor@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-hard-break@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-hard-break@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-heading@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-heading@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-highlight@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-highlight@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-history@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-history@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-horizontal-rule@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-horizontal-rule@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-image@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-image@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-italic@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-italic@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-link@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 linkifyjs: 4.2.0 - '@tiptap/extension-list-item@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-list-item@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-ordered-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-ordered-list@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-paragraph@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-paragraph@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-strike@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-strike@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-table-cell@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-table-cell@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-table-header@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-table-header@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-table-row@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-table-row@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-table@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-table@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-task-item@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)': + '@tiptap/extension-task-item@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 - '@tiptap/extension-task-list@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-task-list@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-text-align@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-text-align@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-text-style@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-text-style@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-text@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-text@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/extension-underline@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))': + '@tiptap/extension-underline@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) - '@tiptap/pm@2.11.1': + '@tiptap/pm@2.11.2': dependencies: prosemirror-changeset: 2.2.1 prosemirror-collab: 1.3.1 @@ -11999,71 +11999,71 @@ snapshots: prosemirror-transform: 1.10.2 prosemirror-view: 1.37.0 - '@tiptap/react@2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-bubble-menu': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-floating-menu': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/extension-bubble-menu': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-floating-menu': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/pm': 2.11.2 '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) use-sync-external-store: 1.2.2(react@19.0.0) - '@tiptap/starter-kit@2.11.1': + '@tiptap/starter-kit@2.11.2': dependencies: - '@tiptap/core': 2.11.1(@tiptap/pm@2.11.1) - '@tiptap/extension-blockquote': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-bold': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-bullet-list': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-code': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-code-block': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-document': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-dropcursor': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-gapcursor': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-hard-break': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-heading': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-history': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-horizontal-rule': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1))(@tiptap/pm@2.11.1) - '@tiptap/extension-italic': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-list-item': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-ordered-list': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-paragraph': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-strike': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-text': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/extension-text-style': 2.11.1(@tiptap/core@2.11.1(@tiptap/pm@2.11.1)) - '@tiptap/pm': 2.11.1 + '@tiptap/core': 2.11.2(@tiptap/pm@2.11.2) + '@tiptap/extension-blockquote': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-bold': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-bullet-list': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-code': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-code-block': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-document': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-dropcursor': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-gapcursor': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-hard-break': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-heading': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-history': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-horizontal-rule': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) + '@tiptap/extension-italic': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-list-item': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-ordered-list': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-paragraph': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-strike': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-text': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/extension-text-style': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2)) + '@tiptap/pm': 2.11.2 '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.693(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.693(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.693(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.694(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -17699,9 +17699,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.693(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.693(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 From f8c3dab7f995f045cc660ee0f05150fd8b250527 Mon Sep 17 00:00:00 2001 From: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:13:50 +0000 Subject: [PATCH 214/262] chore(release): 1.0.0-beta.12 [skip ci] --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14e353ebe..159aeda51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ +## [1.0.0-beta.12](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2025-01-10) + +### Features + +* **app:** add search and pagination ([#1860](https://github.com/homarr-labs/homarr/issues/1860)) ([ccb19e0](https://github.com/homarr-labs/homarr/commit/ccb19e06c192029a81c851900982d52b045185a6)) +* **auth:** add env variable for oidc-name-attribute-overwrite ([#1850](https://github.com/homarr-labs/homarr/issues/1850)) ([c349bf8](https://github.com/homarr-labs/homarr/commit/c349bf83714739ca1bc6057f2d43c9e3964fa205)) +* **board:** add board duplication ([#1856](https://github.com/homarr-labs/homarr/issues/1856)) ([49d10f7](https://github.com/homarr-labs/homarr/commit/49d10f7ad0f58b577ed72c2a46a062af263ff225)) +* docker add to homarr ([#1825](https://github.com/homarr-labs/homarr/issues/1825)) ([64cc078](https://github.com/homarr-labs/homarr/commit/64cc078b095e64edca17e07a09a4f5c340665f84)) +* **icons:** add upload button to icon picker ([#1859](https://github.com/homarr-labs/homarr/issues/1859)) ([1e9098d](https://github.com/homarr-labs/homarr/commit/1e9098d052801fe7d53ce15e9f22ed89de04d644)) +* **items:** add search to selection ([#1887](https://github.com/homarr-labs/homarr/issues/1887)) ([62da953](https://github.com/homarr-labs/homarr/commit/62da953356ff76694ddc50980a2b879a01bcbdd6)) +* **spotlight:** add default search engine ([#1807](https://github.com/homarr-labs/homarr/issues/1807)) ([65befa2](https://github.com/homarr-labs/homarr/commit/65befa22ba91c36a3734ac6dc027175dc9fca892)) + +### Bug Fixes + +* **deps:** update dependency @tabler/icons-react to ^3.27.1 ([#1875](https://github.com/homarr-labs/homarr/issues/1875)) ([e46b1c4](https://github.com/homarr-labs/homarr/commit/e46b1c49f9bb1320f82b2de0585f7e2c7bc72c54)) +* **deps:** update dependency @tabler/icons-react to ^3.28.1 ([#1891](https://github.com/homarr-labs/homarr/issues/1891)) ([ffdc8d3](https://github.com/homarr-labs/homarr/commit/ffdc8d34960dea0172c50a1d93a4cd14997b13ac)) +* **deps:** update dependency better-sqlite3 to ^11.7.2 ([#1858](https://github.com/homarr-labs/homarr/issues/1858)) ([1f0116d](https://github.com/homarr-labs/homarr/commit/1f0116d725d76845df4b9cce74ef87134edc627a)) +* **deps:** update dependency dockerode to ^4.0.3 ([#1854](https://github.com/homarr-labs/homarr/issues/1854)) ([92f4f94](https://github.com/homarr-labs/homarr/commit/92f4f9421e8f693e6546716f5f04922161e29cdc)) +* **deps:** update dependency glob to ^11.0.1 ([#1908](https://github.com/homarr-labs/homarr/issues/1908)) ([7d1b1d8](https://github.com/homarr-labs/homarr/commit/7d1b1d83429acaa9846479a7a5c48092d4614b75)) +* **deps:** update dependency ldapts to v7.3.1 ([#1896](https://github.com/homarr-labs/homarr/issues/1896)) ([a69c64d](https://github.com/homarr-labs/homarr/commit/a69c64d88d57293eba8adbdf88ce694194268492)) +* **deps:** update dependency mantine-react-table to v2.0.0-beta.8 ([#1902](https://github.com/homarr-labs/homarr/issues/1902)) ([86a9259](https://github.com/homarr-labs/homarr/commit/86a925939cb8ef92fe0bca5a762e688887916b04)) +* **deps:** update dependency octokit to ^4.1.0 ([#1898](https://github.com/homarr-labs/homarr/issues/1898)) ([3860af3](https://github.com/homarr-labs/homarr/commit/3860af31b64e8a74e7e1c91470a9de5450f9e5e7)) +* **deps:** update dependency sass to ^1.83.1 ([#1852](https://github.com/homarr-labs/homarr/issues/1852)) ([812469d](https://github.com/homarr-labs/homarr/commit/812469db827badee63c73a8c819922c24fdefd13)) +* **deps:** update dependency trpc-to-openapi to ^2.1.2 ([#1900](https://github.com/homarr-labs/homarr/issues/1900)) ([8edf922](https://github.com/homarr-labs/homarr/commit/8edf922e3050ba9d8c951180ae68f628067c190e)) +* **deps:** update dependency typescript-eslint to ^8.19.1 ([#1874](https://github.com/homarr-labs/homarr/issues/1874)) ([be4e753](https://github.com/homarr-labs/homarr/commit/be4e75321a0a6a05c6ac6c4ba97ffb5068aed4aa)) +* **deps:** update dependency undici to v7.2.1 ([#1904](https://github.com/homarr-labs/homarr/issues/1904)) ([b034dcb](https://github.com/homarr-labs/homarr/commit/b034dcbb11017a016e30db0e2bf8c1a0765174ca)) +* **deps:** update mantine monorepo to ^7.15.3 ([#1880](https://github.com/homarr-labs/homarr/issues/1880)) ([7807b28](https://github.com/homarr-labs/homarr/commit/7807b28d24327db89514da533cb06f4c296b579d)) +* **deps:** update nextjs monorepo to ^15.1.4 ([#1885](https://github.com/homarr-labs/homarr/issues/1885)) ([f4f02ca](https://github.com/homarr-labs/homarr/commit/f4f02ca539609705b7192c4327272f88415e1594)) +* **deps:** update nextjs monorepo to v15 (major) ([#1844](https://github.com/homarr-labs/homarr/issues/1844)) ([d985525](https://github.com/homarr-labs/homarr/commit/d98552540a9eb3c24ba92a490f921c2b1911b1f6)) +* **deps:** update tanstack-query monorepo to ^5.62.14 ([#1846](https://github.com/homarr-labs/homarr/issues/1846)) ([2358f6f](https://github.com/homarr-labs/homarr/commit/2358f6f5ebf4bbb9eb4ccd91990f967d9cc44e3b)) +* **deps:** update tanstack-query monorepo to ^5.62.15 ([#1853](https://github.com/homarr-labs/homarr/issues/1853)) ([53f07f8](https://github.com/homarr-labs/homarr/commit/53f07f87b8d600ce57fa94d2ffb4d6f0105102d0)) +* **deps:** update tanstack-query monorepo to ^5.62.16 ([#1877](https://github.com/homarr-labs/homarr/issues/1877)) ([eb424d7](https://github.com/homarr-labs/homarr/commit/eb424d757b7934d5a6bce9de943528f17e678b80)) +* **deps:** update tanstack-query monorepo to ^5.63.0 ([#1893](https://github.com/homarr-labs/homarr/issues/1893)) ([e33e0a4](https://github.com/homarr-labs/homarr/commit/e33e0a4d2bd91d610c6d29522a98cae8b9953478)) +* **deps:** update tiptap monorepo to v2.11.1 ([#1909](https://github.com/homarr-labs/homarr/issues/1909)) ([dc3d27e](https://github.com/homarr-labs/homarr/commit/dc3d27e1a1b1611c1997235bf51daf00e3d1f239)) +* **deps:** update tiptap monorepo to v2.11.2 ([#1913](https://github.com/homarr-labs/homarr/issues/1913)) ([9a7e421](https://github.com/homarr-labs/homarr/commit/9a7e421f6827a5a0ac3627318e51537840295e72)) +* **dns-hole-summary:** calculation for domains and percentage for multiple integrations ([#1894](https://github.com/homarr-labs/homarr/issues/1894)) ([546c824](https://github.com/homarr-labs/homarr/commit/546c824888a2a6909b831b69ce1a4e283099bda5)) +* **iframe:** remove second scrollbar from item card ([#1828](https://github.com/homarr-labs/homarr/issues/1828)) ([bf12944](https://github.com/homarr-labs/homarr/commit/bf1294476867fabc896f94c9326a1acfe6bffa50)) +* **security:** restrict link protocols to http and https ([#1888](https://github.com/homarr-labs/homarr/issues/1888)) ([a12dd10](https://github.com/homarr-labs/homarr/commit/a12dd102692ee237e9695bd852dc894a2856b30e)) +* **translation:** query parameter in search with escaped ([#1895](https://github.com/homarr-labs/homarr/issues/1895)) ([80c02ef](https://github.com/homarr-labs/homarr/commit/80c02ef9f24cec74025a0fcc983c6db37f7fd457)) +* **widget:** set-options from widget components should be partial ([#1882](https://github.com/homarr-labs/homarr/issues/1882)) ([e695fb6](https://github.com/homarr-labs/homarr/commit/e695fb64d317ecb47b6844dc2a185502244f7db1)) + ## [1.0.0-beta.11](https://github.com/homarr-labs/homarr/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2025-01-03) ### Features diff --git a/package.json b/package.json index 166f9028f..22239b736 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homarr", - "version": "1.0.0-beta.11", + "version": "1.0.0-beta.12", "private": true, "scripts": { "build": "cross-env CI=true turbo build", From e502fbc533baf5a7ee42edc7f18598e8ced70107 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 21:54:40 +0000 Subject: [PATCH 215/262] chore(deps): update dependency eslint to ^9.18.0 (#1916) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/cli/package.json | 2 +- packages/common/package.json | 2 +- packages/cron-job-runner/package.json | 2 +- packages/cron-job-status/package.json | 2 +- packages/cron-jobs-core/package.json | 2 +- packages/cron-jobs/package.json | 2 +- packages/db/package.json | 2 +- packages/definitions/package.json | 2 +- packages/form/package.json | 2 +- packages/icons/package.json | 2 +- packages/integrations/package.json | 2 +- packages/log/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 2 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 2 +- packages/old-schema/package.json | 2 +- packages/ping/package.json | 2 +- packages/redis/package.json | 2 +- packages/request-handler/package.json | 2 +- packages/server-settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 339 ++++++++++++------------ tooling/eslint/package.json | 2 +- 34 files changed, 204 insertions(+), 201 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index d43f482d0..d5258941e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -88,7 +88,7 @@ "@types/react-dom": "19.0.2", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "node-loader": "^2.1.0", "prettier": "^3.4.2", "typescript": "^5.7.3" diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 1ef0e5267..ca3126b1e 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -46,7 +46,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node": "^22.10.5", "dotenv-cli": "^8.0.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.3" diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 32220cd6d..71c291800 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.5.13", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/analytics/package.json b/packages/analytics/package.json index ede56c834..7d454f655 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/api/package.json b/packages/api/package.json index 70e50144a..ca541bd0c 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -54,7 +54,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.34", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/auth/package.json b/packages/auth/package.json index d5db197f7..e94c2cacf 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -45,7 +45,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/cli/package.json b/packages/cli/package.json index 3286f23ec..6fbd90a33 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index a85a7d5f5..b9758e9ff 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -36,7 +36,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index b642f94e4..b86fcf21d 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index 6143cd192..2b84ecdc2 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index d40a59fb2..d9286fcb0 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 3791dab57..217ff58e5 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -45,7 +45,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index 4a666265f..a33036b75 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -58,7 +58,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.12", "dotenv-cli": "^8.0.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.3" diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 151d26d84..8fe5d1ee6 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/form/package.json b/packages/form/package.json index fd34708fc..85fa287f2 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index 6dcaf8b77..d213eb733 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 69052c2da..9644991fb 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -42,7 +42,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/log/package.json b/packages/log/package.json index 52735d96c..4bbf90ad1 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 6a3cad5cd..f79101064 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -43,7 +43,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index eb3fd39b9..d69e03619 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 7fc6c70d3..a3cc00dda 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index c8d7c7d02..7d27af588 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -52,7 +52,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/adm-zip": "0.5.7", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index afdbd2a93..596778f36 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index bf31c713a..b04faef1b 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index 4627813dc..f3024dddf 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index aa6900035..36a21b66d 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -37,7 +37,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index 812e2af4f..5c1f86c6f 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index f4bae441b..695c636ce 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -46,7 +46,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index 3217e0e3b..d6361d77b 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -41,7 +41,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 9e2b87db8..7ab4d7c97 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -43,7 +43,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index 3706fe60e..a26e0c598 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 061c65334..771594400 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -72,7 +72,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad195b8c6..012c9065b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -186,16 +186,16 @@ importers: version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.694(typescript@5.7.3) + version: 11.0.0-rc.695(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -294,8 +294,8 @@ importers: specifier: ^9.1.2 version: 9.1.2 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 node-loader: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) @@ -382,8 +382,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -443,8 +443,8 @@ importers: specifier: ^8.5.13 version: 8.5.13 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -480,8 +480,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.694(typescript@5.7.3) + version: 11.0.0-rc.695(typescript@5.7.3) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -583,8 +583,8 @@ importers: specifier: ^3.3.34 version: 3.3.34 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -656,8 +656,8 @@ importers: specifier: 0.9.0 version: 0.9.0 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -693,8 +693,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -727,8 +727,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -755,8 +755,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -777,8 +777,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -850,8 +850,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -878,8 +878,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -945,8 +945,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -973,8 +973,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1004,8 +1004,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1032,8 +1032,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1090,8 +1090,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1118,8 +1118,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1152,8 +1152,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1219,8 +1219,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1247,8 +1247,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1329,8 +1329,8 @@ importers: specifier: 0.5.7 version: 0.5.7 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1354,8 +1354,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1379,8 +1379,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1416,8 +1416,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1465,8 +1465,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1490,8 +1490,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1563,8 +1563,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1609,8 +1609,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1670,8 +1670,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1701,8 +1701,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1849,8 +1849,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1862,25 +1862,25 @@ importers: version: 15.1.4 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.17.0) + version: 9.1.0(eslint@9.18.0) eslint-config-turbo: specifier: ^2.3.3 - version: 2.3.3(eslint@9.17.0) + version: 2.3.3(eslint@9.18.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0) + version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.17.0) + version: 6.10.2(eslint@9.18.0) eslint-plugin-react: specifier: ^7.37.3 - version: 7.37.3(eslint@9.17.0) + version: 7.37.3(eslint@9.18.0) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.1.0(eslint@9.17.0) + version: 5.1.0(eslint@9.18.0) typescript-eslint: specifier: ^8.19.1 - version: 8.19.1(eslint@9.17.0)(typescript@5.7.3) + version: 8.19.1(eslint@9.18.0)(typescript@5.7.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -1889,8 +1889,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.17.0 - version: 9.17.0 + specifier: ^9.18.0 + version: 9.18.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -2883,24 +2883,24 @@ packages: resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.9.0': - resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.2.0': resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.3': - resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@extractus/feed-extractor@7.1.3': @@ -4136,19 +4136,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.694': - resolution: {integrity: sha512-e3HwqeNT1VkIn1juC8dwY2a/gWuSWZw6jbYGzVInib45LuIhUKA0Bokky1KRbDGCnwC4Ii2l3wa1Zgd3Fy0/qA==} + '@trpc/client@11.0.0-rc.695': + resolution: {integrity: sha512-PDLTGY4FYU0aJAHHJYGdmn6ePlkZcqX6FjyZodmpSlYrIZG8r21J6X4+nebFnsIUetxktmcmlJziUoEFYVH56g==} peerDependencies: - '@trpc/server': 11.0.0-rc.694+3d80a2221 + '@trpc/server': 11.0.0-rc.695+01bdfa997 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.694': - resolution: {integrity: sha512-HlFgcS0UyCbkQPUNBMZKvLjFWmGQZhQszbp6JUJRLLEPe4sSpDThyq4hyPI99a2B/OwaUeBvL9HqcRRekbNniw==} + '@trpc/next@11.0.0-rc.695': + resolution: {integrity: sha512-aR4Tpq1Y+VtkzPRcxTy3UWjKyZEvb8kef8OAs56nIr92c9Hl/VGkF3zX92dfzRJ+kGqSqoY9HymPZTyX9WTNXQ==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.694+3d80a2221 - '@trpc/react-query': 11.0.0-rc.694+3d80a2221 - '@trpc/server': 11.0.0-rc.694+3d80a2221 + '@trpc/client': 11.0.0-rc.695+01bdfa997 + '@trpc/react-query': 11.0.0-rc.695+01bdfa997 + '@trpc/server': 11.0.0-rc.695+01bdfa997 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4159,18 +4159,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.694': - resolution: {integrity: sha512-P9611TGBIyO5UQUG7EyrJ7QA0lS+zgdvpO1PAyypPcxHfByRhJ6baM9Y1XIVqENSgAj94WtW5tNRAOjYYABNAA==} + '@trpc/react-query@11.0.0-rc.695': + resolution: {integrity: sha512-3+dj2oy2BvE+vqRJyEvL/JMTPDgSWMfQSxaG4p/TV8FrQFgx6CXUzfMzxyNChzQQ/fDrXIrZcNqsu8vK3MtarA==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.694+3d80a2221 - '@trpc/server': 11.0.0-rc.694+3d80a2221 + '@trpc/client': 11.0.0-rc.695+01bdfa997 + '@trpc/server': 11.0.0-rc.695+01bdfa997 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.694': - resolution: {integrity: sha512-LkgryLrKHWP0bk7uFPDeZuUKMP3o7zXx9hzTZbIK263ZARV41urPVFciwBv0cvASRc4ylKJYqiic71+Xv+awSg==} + '@trpc/server@11.0.0-rc.695': + resolution: {integrity: sha512-r8e7shX/uoGWSDTRYoy6LmbgXYIlaWK6BDi9PyOCkoh67+ZNOVFSmb3c4XAwyhp3l2QhtjiCQXGxDPFetzP0mA==} peerDependencies: typescript: '>=5.7.2' @@ -5887,8 +5887,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -9881,7 +9881,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10469,9 +10469,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.17.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.18.0)': dependencies: - eslint: 9.17.0 + eslint: 9.18.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -10479,17 +10479,19 @@ snapshots: '@eslint/config-array@0.19.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.7 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/core@0.9.0': {} + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7 + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -10500,12 +10502,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} + '@eslint/js@9.18.0': {} '@eslint/object-schema@2.1.4': {} - '@eslint/plugin-kit@0.2.3': + '@eslint/plugin-kit@0.2.5': dependencies: + '@eslint/core': 0.10.0 levn: 0.4.1 '@extractus/feed-extractor@7.1.3': @@ -12037,33 +12040,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.694(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.694(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.694(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.695(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -12328,15 +12331,15 @@ snapshots: dependencies: '@types/node': 22.10.5 - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 - eslint: 9.17.0 + eslint: 9.18.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12345,14 +12348,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3)': + '@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.19.1 debug: 4.4.0 - eslint: 9.17.0 + eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12362,12 +12365,12 @@ snapshots: '@typescript-eslint/types': 8.19.1 '@typescript-eslint/visitor-keys': 8.19.1 - '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) debug: 4.4.0 - eslint: 9.17.0 + eslint: 9.18.0 ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: @@ -12389,13 +12392,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.1(eslint@9.17.0)(typescript@5.7.3)': + '@typescript-eslint/utils@8.19.1(eslint@9.18.0)(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0) '@typescript-eslint/scope-manager': 8.19.1 '@typescript-eslint/types': 8.19.1 '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - eslint: 9.17.0 + eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -13895,7 +13898,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.19.12): dependencies: - debug: 4.3.7 + debug: 4.4.0 esbuild: 0.19.12 transitivePeerDependencies: - supports-color @@ -14048,14 +14051,14 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.17.0): + eslint-config-prettier@9.1.0(eslint@9.18.0): dependencies: - eslint: 9.17.0 + eslint: 9.18.0 - eslint-config-turbo@2.3.3(eslint@9.17.0): + eslint-config-turbo@2.3.3(eslint@9.18.0): dependencies: - eslint: 9.17.0 - eslint-plugin-turbo: 2.3.3(eslint@9.17.0) + eslint: 9.18.0 + eslint-plugin-turbo: 2.3.3(eslint@9.18.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -14065,17 +14068,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) - eslint: 9.17.0 + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + eslint: 9.18.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14084,9 +14087,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.17.0 + eslint: 9.18.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14098,13 +14101,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.17.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.18.0): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -14114,7 +14117,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.17.0 + eslint: 9.18.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -14123,11 +14126,11 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.1.0(eslint@9.17.0): + eslint-plugin-react-hooks@5.1.0(eslint@9.18.0): dependencies: - eslint: 9.17.0 + eslint: 9.18.0 - eslint-plugin-react@7.37.3(eslint@9.17.0): + eslint-plugin-react@7.37.3(eslint@9.18.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -14135,7 +14138,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.17.0 + eslint: 9.18.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -14149,10 +14152,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.3.3(eslint@9.17.0): + eslint-plugin-turbo@2.3.3(eslint@9.18.0): dependencies: dotenv: 16.0.3 - eslint: 9.17.0 + eslint: 9.18.0 eslint-scope@5.1.1: dependencies: @@ -14168,15 +14171,15 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.17.0: + eslint@9.18.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 - '@eslint/core': 0.9.0 + '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.3 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.1 @@ -14185,7 +14188,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.3.7 + debug: 4.4.0 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -17699,9 +17702,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.694(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.694(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 @@ -17887,12 +17890,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.19.1(eslint@9.17.0)(typescript@5.7.3): + typescript-eslint@8.19.1(eslint@9.18.0)(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0)(typescript@5.7.3))(eslint@9.17.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0)(typescript@5.7.3) - eslint: 9.17.0 + '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 38f739bcb..435723204 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "typescript": "^5.7.3" } } From a1fc9902a5d86511a52b7739612606063fb658f7 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2025 10:06:50 +0000 Subject: [PATCH 216/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 5 +- packages/translation/src/lang/cs.json | 5 +- packages/translation/src/lang/da.json | 5 +- packages/translation/src/lang/de.json | 5 +- packages/translation/src/lang/el.json | 5 +- packages/translation/src/lang/es.json | 5 +- packages/translation/src/lang/et.json | 5 +- packages/translation/src/lang/fr.json | 5 +- packages/translation/src/lang/he.json | 205 +++++++++++++------------- packages/translation/src/lang/hr.json | 5 +- packages/translation/src/lang/hu.json | 5 +- packages/translation/src/lang/it.json | 5 +- packages/translation/src/lang/ja.json | 5 +- packages/translation/src/lang/ko.json | 5 +- packages/translation/src/lang/lt.json | 5 +- packages/translation/src/lang/lv.json | 5 +- packages/translation/src/lang/nl.json | 5 +- packages/translation/src/lang/no.json | 5 +- packages/translation/src/lang/pl.json | 5 +- packages/translation/src/lang/pt.json | 5 +- packages/translation/src/lang/ro.json | 5 +- packages/translation/src/lang/ru.json | 5 +- packages/translation/src/lang/sk.json | 5 +- packages/translation/src/lang/sl.json | 5 +- packages/translation/src/lang/sv.json | 5 +- packages/translation/src/lang/tr.json | 5 +- packages/translation/src/lang/uk.json | 5 +- packages/translation/src/lang/vi.json | 5 +- packages/translation/src/lang/zh.json | 5 +- 29 files changed, 216 insertions(+), 129 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 3fc7317c1..612e7d471 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -966,6 +966,7 @@ }, "create": { "title": "选择要添加的项目", + "search": "", "addToBoard": "添加到面板" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "今日屏蔽", "dnsQueriesToday": "今日查询", "domainsBeingBlocked": "黑名单上的域" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS Hole 控制", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "没有提供 iFrame 网址", + "unsupportedProtocol": "", "noBrowerSupport": "您的浏览器不支持 iframe。请更新您的浏览器。" } }, diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 8d4222466..16ce4858b 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Zablokováno dnes", "dnsQueriesToday": "Dotazů dnes", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Nebyla zadána URL adresa iFrame", + "unsupportedProtocol": "", "noBrowerSupport": "Váš prohlížeč nepodporuje iFrame. Aktualizujte, prosím, svůj prohlížeč." } }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 8ef017d61..0371a21e7 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Blokeret i dag", "dnsQueriesToday": "Forespørgsler i dag", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Din browser understøtter ikke iframes. Opdater venligst din browser." } }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index daab5627a..e196bd3ba 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -966,6 +966,7 @@ }, "create": { "title": "Wählen Sie das hinzuzufügende Element aus", + "search": "", "addToBoard": "Zum Board hinzufügen" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Heute blockiert", "dnsQueriesToday": "Abfragen heute", "domainsBeingBlocked": "Domänen auf der Sperrliste" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS Hole Steuerung", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Keine iFrame URL angegeben", + "unsupportedProtocol": "", "noBrowerSupport": "Ihr Browser unterstützt keine iframes. Bitte aktualisieren Sie Ihren Browser." } }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index cb9a84885..10e7d7eb9 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Σημερινοί αποκλεισμοί", "dnsQueriesToday": "Σημερινά queries", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Ο περιηγητής σας δεν υποστηρίζει iframes. Παρακαλούμε ενημερώστε το πρόγραμμα περιήγησης." } }, diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index a9f549ebe..5cd9a5df7 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Bloqueados hoy", "dnsQueriesToday": "Consultas de hoy", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Tu navegador no soporta iframes. Por favor, actualice tu navegador." } }, diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 4df6c37de..1beb6a2ce 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "", "dnsQueriesToday": "", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "" } }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 2d2235a14..8e7dc4568 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Bloqué aujourd'hui", "dnsQueriesToday": "Requêtes aujourd'hui", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Votre navigateur internet ne prend pas en charge les iframes. Merci de le mettre à jour." } }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 7eaef9264..9ba953d8e 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -213,10 +213,10 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "מנוע ברירת המחדל השתנה בהצלחה" }, "error": { - "message": "" + "message": "אין אפשרות לשנות מנוע חיפוש ברירת מחדל" } } }, @@ -499,7 +499,7 @@ } }, "app": { - "search": "", + "search": "חיפוש אפליקציה", "page": { "list": { "title": "אפליקציות", @@ -625,8 +625,8 @@ "label": "כתובת אתר" }, "attemptSearchEngineCreation": { - "label": "", - "description": "" + "label": "יצירת מנוע חיפוש", + "description": "אינטגרציה {kind} יכולה לשמש עם מנועי חיפוש. סמן עבור הגדרה אוטומטית של מנוע חיפוש." } }, "action": { @@ -966,6 +966,7 @@ }, "create": { "title": "בחירת פריט להוספה", + "search": "סנן פריטים", "addToBoard": "הוספה ללוח" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "נחסמו היום", "dnsQueriesToday": "שאילתות היום", "domainsBeingBlocked": "דומיינים ברשימת החסימה" - } + }, + "domainsTooltip": "בגלל ריבוי אינטגרציות Homarr לא יכול לחשב במדיוק את כמות הדומיינים שנחסמו" }, "dnsHoleControls": { "name": "בקרות חור אבטחת DNS", @@ -1167,21 +1169,21 @@ } }, "minecraftServerStatus": { - "name": "", - "description": "", + "name": "סטטוס שרת מיינקראפט", + "description": "מציג את סטטוס שרת מיינקראפט", "option": { "title": { - "label": "" + "label": "כותרת" }, "domain": { - "label": "" + "label": "כתובת השרת" }, "isBedrockServer": { "label": "" } }, "status": { - "online": "", + "online": "מקוון", "offline": "לא מקוון" } }, @@ -1247,7 +1249,7 @@ } }, "iframe": { - "name": "", + "name": "iFrame", "description": "הטמע כל תוכן מהאינטרנט. חלק מהאתרים עשויים להגביל את הגישה.", "option": { "embedUrl": { @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "לא סופק קישור של iFrame", + "unsupportedProtocol": "כתובת הרשת שסופקה בפרוטוקול שגוי. בבקשה להשתמש באחד מ- {supportedProtocols}", "noBrowerSupport": "הדפדפן שלך אינו תומך ב-iframes. נא עדכן את הדפדפן שלך." } }, @@ -2053,14 +2056,14 @@ "notice": "כדי לגרום לדף זה להעלם עבור כל המשתמש, יש להגדיר לוח בית עבור השרת" }, "user": { - "description": "", - "link": "", - "notice": "" + "description": "לא הגדרת עדיין לוח בית.", + "link": "הגדר/י את לוח הבית שלך", + "notice": "על מנת לגרום לדף זה להיעלם, יש לציין לוח בית בהעדפות שלך" }, "anonymous": { - "description": "", - "link": "", - "notice": "" + "description": "מנהל השרת לא הגדיר עדיין לוח בית.", + "link": "הצגת לוחות ציבוריים", + "notice": "על מנת לגרום לדף זה להיעלם, בקש ממנהל השרת להגדיר לוח בית עבור השרת" } } } @@ -2068,13 +2071,13 @@ "management": { "metaTitle": "ניהול", "title": { - "morning": "", - "afternoon": "", - "evening": "" + "morning": "בוקר טוב, {username}", + "afternoon": "צהריים טובים, {username}", + "evening": "ערב טוב, {username}" }, "notFound": { "title": "לא נמצא", - "text": "" + "text": "לא ניתן לאתר את המשאב המבוקש" }, "navbar": { "items": { @@ -2106,9 +2109,9 @@ "label": "עזרה", "items": { "documentation": "תיעוד", - "submitIssue": "", + "submitIssue": "שלח בעיה", "discord": "קהילת דיסקורד", - "sourceCode": "" + "sourceCode": "קוד מקור" } }, "about": "אודות" @@ -2126,16 +2129,16 @@ }, "statisticLabel": { "boards": "לוחות", - "resources": "", - "authentication": "", - "authorization": "" + "resources": "מקורות", + "authentication": "אימות", + "authorization": "הרשאה" } }, "board": { "title": "הלוחות שלך", "action": { "new": { - "label": "" + "label": "לוח חדש" }, "open": { "label": "פתיחת לוח" @@ -2180,14 +2183,14 @@ }, "user": { "back": "חזרה למשתמשים", - "fieldsDisabledExternalProvider": "", + "fieldsDisabledExternalProvider": "שדות מסוימים מושבתים מכיוון שהם מנוהלים על ידי ספק אימות חיצוני.", "setting": { "general": { "title": "כללי", "item": { - "language": "", + "language": "שפה ואיזור", "board": "לוח בית", - "defaultSearchEngine": "", + "defaultSearchEngine": "מנוע חיפוש ברירת מחדל", "firstDayOfWeek": "היום הראשון בשבוע", "accessibility": "נגישות" } @@ -2204,25 +2207,25 @@ "title": "משתמשים" }, "edit": { - "metaTitle": "" + "metaTitle": "עריכת משתמש {username}" }, "create": { "metaTitle": "צור משתמש", - "title": "", + "title": "יצירת משתמש חדש", "step": { "personalInformation": { - "label": "" + "label": "פרטים אישיים" }, "security": { "label": "אבטחה" }, "groups": { "label": "קבוצות", - "title": "", - "description": "" + "title": "בחירת כל הקבוצות שהמשתמש יהיה חבר בהם", + "description": "הקבוצה {everyoneGroup} מוקצת עבור כל המשתמשים ולא ניתנת להסרה." }, "review": { - "label": "" + "label": "סקירה" }, "completed": { "title": "המשתמש נוצר" @@ -2232,8 +2235,8 @@ } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "יצירת משתמש נוסף", + "back": "חזרה לרשימת משתמשים" } }, "invite": { @@ -2306,60 +2309,60 @@ "analytics": { "title": "ניתוחים", "general": { - "title": "", - "text": "" + "title": "שליחת ניתוח נתונים אנונימי", + "text": "Homarr ישלח ניתוחים אנונימיים באמצעות התוכנה בקוד פתוח Umami. הוא לעולם אינו אוסף מידע אישי ולכן תואם לחלוטין לדרישות ה-GDPR וה-CCPA. אנו מעודדים אותך להפעיל ניתוחים, כיוון שזה מסייע לצוות הקוד הפתוח שלנו לזהות בעיות ולהעניק עדיפות למשימות שברשימת העדיפויות שלנו." }, "widgetData": { - "title": "", - "text": "" + "title": "נתוני ווידג׳ט", + "text": "שלח אילו ווידג'טים (וכמותם) הוגדרו. אינו כולל כתובות רשת, שמות או כל מידע נוסף אחר." }, "integrationData": { - "title": "", - "text": "" + "title": "נתוני אינטגרציה", + "text": "שלח אילו אינטגרציות (וכמותם) הוגדרו. לא כולל כתובות רשת, שמות או כל מידע נוסף אחר." }, "usersData": { - "title": "", - "text": "" + "title": "נתוני משתמשים", + "text": "שלח את כמות המשתמשים והאם הופעל SSO" } }, "crawlingAndIndexing": { - "title": "", - "warning": "", + "title": "סריקה והוספה לאינדקס", + "warning": "הפעלה או השבתה של הגדרות כלשהן כאן תשפיע קשות על האופן שבו מנועי החיפוש יכנסו לאינדקס ויסרקו את הדף שלך. כל הגדרה היא בקשה ותלוית הסורק להחיל את ההגדרות הללו. היישום של כל שינוי עשוי להימשך עד מספר ימים או שבועות. הגדרות מסוימות עשויות להיות ספציפיות למנועי חיפוש.", "noIndex": { - "title": "", - "text": "" + "title": "ללא אינדקס", + "text": "אל תוסיף את האתר לאינדקס במנועי חיפוש ואל תציג אותו בתוצאות חיפוש" }, "noFollow": { - "title": "", - "text": "" + "title": "ללא מעקב", + "text": "אל תעקבו אחר קישורים בזמן ההוספה לאינדקס. השבתה זו תוביל לסורקים שינסו לעקוב אחר כל הקישורים ב-Homarr." }, "noTranslate": { - "title": "", - "text": "" + "title": "ללא תרגום", + "text": "כאשר סביר להניח ששפת האתר אינה השפת שהמשתמש ירצה לקרוא, גוגל יציג קישור תרגום בתוצאות החיפוש" }, "noSiteLinksSearchBox": { - "title": "", - "text": "" + "title": "אין תיבת חיפוש של קישורי אתרים", + "text": "גוגל תבנה תיבת חיפוש עם הקישורים שנסרקו יחד עם קישורים ישירים אחרים. הפעלה זו תבקש מגוגל להשבית את התיבה הזו." } }, "board": { "title": "לוחות", "homeBoard": { - "label": "", - "description": "" + "label": "לוח בית גלובלי", + "description": "רק לוחות ציבוריים זמינים לבחירה" } }, "search": { - "title": "", + "title": "חיפוש", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "מנוע חיפוש ברירת מחדל גלובלי", + "description": "אינטגרציות מנוע חיפוש לא ניתנות לסימון כאן" } }, "appearance": { "title": "מראה", "defaultColorScheme": { - "label": "", + "label": "סכמת צבעים ברירת מחדל", "options": { "light": "בהיר", "dark": "כהה" @@ -2367,60 +2370,60 @@ } }, "culture": { - "title": "", + "title": "תרבות", "defaultLocale": { - "label": "" + "label": "שפת ברירת מחדל" } } } }, "tool": { "tasks": { - "title": "", + "title": "משימות", "status": { - "idle": "", + "idle": "ממתין", "running": "פועל", "error": "שגיאה" }, "job": { "minecraftServerStatus": { - "label": "" + "label": "סטטוס שרת מיינקראפט" }, "iconsUpdater": { - "label": "" + "label": "עדכון אייקונים" }, "analytics": { - "label": "" + "label": "ניתוחים" }, "smartHomeEntityState": { - "label": "" + "label": "סטטוס יישות בית חכם" }, "ping": { - "label": "" + "label": "פינגים" }, "mediaServer": { "label": "שרת מדיה" }, "mediaOrganizer": { - "label": "" + "label": "מארגני מדיה" }, "downloads": { - "label": "" + "label": "הורדות" }, "mediaRequestStats": { - "label": "" + "label": "סטטוס בקשות מדיה" }, "mediaRequestList": { - "label": "" + "label": "רשימת בקשות מדיה" }, "rssFeeds": { "label": "הזנות RSS" }, "indexerManager": { - "label": "" + "label": "מנהל אינדקסים" }, "healthMonitoring": { - "label": "" + "label": "ניטור בריאות המערכת" }, "dnsHole": { "label": "" @@ -2429,7 +2432,7 @@ "label": "" }, "updateChecker": { - "label": "" + "label": "בודק עדכונים" }, "mediaTranscoding": { "label": "המרת קידוד מדיה" @@ -2442,7 +2445,7 @@ "createApiToken": { "title": "", "description": "", - "button": "" + "button": "העתקה וסגירה" } }, "tab": { @@ -2450,15 +2453,15 @@ "label": "תיעוד" }, "apiKey": { - "label": "", - "title": "", + "label": "אימות", + "title": "מפתח API", "button": { - "createApiToken": "" + "createApiToken": "יצירת מפתח  API" }, "table": { "header": { "id": "מספר מזהה", - "createdBy": "" + "createdBy": "נוצר על ידי" } } } @@ -2466,7 +2469,7 @@ } }, "about": { - "version": "", + "version": "גרסה {version}", "text": "", "accordion": { "contributors": { @@ -2623,12 +2626,12 @@ "label": "קבוצה" }, "permission": { - "label": "" + "label": "הרשאה" } }, "action": { - "saveUser": "", - "saveGroup": "" + "saveUser": "שמירת הרשאות משתמש", + "saveGroup": "שמירת הרשאת קבוצה" } }, "navigationStructure": { @@ -2643,13 +2646,13 @@ "label": "עריכה" }, "new": { - "label": "" + "label": "חדש" } }, "search-engines": { "label": "מנועי חיפוש", "new": { - "label": "" + "label": "חדש" }, "edit": { "label": "עריכה" @@ -2661,7 +2664,7 @@ "apps": { "label": "אפליקציות", "new": { - "label": "" + "label": "חדש" }, "edit": { "label": "עריכה" @@ -2688,7 +2691,7 @@ "label": "דוקר" }, "logs": { - "label": "" + "label": "קבצי לוג" } }, "settings": { @@ -2700,28 +2703,28 @@ } }, "search": { - "placeholder": "", - "nothingFound": "", + "placeholder": "חפש משהו", + "nothingFound": "לא נמצאו תוצאות", "error": { - "fetch": "" + "fetch": "ארעה שגיאה בעת איסוף נתונים" }, "mode": { "appIntegrationBoard": { - "help": "", + "help": "חיפוש אפליקציות, אינטגרציות או לוחות", "group": { "app": { "title": "אפליקציות", "children": { "action": { "open": { - "label": "" + "label": "פתיחת קישור אפליקציה" }, "edit": { "label": "ערוך אפליקציה" } }, "detail": { - "title": "" + "title": "בחירת פעולה עבור האפליקציה" } } }, @@ -2730,13 +2733,13 @@ "children": { "action": { "open": { - "label": "" + "label": "פתיחת לוח" }, "homeBoard": { - "label": "" + "label": "קביעה כלוח הבית" }, "settings": { - "label": "" + "label": "פתיחת הגדרות" } }, "detail": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 2655126da..9fcd098d4 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "", "dnsQueriesToday": "Upiti danas", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Vaš preglednik ne podržava iframeove. Ažurirajte svoj preglednik." } }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 787689b68..7ec22e4d5 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -966,6 +966,7 @@ }, "create": { "title": "Válassza ki a hozzáadni kívánt elemet", + "search": "", "addToBoard": "Hozzáadás a táblához" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Mai blokkolások", "dnsQueriesToday": "Mai lekérdezések", "domainsBeingBlocked": "Domainek a tiltólistán" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS blokkolók ellenőrzése", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Nincs megadva iFrame URL", + "unsupportedProtocol": "", "noBrowerSupport": "Az Ön böngészője nem támogatja a beágyazott kereteket. Kérjük, frissítse böngészőjét." } }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 1704b856d..23a4d9456 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Bloccati oggi", "dnsQueriesToday": "Query di oggi", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Il tuo browser non supporta iframes. Aggiorna il tuo browser." } }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index f0519d0cc..8c1a487b2 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "今日のブロック", "dnsQueriesToday": "今日のクエリ", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "お使いのブラウザは iframe をサポートしていません。ブラウザを更新してください。" } }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 815501a58..de6b796d0 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "", "dnsQueriesToday": "오늘 쿼리", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "브라우저가 iframe을 지원하지 않습니다. 브라우저를 업데이트하세요." } }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 75d008056..4f390ec35 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Šiandien užblokuota", "dnsQueriesToday": "Užklausos šiandien", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Jūsų naršyklė nepalaiko iframe. Atnaujinkite savo naršyklę." } }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 15fd286da..281f06284 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Šodien bloķēti", "dnsQueriesToday": "Pieprasījumi šodien", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Jūsu pārlūkprogramma neatbalsta iframe. Lūdzu, atjauniniet pārlūkprogrammu." } }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index aa54ea68b..62e3a0cbd 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -966,6 +966,7 @@ }, "create": { "title": "Kies een item om toe te voegen", + "search": "", "addToBoard": "Toevoegen aan bord" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Vandaag geblokkeerd", "dnsQueriesToday": "Aanvragen vandaag", "domainsBeingBlocked": "Domeinen op blokkadelijst" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS-hole bedieningen", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Geen iFrame URL opgegeven", + "unsupportedProtocol": "", "noBrowerSupport": "Je browser ondersteunt geen iframes. Update je browser." } }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 367d209a1..dadeffbd2 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Blokkert i dag", "dnsQueriesToday": "Spørringer i dag", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Nettleseren din støtter ikke iframes. Vennligst oppdater nettleseren din." } }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 0beae6363..c2ecde1be 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -966,6 +966,7 @@ }, "create": { "title": "Wybierz element do dodania", + "search": "", "addToBoard": "Dodaj do tablicy" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Zablokowane dzisiaj", "dnsQueriesToday": "Zapytania dzisiaj", "domainsBeingBlocked": "Domeny na liście blokowanych" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "Sterowanie dziurami DNS", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Adres URL iFrame nie został podany", + "unsupportedProtocol": "", "noBrowerSupport": "Twoja przeglądarka nie obsługuje ramek iframe. Zaktualizuj przeglądarkę." } }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 7a8163149..9f7589c54 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Bloqueado hoje", "dnsQueriesToday": "Consultas hoje", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Seu navegador não suporta iframes. Atualize seu navegador." } }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 6b26f70eb..fc025a55a 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Blocate astăzi", "dnsQueriesToday": "Interogări astăzi", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Browser-ul tău nu acceptă iFrames. Te rugăm să actualizezi browser-ul." } }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 5c85f790f..0cd49532e 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -966,6 +966,7 @@ }, "create": { "title": "Выберите тип элемента", + "search": "", "addToBoard": "Добавить на панель" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "заблокировано сегодня", "dnsQueriesToday": "DNS-запросов сегодня", "domainsBeingBlocked": "Доменов в списке блокировки" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "Управление DNS-фильтром", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "URL для iFrame не указан", + "unsupportedProtocol": "", "noBrowerSupport": "Ваш браузер не поддерживает iframes. Пожалуйста, обновите браузер." } }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 827c328a5..70593832f 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -966,6 +966,7 @@ }, "create": { "title": "Vyberte položku, ktorú chcete pridať", + "search": "", "addToBoard": "Pridať na dosku" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Zablokované dnes", "dnsQueriesToday": "Poziadavky dnes", "domainsBeingBlocked": "Domény na adlistoch" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "Kontrola diery DNS", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "Nie je uvedená žiadna adresa URL iFrame", + "unsupportedProtocol": "", "noBrowerSupport": "Váš prehliadač nepodporuje iframe. Aktualizujte svoj prehliadač." } }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index 0860a8e71..a13e3912e 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Blokirano danes", "dnsQueriesToday": "Poizvedbe danes", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Vaš brskalnik ne podpira iframov. Posodobite svoj brskalnik." } }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 62b72c4a4..b1ef10884 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Blockerade idag", "dnsQueriesToday": "Förfrågningar idag", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Din webbläsare stöder inte iframes. Vänligen uppdatera din webbläsare." } }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 36d6dc062..8764b1c15 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -966,6 +966,7 @@ }, "create": { "title": "Eklenecek öğeyi seçin", + "search": "", "addToBoard": "Panele Ekle" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Bugün engellenenler", "dnsQueriesToday": "Bugünkü Sorgular", "domainsBeingBlocked": "Engelleme listesindeki alan adları" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS Çözümleyici Kontrolleri", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "IFrame URL'si sağlanmadı", + "unsupportedProtocol": "", "noBrowerSupport": "Tarayıcınız iframe'leri desteklemiyor. Lütfen tarayıcınızı güncelleyin." } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index e9986da6e..5be6576f2 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "", "dnsQueriesToday": "Запити за сьогодні", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Ваш браузер не підтримує iframe. Будь ласка, оновіть свій браузер." } }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 38ce91177..ee484c0bc 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -966,6 +966,7 @@ }, "create": { "title": "", + "search": "", "addToBoard": "" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "Đã chặn hôm nay", "dnsQueriesToday": "Truy vấn hôm nay", "domainsBeingBlocked": "" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "", + "unsupportedProtocol": "", "noBrowerSupport": "Trình duyệt của bạn không hỗ trợ iframe. Vui lòng cập nhật trình duyệt của bạn." } }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 9800a9eab..ac711bd35 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -966,6 +966,7 @@ }, "create": { "title": "選擇要新增的項目", + "search": "", "addToBoard": "新增至面板" }, "moveResize": { @@ -1091,7 +1092,8 @@ "adsBlockedTodayPercentage": "今日封鎖", "dnsQueriesToday": "今日查詢", "domainsBeingBlocked": "黑名單的網域" - } + }, + "domainsTooltip": "" }, "dnsHoleControls": { "name": "DNS Hole 控制", @@ -1280,6 +1282,7 @@ }, "error": { "noUrl": "未提供 iFrame 網址", + "unsupportedProtocol": "", "noBrowerSupport": "此瀏覽器不支持 iFrame,請使用其他瀏覽器" } }, From 4d69b8167641c668f5b7065f104f22018049f596 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sat, 11 Jan 2025 11:13:48 +0100 Subject: [PATCH 217/262] ci: add missing git config to release pipeline --- .github/workflows/deployment-docker-image.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 74772e8ef..ab7ef7e1b 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -94,6 +94,8 @@ jobs: env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} run: | + git config user.name "Releases Homarr" + git config user.email "175486441+homarr-releases[bot]@users.noreply.github.com" git fetch origin dev git checkout dev git pull origin dev From b399cb697945cd1bb3da2ad5222aceb9b0e71d2b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2025 19:13:10 +0000 Subject: [PATCH 218/262] fix(deps): update tanstack-query monorepo to ^5.64.0 (#1922) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index d5258941e..bb66dce92 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.28.1", - "@tanstack/react-query": "^5.63.0", - "@tanstack/react-query-devtools": "^5.63.0", - "@tanstack/react-query-next-experimental": "5.63.0", + "@tanstack/react-query": "^5.64.0", + "@tanstack/react-query-devtools": "^5.64.0", + "@tanstack/react-query-next-experimental": "5.64.0", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 012c9065b..9221efdb6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) '@tanstack/react-query': - specifier: ^5.63.0 - version: 5.63.0(react@19.0.0) + specifier: ^5.64.0 + version: 5.64.0(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.63.0 - version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(react@19.0.0) + specifier: ^5.64.0 + version: 5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.63.0 - version: 5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + specifier: 5.64.0 + version: 5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next version: 11.0.0-rc.695(typescript@5.7.3) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next version: 11.0.0-rc.695(typescript@5.7.3) @@ -3891,27 +3891,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.62.16': - resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==} + '@tanstack/query-core@5.64.0': + resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==} '@tanstack/query-devtools@5.62.16': resolution: {integrity: sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==} - '@tanstack/react-query-devtools@5.63.0': - resolution: {integrity: sha512-j3+22r6srSJVy8oiLUpOOupI4g7IHwbISeEGM+5ASIzzOnVUUSsY6e4nu5pxxj7ODJbiag3GpkHU/otG9B9sAA==} + '@tanstack/react-query-devtools@5.64.0': + resolution: {integrity: sha512-XORJjlbcBwPJaNbWBfZudaVVMi5TtlN1lYkHYU71hlG2c/jYpceO2yfAhZfgeyTNtqmTJ7jXOitgoGqtunsBAA==} peerDependencies: - '@tanstack/react-query': ^5.63.0 + '@tanstack/react-query': ^5.64.0 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.63.0': - resolution: {integrity: sha512-km5aJnrxL8LMvSN6J4DV85s0wu3QKG+78j6ZoFLFbVvqwIXIxdhNuVKOsfo5gwE0XlaJOPYRnRG+5He8WI2WOg==} + '@tanstack/react-query-next-experimental@5.64.0': + resolution: {integrity: sha512-s/ylNHCkZyl0MlUn1HBEmVaoRv9BMmVlZobU7oym/ae2Rp6TVptQFy8oFPGj+oEfXTw08q00uaRBdw84JZ3HfA==} peerDependencies: - '@tanstack/react-query': ^5.63.0 + '@tanstack/react-query': ^5.64.0 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.63.0': - resolution: {integrity: sha512-QWizLzSiog8xqIRYmuJRok9VELlXVBAwtINgVCgW1SNvamQwWDO5R0XFSkjoBEj53x9Of1KAthLRBUC5xmtVLQ==} + '@tanstack/react-query@5.64.0': + resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==} peerDependencies: react: ^18 || ^19 @@ -11788,25 +11788,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.62.16': {} + '@tanstack/query-core@5.64.0': {} '@tanstack/query-devtools@5.62.16': {} - '@tanstack/react-query-devtools@5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.62.16 - '@tanstack/react-query': 5.63.0(react@19.0.0) + '@tanstack/react-query': 5.64.0(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.63.0(@tanstack/react-query@5.63.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.63.0(react@19.0.0) + '@tanstack/react-query': 5.64.0(react@19.0.0) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - '@tanstack/react-query@5.63.0(react@19.0.0)': + '@tanstack/react-query@5.64.0(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.62.16 + '@tanstack/query-core': 5.64.0 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -12045,7 +12045,7 @@ snapshots: '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) @@ -12054,12 +12054,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: - '@tanstack/react-query': 5.63.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@tanstack/react-query': 5.64.0(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.63.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@tanstack/react-query': 5.63.0(react@19.0.0) + '@tanstack/react-query': 5.64.0(react@19.0.0) '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) react: 19.0.0 From 467d5e21ae5e393762a0a6c0981d5d5d96892166 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 12 Jan 2025 00:49:05 +0000 Subject: [PATCH 219/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 12 ++++++------ packages/translation/src/lang/uk.json | 2 +- packages/translation/src/lang/zh.json | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 612e7d471..558e622ae 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -912,7 +912,7 @@ }, "remove": { "title": "删除动态部分", - "message": "您确定要删除这个动态部分吗?项目将在父部分的同一位置移动。" + "message": "你确定你要删除这个动态部分?项目将被移动到父节的相同位置。" } }, "category": { @@ -927,8 +927,8 @@ "remove": "删除分类", "moveUp": "上移", "moveDown": "下移", - "createAbove": "新分类之上", - "createBelow": "新分类之下" + "createAbove": "上方新建分类", + "createBelow": "下方新建分类" }, "create": { "title": "新建分类", @@ -966,7 +966,7 @@ }, "create": { "title": "选择要添加的项目", - "search": "", + "search": "筛选项目", "addToBoard": "添加到面板" }, "moveResize": { @@ -1093,7 +1093,7 @@ "dnsQueriesToday": "今日查询", "domainsBeingBlocked": "黑名单上的域" }, - "domainsTooltip": "" + "domainsTooltip": "由于多个集成,Homarr 无法计算被阻止的域的准确数量" }, "dnsHoleControls": { "name": "DNS Hole 控制", @@ -1282,7 +1282,7 @@ }, "error": { "noUrl": "没有提供 iFrame 网址", - "unsupportedProtocol": "", + "unsupportedProtocol": "提供的URL使用了不支持的协议。请使用({supportedProtocols})中的一个", "noBrowerSupport": "您的浏览器不支持 iframe。请更新您的浏览器。" } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 5be6576f2..b9aeefcce 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -213,7 +213,7 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Стандартну систему пошуку змінено успішно" }, "error": { "message": "" diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index ac711bd35..fb35d4871 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -966,7 +966,7 @@ }, "create": { "title": "選擇要新增的項目", - "search": "", + "search": "篩選項目", "addToBoard": "新增至面板" }, "moveResize": { @@ -1093,7 +1093,7 @@ "dnsQueriesToday": "今日查詢", "domainsBeingBlocked": "黑名單的網域" }, - "domainsTooltip": "" + "domainsTooltip": "由於多個集成,Homarr 無法精準計算被阻擋的網域數量" }, "dnsHoleControls": { "name": "DNS Hole 控制", @@ -1282,7 +1282,7 @@ }, "error": { "noUrl": "未提供 iFrame 網址", - "unsupportedProtocol": "", + "unsupportedProtocol": "提供的網址使用了不支援的協議,請使用以下之一:{supportedProtocols}", "noBrowerSupport": "此瀏覽器不支持 iFrame,請使用其他瀏覽器" } }, From fc6dbc92dfd947d9352e6eeebae040db69d9e903 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 12 Jan 2025 10:45:02 +0000 Subject: [PATCH 220/262] chore(deps): update react monorepo (#1927) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 4 +- pnpm-lock.yaml | 172 +++++++++++++++++++-------------------- 2 files changed, 88 insertions(+), 88 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index bb66dce92..889f3e9bf 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -84,8 +84,8 @@ "@types/chroma-js": "3.1.0", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.4", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.5", + "@types/react-dom": "19.0.3", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", "eslint": "^9.18.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9221efdb6..3277ef07e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,19 +153,19 @@ importers: version: 7.15.3(chroma-js@3.1.2) '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/modals': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -225,10 +225,10 @@ importers: version: 11.0.1 jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.4)(react@19.0.0) + version: 2.11.0(@types/react@19.0.5)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -258,7 +258,7 @@ importers: version: 2.2.2 swagger-ui-react: specifier: ^5.18.2 - version: 5.18.2(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.18.2(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -282,11 +282,11 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.4 - version: 19.0.4 + specifier: 19.0.5 + version: 19.0.5 '@types/react-dom': - specifier: 19.0.2 - version: 19.0.2(@types/react@19.0.4) + specifier: 19.0.3 + version: 19.0.3(@types/react@19.0.5) '@types/swagger-ui-react': specifier: ^4.18.3 version: 4.18.3 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -1134,7 +1134,7 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1192,7 +1192,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1232,7 +1232,7 @@ importers: version: link:../ui '@mantine/notifications': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1290,7 +1290,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1527,19 +1527,19 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/spotlight': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.4)(react@19.0.0) + version: 2.11.0(@types/react@19.0.5)(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1634,10 +1634,10 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1646,7 +1646,7 @@ importers: version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1762,7 +1762,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -4329,13 +4329,13 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.0.2': - resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==} + '@types/react-dom@19.0.3': + resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.4': - resolution: {integrity: sha512-3O4QisJDYr1uTUMZHA2YswiQZRq+Pd8D+GdVFYikTutYsTz+QZgWkAPnP7rx9txoI6EXKcPiluMqWPFV3tT9Wg==} + '@types/react@19.0.5': + resolution: {integrity: sha512-i4OQzFiqsUCfoBns/KHpz+4QcvfjoCsTUi+mugo3lrSRA3+x0gJVvhZhAJrwLGEqz4EXiFVP4hPnOugx+m2uhg==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -10752,7 +10752,7 @@ snapshots: dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) @@ -10760,24 +10760,24 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.4)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.4)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.5)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.5)(react@19.0.0) type-fest: 4.30.2 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10793,25 +10793,25 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 @@ -10821,9 +10821,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tiptap/extension-link': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/react': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12269,11 +12269,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.2(@types/react@19.0.4)': + '@types/react-dom@19.0.3(@types/react@19.0.5)': dependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 - '@types/react@19.0.4': + '@types/react@19.0.5': dependencies: csstype: 3.1.3 @@ -12305,7 +12305,7 @@ snapshots: '@types/swagger-ui-react@4.18.3': dependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 '@types/through@0.0.33': dependencies: @@ -13647,18 +13647,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - '@types/react': 19.0.4 + '@types/react': 19.0.5 better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.4)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: @@ -15239,9 +15239,9 @@ snapshots: jose@5.9.6: {} - jotai@2.11.0(@types/react@19.0.4)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.5)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 react: 19.0.0 js-base64@3.7.7: @@ -15491,10 +15491,10 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16529,35 +16529,35 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.1.2(@types/react@19.0.4)(react@19.0.0)(redux@5.0.1): + react-redux@9.1.2(@types/react@19.0.5)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 redux: 5.0.1 react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.0.4)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.5)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.4)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.5)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 - react-remove-scroll@2.6.2(@types/react@19.0.4)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.5)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.4)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.4)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.5)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.5)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.4)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.4)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.5)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.5)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 react-scan@0.0.31: dependencies: @@ -16572,22 +16572,22 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@19.0.4)(react@19.0.0): + react-style-singleton@2.2.1(@types/react@19.0.5)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 - react-style-singleton@2.2.3(@types/react@19.0.4)(react@19.0.0): + react-style-singleton@2.2.3(@types/react@19.0.5)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 react-syntax-highlighter@15.5.0(react@19.0.0): dependencies: @@ -16598,12 +16598,12 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@19.0.4)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.5)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.4)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.5)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17434,7 +17434,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.18.2(@types/react@19.0.4)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.18.2(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.25.6 '@braintree/sanitize-url': 7.0.4 @@ -17459,7 +17459,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.1.2(@types/react@19.0.4)(react@19.0.0)(redux@5.0.1) + react-redux: 9.1.2(@types/react@19.0.5)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.5.0(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -18027,12 +18027,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.0.4)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.5)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -18050,26 +18050,26 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.4)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.5)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 - use-latest@1.2.1(@types/react@19.0.4)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.5)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.4)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.5)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 - use-sidecar@1.1.2(@types/react@19.0.4)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.5)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.4 + '@types/react': 19.0.5 use-sync-external-store@1.2.2(react@19.0.0): dependencies: From 6b36ec3103ab9eeee87fb3a7e547522603085d0a Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 00:47:42 +0000 Subject: [PATCH 221/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/tr.json | 6 +++--- packages/translation/src/lang/uk.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 8764b1c15..2bc44e73e 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -966,7 +966,7 @@ }, "create": { "title": "Eklenecek öğeyi seçin", - "search": "", + "search": "Öğeleri Filtrele", "addToBoard": "Panele Ekle" }, "moveResize": { @@ -1093,7 +1093,7 @@ "dnsQueriesToday": "Bugünkü Sorgular", "domainsBeingBlocked": "Engelleme listesindeki alan adları" }, - "domainsTooltip": "" + "domainsTooltip": "Birden fazla entegrasyon nedeniyle Homarr, engellenen alan adlarının tam sayısını hesaplayamıyor" }, "dnsHoleControls": { "name": "DNS Çözümleyici Kontrolleri", @@ -1282,7 +1282,7 @@ }, "error": { "noUrl": "IFrame URL'si sağlanmadı", - "unsupportedProtocol": "", + "unsupportedProtocol": "Sağlanan URL, desteklenmeyen bir protokol kullanıyor. Lütfen ({supportedProtocols})'den birini kullanın", "noBrowerSupport": "Tarayıcınız iframe'leri desteklemiyor. Lütfen tarayıcınızı güncelleyin." } }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index b9aeefcce..9d6095f57 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -216,7 +216,7 @@ "message": "Стандартну систему пошуку змінено успішно" }, "error": { - "message": "" + "message": "Не вдалося змінити стандартну систему пошуку" } } }, @@ -236,7 +236,7 @@ "message": "Іконки ping перемкнуто успішно" }, "error": { - "message": "Не вдалося перемикнути ping-значки" + "message": "Не вдалося перемикнути ping-іконки" } } }, From 56755d1ab4194de04faeb569020f6d19623bd29a Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 13 Jan 2025 18:50:51 +0100 Subject: [PATCH 222/262] fix: trpc removed export anything from client in react-query (#1941) --- packages/api/src/client.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/api/src/client.ts b/packages/api/src/client.ts index 985446a6b..3bac46dc7 100644 --- a/packages/api/src/client.ts +++ b/packages/api/src/client.ts @@ -1,6 +1,7 @@ "use client"; -import { createTRPCClient, createTRPCReact, httpLink } from "@trpc/react-query"; +import { createTRPCClient, httpLink } from "@trpc/client"; +import { createTRPCReact } from "@trpc/react-query"; import SuperJSON from "superjson"; import type { AppRouter } from "."; From feecdd36d49890022e8f479efe6cefa3f77d265a Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:24:00 +0000 Subject: [PATCH 223/262] fix(deps): update dependency typescript-eslint to ^8.20.0 (#1938) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 182 ++++++++++++++++++------------------ tooling/eslint/package.json | 2 +- 2 files changed, 92 insertions(+), 92 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3277ef07e..d056dfb80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -186,16 +186,16 @@ importers: version: 5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.695(typescript@5.7.3) + version: 11.0.0-rc.700(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -541,13 +541,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.695(typescript@5.7.3) + version: 11.0.0-rc.700(typescript@5.7.3) dockerode: specifier: ^4.0.3 version: 4.0.3 @@ -568,7 +568,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1868,7 +1868,7 @@ importers: version: 2.3.3(eslint@9.18.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0) + version: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.18.0) @@ -1879,8 +1879,8 @@ importers: specifier: ^5.1.0 version: 5.1.0(eslint@9.18.0) typescript-eslint: - specifier: ^8.19.1 - version: 8.19.1(eslint@9.18.0)(typescript@5.7.3) + specifier: ^8.20.0 + version: 8.20.0(eslint@9.18.0)(typescript@5.7.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -4136,19 +4136,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.695': - resolution: {integrity: sha512-PDLTGY4FYU0aJAHHJYGdmn6ePlkZcqX6FjyZodmpSlYrIZG8r21J6X4+nebFnsIUetxktmcmlJziUoEFYVH56g==} + '@trpc/client@11.0.0-rc.700': + resolution: {integrity: sha512-8yktSkK/jbDss4pA+3EwwDY972qBrvGN49Kpa7oA/0My40YohlEwrEwLLI5+rdICUi3MFv7jkqzKydgXHJJPRw==} peerDependencies: - '@trpc/server': 11.0.0-rc.695+01bdfa997 + '@trpc/server': 11.0.0-rc.700+e5c0c1a82 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.695': - resolution: {integrity: sha512-aR4Tpq1Y+VtkzPRcxTy3UWjKyZEvb8kef8OAs56nIr92c9Hl/VGkF3zX92dfzRJ+kGqSqoY9HymPZTyX9WTNXQ==} + '@trpc/next@11.0.0-rc.700': + resolution: {integrity: sha512-IZoDhq577LDUZ22S9XO7PJzlh0erWnuuaoExYXGz3UV/5HhQ91c3+hSGvx8s7BiOAWdMeFDGxanwjaUMaJquXg==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.695+01bdfa997 - '@trpc/react-query': 11.0.0-rc.695+01bdfa997 - '@trpc/server': 11.0.0-rc.695+01bdfa997 + '@trpc/client': 11.0.0-rc.700+e5c0c1a82 + '@trpc/react-query': 11.0.0-rc.700+e5c0c1a82 + '@trpc/server': 11.0.0-rc.700+e5c0c1a82 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4159,18 +4159,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.695': - resolution: {integrity: sha512-3+dj2oy2BvE+vqRJyEvL/JMTPDgSWMfQSxaG4p/TV8FrQFgx6CXUzfMzxyNChzQQ/fDrXIrZcNqsu8vK3MtarA==} + '@trpc/react-query@11.0.0-rc.700': + resolution: {integrity: sha512-/8tZ7PrfVFOKHjtekSCE0smJLO6v2xxuaXbnSDV7saCoJXIID/+olt3YbwvhAzEzFCaWF9UUuigULW4MIr9Hvw==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.695+01bdfa997 - '@trpc/server': 11.0.0-rc.695+01bdfa997 + '@trpc/client': 11.0.0-rc.700+e5c0c1a82 + '@trpc/server': 11.0.0-rc.700+e5c0c1a82 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.695': - resolution: {integrity: sha512-r8e7shX/uoGWSDTRYoy6LmbgXYIlaWK6BDi9PyOCkoh67+ZNOVFSmb3c4XAwyhp3l2QhtjiCQXGxDPFetzP0mA==} + '@trpc/server@11.0.0-rc.700': + resolution: {integrity: sha512-EmbaGj76YcZWsnujZrrJEYa/2a6ZncTMm1he99RlemWE/ZsZbN+I+KCz+VKIsUr+JLaQmQMElcXs2x0qLI6T5g==} peerDependencies: typescript: '>=5.7.2' @@ -4385,51 +4385,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.19.1': - resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + '@typescript-eslint/eslint-plugin@8.20.0': + resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.1': - resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + '@typescript-eslint/parser@8.20.0': + resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.1': - resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + '@typescript-eslint/scope-manager@8.20.0': + resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.1': - resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + '@typescript-eslint/type-utils@8.20.0': + resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.1': - resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + '@typescript-eslint/types@8.20.0': + resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.1': - resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + '@typescript-eslint/typescript-estree@8.20.0': + resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.1': - resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + '@typescript-eslint/utils@8.20.0': + resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.19.1': - resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + '@typescript-eslint/visitor-keys@8.20.0': + resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -9244,8 +9244,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.19.1: - resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} + typescript-eslint@8.20.0: + resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -12040,33 +12040,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.64.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.695(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.64.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.695(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.695(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.700(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -12331,14 +12331,14 @@ snapshots: dependencies: '@types/node': 22.10.5 - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/type-utils': 8.20.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.20.0 eslint: 9.18.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -12348,27 +12348,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.20.0 debug: 4.4.0 eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.1': + '@typescript-eslint/scope-manager@8.20.0': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 - '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.20.0(eslint@9.18.0)(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0)(typescript@5.7.3) debug: 4.4.0 eslint: 9.18.0 ts-api-utils: 2.0.0(typescript@5.7.3) @@ -12376,12 +12376,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.1': {} + '@typescript-eslint/types@8.20.0': {} - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/visitor-keys': 8.20.0 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -12392,20 +12392,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.1(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/utils@8.20.0(eslint@9.18.0)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.20.0 + '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.1': + '@typescript-eslint/visitor-keys@8.20.0': dependencies: - '@typescript-eslint/types': 8.19.1 + '@typescript-eslint/types': 8.20.0 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -14068,17 +14068,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0)(typescript@5.7.3) eslint: 9.18.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14089,7 +14089,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.18.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14101,7 +14101,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -17702,9 +17702,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.695(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.695(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 @@ -17890,11 +17890,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.19.1(eslint@9.18.0)(typescript@5.7.3): + typescript-eslint@8.20.0(eslint@9.18.0)(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.19.1(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.20.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.20.0(eslint@9.18.0)(typescript@5.7.3) eslint: 9.18.0 typescript: 5.7.3 transitivePeerDependencies: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 435723204..84d749f30 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.3", "eslint-plugin-react-hooks": "^5.1.0", - "typescript-eslint": "^8.19.1" + "typescript-eslint": "^8.20.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From 579bb2a33efae401766c0ede556897f35c36ab05 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:45:09 +0000 Subject: [PATCH 224/262] chore(deps): update dependency @types/react to v19.0.6 (#1933) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 166 +++++++++++++++++++-------------------- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 889f3e9bf..26a4f6aee 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -84,7 +84,7 @@ "@types/chroma-js": "3.1.0", "@types/node": "^22.10.5", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.5", + "@types/react": "19.0.6", "@types/react-dom": "19.0.3", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d056dfb80..d198df11d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,19 +153,19 @@ importers: version: 7.15.3(chroma-js@3.1.2) '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/modals': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -225,10 +225,10 @@ importers: version: 11.0.1 jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.5)(react@19.0.0) + version: 2.11.0(@types/react@19.0.6)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -258,7 +258,7 @@ importers: version: 2.2.2 swagger-ui-react: specifier: ^5.18.2 - version: 5.18.2(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.18.2(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -282,11 +282,11 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.5 - version: 19.0.5 + specifier: 19.0.6 + version: 19.0.6 '@types/react-dom': specifier: 19.0.3 - version: 19.0.3(@types/react@19.0.5) + version: 19.0.3(@types/react@19.0.6) '@types/swagger-ui-react': specifier: ^4.18.3 version: 4.18.3 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -1134,7 +1134,7 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1192,7 +1192,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1232,7 +1232,7 @@ importers: version: link:../ui '@mantine/notifications': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1290,7 +1290,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1527,19 +1527,19 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/spotlight': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.5)(react@19.0.0) + version: 2.11.0(@types/react@19.0.6)(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1634,10 +1634,10 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1646,7 +1646,7 @@ importers: version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -1762,7 +1762,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) @@ -4334,8 +4334,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.5': - resolution: {integrity: sha512-i4OQzFiqsUCfoBns/KHpz+4QcvfjoCsTUi+mugo3lrSRA3+x0gJVvhZhAJrwLGEqz4EXiFVP4hPnOugx+m2uhg==} + '@types/react@19.0.6': + resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -10752,7 +10752,7 @@ snapshots: dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) @@ -10760,24 +10760,24 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.5)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.5)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.6)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.6)(react@19.0.0) type-fest: 4.30.2 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10793,25 +10793,25 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 @@ -10821,9 +10821,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tiptap/extension-link': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/react': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12269,11 +12269,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.3(@types/react@19.0.5)': + '@types/react-dom@19.0.3(@types/react@19.0.6)': dependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 - '@types/react@19.0.5': + '@types/react@19.0.6': dependencies: csstype: 3.1.3 @@ -12305,7 +12305,7 @@ snapshots: '@types/swagger-ui-react@4.18.3': dependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 '@types/through@0.0.33': dependencies: @@ -13647,18 +13647,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - '@types/react': 19.0.5 + '@types/react': 19.0.6 better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.5)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: @@ -15239,9 +15239,9 @@ snapshots: jose@5.9.6: {} - jotai@2.11.0(@types/react@19.0.5)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.6)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 react: 19.0.0 js-base64@3.7.7: @@ -15491,10 +15491,10 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16529,35 +16529,35 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.1.2(@types/react@19.0.5)(react@19.0.0)(redux@5.0.1): + react-redux@9.1.2(@types/react@19.0.6)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 redux: 5.0.1 react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.0.5)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.6)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.5)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.6)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 - react-remove-scroll@2.6.2(@types/react@19.0.5)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.6)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.5)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.5)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.6)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.6)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.5)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.5)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.6)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.6)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 react-scan@0.0.31: dependencies: @@ -16572,22 +16572,22 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@19.0.5)(react@19.0.0): + react-style-singleton@2.2.1(@types/react@19.0.6)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 - react-style-singleton@2.2.3(@types/react@19.0.5)(react@19.0.0): + react-style-singleton@2.2.3(@types/react@19.0.6)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 react-syntax-highlighter@15.5.0(react@19.0.0): dependencies: @@ -16598,12 +16598,12 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@19.0.5)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.6)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.5)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.6)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17434,7 +17434,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.18.2(@types/react@19.0.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.18.2(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.25.6 '@braintree/sanitize-url': 7.0.4 @@ -17459,7 +17459,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.1.2(@types/react@19.0.5)(react@19.0.0)(redux@5.0.1) + react-redux: 9.1.2(@types/react@19.0.6)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.5.0(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -18027,12 +18027,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.0.5)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.6)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -18050,26 +18050,26 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.5)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.6)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 - use-latest@1.2.1(@types/react@19.0.5)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.6)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.5)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.6)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 - use-sidecar@1.1.2(@types/react@19.0.5)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.6)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.5 + '@types/react': 19.0.6 use-sync-external-store@1.2.2(react@19.0.0): dependencies: From 2ea763c23161753619a204f9bb522ab04c37a2ab Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:46:24 +0000 Subject: [PATCH 225/262] fix(deps): update dependency eslint-plugin-react to ^7.37.4 (#1934) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 168 ++++++++++++++---------------------- tooling/eslint/package.json | 2 +- 2 files changed, 65 insertions(+), 105 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d198df11d..f59103fb2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1873,8 +1873,8 @@ importers: specifier: ^6.10.2 version: 6.10.2(eslint@9.18.0) eslint-plugin-react: - specifier: ^7.37.3 - version: 7.37.3(eslint@9.18.0) + specifier: ^7.37.4 + version: 7.37.4(eslint@9.18.0) eslint-plugin-react-hooks: specifier: ^5.1.0 version: 5.1.0(eslint@9.18.0) @@ -5860,8 +5860,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react@7.37.3: - resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + eslint-plugin-react@7.37.4: + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -6616,9 +6616,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-finalizationregistry@1.1.1: resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} @@ -8287,10 +8284,6 @@ packages: redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - reflect.getprototypeof@1.0.9: resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} engines: {node: '>= 0.4'} @@ -9618,10 +9611,6 @@ packages: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - which-builtin-type@1.2.1: resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} @@ -12752,7 +12741,7 @@ snapshots: array-buffer-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-array-buffer: 3.0.4 array-buffer-byte-length@1.0.2: @@ -12775,9 +12764,9 @@ snapshots: array.prototype.findlast@1.2.5: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -12814,20 +12803,20 @@ snapshots: array.prototype.tosorted@1.1.4: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 @@ -13038,8 +13027,8 @@ snapshots: call-bind@1.0.8: dependencies: call-bind-apply-helpers: 1.0.1 - es-define-property: 1.0.0 - get-intrinsic: 1.2.4 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 call-bound@1.0.3: @@ -13432,7 +13421,7 @@ snapshots: data-view-buffer@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -13444,7 +13433,7 @@ snapshots: data-view-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -13456,7 +13445,7 @@ snapshots: data-view-byte-offset@1.0.0: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-data-view: 1.0.1 @@ -13502,7 +13491,7 @@ snapshots: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-properties@1.2.1: dependencies: @@ -13843,7 +13832,7 @@ snapshots: es-define-property@1.0.0: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 es-define-property@1.0.1: {} @@ -13893,8 +13882,8 @@ snapshots: es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 esbuild-register@3.6.0(esbuild@0.19.12): dependencies: @@ -14130,7 +14119,7 @@ snapshots: dependencies: eslint: 9.18.0 - eslint-plugin-react@7.37.3(eslint@9.18.0): + eslint-plugin-react@7.37.4(eslint@9.18.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -14458,9 +14447,9 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 functions-have-names: 1.2.3 function.prototype.name@1.1.8: @@ -14534,9 +14523,9 @@ snapshots: get-symbol-description@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 get-symbol-description@1.1.0: dependencies: @@ -14649,7 +14638,7 @@ snapshots: gopd@1.0.1: dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 gopd@1.2.0: {} @@ -14694,7 +14683,7 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 has-proto@1.0.3: {} @@ -14708,7 +14697,7 @@ snapshots: has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 has-unicode@2.0.1: {} @@ -14948,8 +14937,8 @@ snapshots: is-array-buffer@3.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 is-array-buffer@3.0.5: dependencies: @@ -14975,7 +14964,7 @@ snapshots: is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-boolean-object@1.2.1: @@ -15016,10 +15005,6 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.8 - is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.3 @@ -15094,7 +15079,7 @@ snapshots: is-shared-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-shared-array-buffer@1.0.4: dependencies: @@ -15117,7 +15102,7 @@ snapshots: is-symbol@1.0.4: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 is-symbol@1.1.1: dependencies: @@ -15147,7 +15132,7 @@ snapshots: is-weakref@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 is-weakref@1.1.0: dependencies: @@ -15859,7 +15844,7 @@ snapshots: object.entries@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -16682,16 +16667,6 @@ snapshots: redux@5.0.1: {} - reflect.getprototypeof@1.0.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.6 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 - reflect.getprototypeof@1.0.9: dependencies: call-bind: 1.0.8 @@ -16713,7 +16688,7 @@ snapshots: regexp.prototype.flags@1.5.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 @@ -16860,9 +16835,9 @@ snapshots: safe-array-concat@1.1.2: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 isarray: 2.0.5 safe-array-concat@1.1.3: @@ -16990,8 +16965,8 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.2.6 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -17302,7 +17277,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 string.prototype.trim@1.2.10: dependencies: @@ -17316,9 +17291,9 @@ snapshots: string.prototype.trim@1.2.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 string.prototype.trimend@1.0.8: @@ -17336,7 +17311,7 @@ snapshots: string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 @@ -17819,7 +17794,7 @@ snapshots: typed-array-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 is-typed-array: 1.1.13 @@ -17831,10 +17806,10 @@ snapshots: typed-array-byte-length@1.0.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 typed-array-byte-length@1.0.3: @@ -17848,10 +17823,10 @@ snapshots: typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 typed-array-byte-offset@1.0.4: @@ -17866,10 +17841,10 @@ snapshots: typed-array-length@1.0.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 + gopd: 1.2.0 + has-proto: 1.2.0 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 @@ -17880,7 +17855,7 @@ snapshots: gopd: 1.2.0 is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 - reflect.getprototypeof: 1.0.6 + reflect.getprototypeof: 1.0.9 typedarray-to-buffer@3.1.5: dependencies: @@ -17913,9 +17888,9 @@ snapshots: unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-bigints: 1.0.2 - has-symbols: 1.0.3 + has-symbols: 1.1.0 which-boxed-primitive: 1.0.2 unbox-primitive@1.1.0: @@ -18279,7 +18254,7 @@ snapshots: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 - is-string: 1.0.7 + is-string: 1.1.1 is-symbol: 1.0.4 which-boxed-primitive@1.1.1: @@ -18290,32 +18265,17 @@ snapshots: is-string: 1.1.1 is-symbol: 1.1.1 - which-builtin-type@1.1.4: - dependencies: - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.2.1 - is-weakref: 1.1.0 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.18 - which-builtin-type@1.2.1: dependencies: call-bound: 1.0.3 - function.prototype.name: 1.1.6 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.1.0 is-finalizationregistry: 1.1.1 is-generator-function: 1.0.10 is-regex: 1.2.1 - is-weakref: 1.0.2 + is-weakref: 1.1.0 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 @@ -18331,9 +18291,9 @@ snapshots: which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which-typed-array@1.1.18: diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 84d749f30..9f72c3b33 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -22,7 +22,7 @@ "eslint-config-turbo": "^2.3.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "typescript-eslint": "^8.20.0" }, From 1e406a8a58ebdf51f59b5aa0e079baf46c6d02cf Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:49:04 +0000 Subject: [PATCH 226/262] fix(deps): update dependency @ianvs/prettier-plugin-sort-imports to ^4.4.1 (#1936) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 10 +++++----- tooling/prettier/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f59103fb2..184ec3c3f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1900,8 +1900,8 @@ importers: tooling/prettier: dependencies: '@ianvs/prettier-plugin-sort-imports': - specifier: ^4.4.0 - version: 4.4.0(prettier@3.4.2) + specifier: ^4.4.1 + version: 4.4.1(prettier@3.4.2) prettier: specifier: ^3.4.2 version: 3.4.2 @@ -2988,8 +2988,8 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@ianvs/prettier-plugin-sort-imports@4.4.0': - resolution: {integrity: sha512-f4/e+/ANGk3tHuwRW0uh2YuBR50I4h1ZjGQ+5uD8sWfinHTivQsnieR5cz24t8M6Vx4rYvZ5v/IEKZhYpzQm9Q==} + '@ianvs/prettier-plugin-sort-imports@4.4.1': + resolution: {integrity: sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==} peerDependencies: '@vue/compiler-sfc': 2.7.x || 3.x prettier: 2 || 3 @@ -10594,7 +10594,7 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@ianvs/prettier-plugin-sort-imports@4.4.0(prettier@3.4.2)': + '@ianvs/prettier-plugin-sort-imports@4.4.1(prettier@3.4.2)': dependencies: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index e6ce38088..f759a985d 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -10,7 +10,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@ianvs/prettier-plugin-sort-imports": "^4.4.0", + "@ianvs/prettier-plugin-sort-imports": "^4.4.1", "prettier": "^3.4.2" }, "devDependencies": { From f3a91ca37fd10319734b9f09b34c6f504375cfb8 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:15:16 +0000 Subject: [PATCH 227/262] chore(deps): update dependency @types/node to ^22.10.6 (#1942) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 108 +++++++++++++++++++-------------------- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 26a4f6aee..62261dd44 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -82,7 +82,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.0", - "@types/node": "^22.10.5", + "@types/node": "^22.10.6", "@types/prismjs": "^1.26.5", "@types/react": "19.0.6", "@types/react-dom": "19.0.3", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index ca3126b1e..fd9116301 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^22.10.5", + "@types/node": "^22.10.6", "dotenv-cli": "^8.0.0", "eslint": "^9.18.0", "prettier": "^3.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 184ec3c3f..7548b9e65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,10 +36,10 @@ importers: version: 14.0.3(semantic-release@24.2.1(typescript@5.7.3)) '@turbo/gen': specifier: ^2.3.3 - version: 2.3.3(@types/node@22.10.5)(typescript@5.7.3) + version: 2.3.3(@types/node@22.10.6)(typescript@5.7.3) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -72,10 +72,10 @@ importers: version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -276,8 +276,8 @@ importers: specifier: 3.1.0 version: 3.1.0 '@types/node': - specifier: ^22.10.5 - version: 22.10.5 + specifier: ^22.10.6 + version: 22.10.6 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -376,8 +376,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.10.5 - version: 22.10.5 + specifier: ^22.10.6 + version: 22.10.6 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -4311,8 +4311,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.10.5': - resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} + '@types/node@22.10.6': + resolution: {integrity: sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -12069,7 +12069,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.3.3(@types/node@22.10.5)(typescript@5.7.3)': + '@turbo/gen@2.3.3(@types/node@22.10.6)(typescript@5.7.3)': dependencies: '@turbo/workspaces': 2.3.3 commander: 10.0.1 @@ -12079,7 +12079,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.10.5)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@22.10.6)(typescript@5.7.3) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -12105,11 +12105,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/aws-lambda@8.10.146': {} @@ -12136,22 +12136,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/chroma-js@3.1.0': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/cookie@0.4.1': {} @@ -12162,11 +12162,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/cors@2.8.17': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/css-font-loading-module@0.0.7': {} @@ -12174,13 +12174,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.34': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -12189,7 +12189,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12204,7 +12204,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/hast@2.3.10': dependencies: @@ -12242,7 +12242,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.10.5': + '@types/node@22.10.6': dependencies: undici-types: 6.20.0 @@ -12271,21 +12271,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -12298,7 +12298,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/tinycolor2@1.4.6': {} @@ -12314,11 +12314,11 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': dependencies: @@ -12427,14 +12427,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12452,7 +12452,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12463,13 +12463,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.8': dependencies: @@ -12499,7 +12499,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.8': dependencies: @@ -13698,7 +13698,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.10.5 + '@types/node': 22.10.6 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -15216,7 +15216,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16393,7 +16393,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.10.5 + '@types/node': 22.10.6 long: 5.2.3 proxy-agent@6.4.0: @@ -17694,14 +17694,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.10.5)(typescript@5.7.3): + ts-node@10.9.2(@types/node@22.10.6)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.10.5 + '@types/node': 22.10.6 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18095,13 +18095,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.8(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -18113,33 +18113,33 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.3) optionalDependencies: - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 fsevents: 2.3.3 sass: 1.83.1 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.8(@types/node@22.10.5)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -18155,11 +18155,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.8(@types/node@22.10.5)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.10.5 + '@types/node': 22.10.6 '@vitest/ui': 2.1.8(vitest@2.1.8) jsdom: 26.0.0 transitivePeerDependencies: From a53e0f7ceed9cf771609be7b04090df9744ec4e6 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:27:22 +0000 Subject: [PATCH 228/262] fix(deps): update tanstack-query monorepo to ^5.64.1 (#1935) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 6 ++-- pnpm-lock.yaml | 62 ++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 62261dd44..b4f0ecd10 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -47,9 +47,9 @@ "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.28.1", - "@tanstack/react-query": "^5.64.0", - "@tanstack/react-query-devtools": "^5.64.0", - "@tanstack/react-query-next-experimental": "5.64.0", + "@tanstack/react-query": "^5.64.1", + "@tanstack/react-query-devtools": "^5.64.1", + "@tanstack/react-query-next-experimental": "5.64.1", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7548b9e65..25bae800f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,23 +176,23 @@ importers: specifier: ^3.28.1 version: 3.28.1(react@19.0.0) '@tanstack/react-query': - specifier: ^5.64.0 - version: 5.64.0(react@19.0.0) + specifier: ^5.64.1 + version: 5.64.1(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.64.0 - version: 5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(react@19.0.0) + specifier: ^5.64.1 + version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.64.0 - version: 5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + specifier: 5.64.1 + version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next version: 11.0.0-rc.700(typescript@5.7.3) @@ -544,7 +544,7 @@ importers: version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next version: 11.0.0-rc.700(typescript@5.7.3) @@ -3891,27 +3891,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.64.0': - resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==} + '@tanstack/query-core@5.64.1': + resolution: {integrity: sha512-978Wx4Wl4UJZbmvU/rkaM9cQtXXrbhK0lsz/UZhYIbyKYA8E4LdomTwyh2GHZ4oU0BKKoDH4YlKk2VscCUgNmg==} '@tanstack/query-devtools@5.62.16': resolution: {integrity: sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==} - '@tanstack/react-query-devtools@5.64.0': - resolution: {integrity: sha512-XORJjlbcBwPJaNbWBfZudaVVMi5TtlN1lYkHYU71hlG2c/jYpceO2yfAhZfgeyTNtqmTJ7jXOitgoGqtunsBAA==} + '@tanstack/react-query-devtools@5.64.1': + resolution: {integrity: sha512-8ajcGE3wXYlb4KuJnkFYkJwJKc/qmPNTpQD7YTgLRMBPTGGp1xk7VMzxL87DoXuweO8luplUUblJJ3noVs/luQ==} peerDependencies: - '@tanstack/react-query': ^5.64.0 + '@tanstack/react-query': ^5.64.1 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.64.0': - resolution: {integrity: sha512-s/ylNHCkZyl0MlUn1HBEmVaoRv9BMmVlZobU7oym/ae2Rp6TVptQFy8oFPGj+oEfXTw08q00uaRBdw84JZ3HfA==} + '@tanstack/react-query-next-experimental@5.64.1': + resolution: {integrity: sha512-23YAN+F8KiyVClBbzy4yUazWZRuoyuQnMlQIABPQCVQUx6+mOtVviwPlgXY47q1yMHRNnUwbKSVGct2JFqkeaw==} peerDependencies: - '@tanstack/react-query': ^5.64.0 + '@tanstack/react-query': ^5.64.1 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.64.0': - resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==} + '@tanstack/react-query@5.64.1': + resolution: {integrity: sha512-vW5ggHpIO2Yjj44b4sB+Fd3cdnlMJppXRBJkEHvld6FXh3j5dwWJoQo7mGtKI2RbSFyiyu/PhGAy0+Vv5ev9Eg==} peerDependencies: react: ^18 || ^19 @@ -11777,25 +11777,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.64.0': {} + '@tanstack/query-core@5.64.1': {} '@tanstack/query-devtools@5.62.16': {} - '@tanstack/react-query-devtools@5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.62.16 - '@tanstack/react-query': 5.64.0(react@19.0.0) + '@tanstack/react-query': 5.64.1(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.64.0(@tanstack/react-query@5.64.0(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.64.0(react@19.0.0) + '@tanstack/react-query': 5.64.1(react@19.0.0) next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) react: 19.0.0 - '@tanstack/react-query@5.64.0(react@19.0.0)': + '@tanstack/react-query@5.64.1(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.64.0 + '@tanstack/query-core': 5.64.1 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -12034,7 +12034,7 @@ snapshots: '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) @@ -12043,12 +12043,12 @@ snapshots: react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: - '@tanstack/react-query': 5.64.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@tanstack/react-query': 5.64.1(react@19.0.0) + '@trpc/react-query': 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.0(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@tanstack/react-query': 5.64.0(react@19.0.0) + '@tanstack/react-query': 5.64.1(react@19.0.0) '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) react: 19.0.0 From 05dc51b38e4270dfaf87d1e029be1663b28079b1 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 21:24:22 +0000 Subject: [PATCH 229/262] chore(deps): update pnpm to v9.15.4 (#1943) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 22239b736..04cf9ee28 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^2.1.8" }, - "packageManager": "pnpm@9.15.3", + "packageManager": "pnpm@9.15.4", "engines": { "node": ">=22.13.0" }, From f5cf92c49c8b39e3d830ce53013a7fec93b864ae Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:44:35 +0000 Subject: [PATCH 230/262] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/de.json | 12 +++--- packages/translation/src/lang/pl.json | 58 +++++++++++++-------------- packages/translation/src/lang/tr.json | 2 +- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index e196bd3ba..6f6ef1b61 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -989,8 +989,8 @@ "edit": { "title": "Element bearbeiten", "advancedOptions": { - "label": "Erweiterte Optionen", - "title": "Erweiterte Element Optionen" + "label": "Erweiterte Einstellungen", + "title": "Erweiterte Einstellungen Optionen" }, "field": { "integrations": { @@ -1002,7 +1002,7 @@ } }, "remove": { - "title": "Element löschen", + "title": "Element entfernen", "message": "Soll dieses Element wirklich entfernt werden?" } }, @@ -1021,7 +1021,7 @@ "label": "App Namen anzeigen" }, "showDescriptionTooltip": { - "label": "Beschreibungs Tooltip anzeigen" + "label": "Beschreibungs des Tooltips anzeigen" }, "pingEnabled": { "label": "Einfachen Ping aktivieren" @@ -1036,7 +1036,7 @@ }, "bookmarks": { "name": "Lesezeichen", - "description": "Zeigt mehrere App Links an", + "description": "Mehrere App Links anzeigen", "option": { "title": { "label": "Titel" @@ -2231,7 +2231,7 @@ "title": "Benutzer erstellt" }, "error": { - "title": "Benutzer anlegen fehlgeschlagen" + "title": "Erstellung des Benutzers fehlgeschlagen" } }, "action": { diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index c2ecde1be..09a820a97 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -213,10 +213,10 @@ "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Domyślna wyszukiwarka zmieniona pomyślnie" }, "error": { - "message": "" + "message": "Nie można zmienić domyślnej wyszukiwarki" } } }, @@ -499,7 +499,7 @@ } }, "app": { - "search": "", + "search": "Znajdź aplikację", "page": { "list": { "title": "Aplikacje", @@ -966,7 +966,7 @@ }, "create": { "title": "Wybierz element do dodania", - "search": "", + "search": "Filtrowanie elementów", "addToBoard": "Dodaj do tablicy" }, "moveResize": { @@ -1093,7 +1093,7 @@ "dnsQueriesToday": "Zapytania dzisiaj", "domainsBeingBlocked": "Domeny na liście blokowanych" }, - "domainsTooltip": "" + "domainsTooltip": "Ze względu na wiele integracji, Homarr nie może obliczyć dokładnej liczby zablokowanych domen" }, "dnsHoleControls": { "name": "Sterowanie dziurami DNS", @@ -1282,7 +1282,7 @@ }, "error": { "noUrl": "Adres URL iFrame nie został podany", - "unsupportedProtocol": "", + "unsupportedProtocol": "Podany adres URL używa nieobsługiwanego protokołu. Proszę użyć jednego z ({supportedProtocols})", "noBrowerSupport": "Twoja przeglądarka nie obsługuje ramek iframe. Zaktualizuj przeglądarkę." } }, @@ -1550,7 +1550,7 @@ }, "category": { "columnTitle": "Dodatki", - "detailsTitle": "" + "detailsTitle": "Kategorie (lub dodatkowe informacje)" }, "downSpeed": { "columnTitle": "Pobieranie", @@ -1620,29 +1620,29 @@ }, "actions": { "clients": { - "modalTitle": "", + "modalTitle": "Pobierz listę klientów", "pause": "", "resume": "" }, "client": { - "pause": "", - "resume": "" + "pause": "Wstrzymaj klienta", + "resume": "Wznów klient" }, "item": { - "pause": "", - "resume": "", + "pause": "Wstrzymaj element", + "resume": "Wznów element", "delete": { - "title": "", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "title": "Usuń przedmiot", + "modalTitle": "Czy jesteś pewien, że chcesz skasować to zadanie?", + "entry": "Usuń wpis", + "entryAndFiles": "Usuń wpis i plik(i)" } } }, - "globalRatio": "" + "globalRatio": "Wskaźnik globalny" }, "mediaRequests-requestList": { - "name": "", + "name": "Lista żądań multimediów", "description": "Zobacz listę wszystkich zapytań o media z Twoich instancji Overseerr lub Jellyseerr", "option": { "linksTargetNewTab": { @@ -1650,21 +1650,21 @@ } }, "pending": { - "approve": "", - "approving": "", - "decline": "" + "approve": "Zatwierdź prośbę", + "approving": "Zatwierdzanie zapytania...", + "decline": "Odrzuć prośbę" }, "availability": { "unknown": "Nieznany", - "pending": "", - "processing": "", + "pending": "Oczekujący", + "processing": "Przetwarzanie", "partiallyAvailable": "", - "available": "" + "available": "Dostępne" }, "toBeDetermined": "" }, "mediaRequests-requestStats": { - "name": "", + "name": "Statystyki zapytań o media", "description": "Statystyki Twoich zapytań o media", "option": {}, "titles": { @@ -1690,7 +1690,7 @@ "description": "", "option": { "defaultView": { - "label": "" + "label": "Domyślny widok" }, "queuePageSize": { "label": "" @@ -1701,10 +1701,10 @@ "queue": "Kolejka", "statistics": "" }, - "currentIndex": "", + "currentIndex": "{start}-{end} z {total}", "healthCheck": { "title": "Ocena stanu zdrowia", - "queued": "", + "queued": "W kolejce", "status": { "healthy": "", "unhealthy": "" @@ -1716,7 +1716,7 @@ "transcodes": "", "transcodesCount": "", "healthChecksCount": "", - "filesCount": "", + "filesCount": "Pliki: {value}", "savedSpace": "", "healthChecks": "", "videoCodecs": "", diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 2bc44e73e..e5ec59f4b 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -2885,7 +2885,7 @@ "description": "Tercihlerde öntanımlı arama motoru belirleyin" }, "search": { - "label": "{name} ile '{query}' ifadesini arayın" + "label": "{name} kullanarak \"{query}\" terimini ara" }, "from-integration": { "description": "Aramak için yazmaya başla" From 99c69ba65ddb5f8cf6bdd61518649fc21405ac87 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 05:49:13 +0000 Subject: [PATCH 231/262] fix(deps): update dependency sass to ^1.83.3 (#1945) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 96 ++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index b4f0ecd10..b165ac6f4 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -72,7 +72,7 @@ "react-dom": "19.0.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.83.1", + "sass": "^1.83.3", "superjson": "2.2.2", "swagger-ui-react": "^5.18.2", "use-deep-compare-effect": "^1.8.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25bae800f..51f713319 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: version: 2.3.3(@types/node@22.10.6)(typescript@5.7.3) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -72,10 +72,10 @@ importers: version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -183,13 +183,13 @@ importers: version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.64.1 - version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) @@ -231,7 +231,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -251,8 +251,8 @@ importers: specifier: ^0.14.1 version: 0.14.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) sass: - specifier: ^1.83.1 - version: 1.83.1 + specifier: ^1.83.3 + version: 1.83.3 superjson: specifier: 2.2.2 version: 2.2.2 @@ -556,7 +556,7 @@ importers: version: 4.5.0 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -629,10 +629,10 @@ importers: version: 7.3.1 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -709,7 +709,7 @@ importers: version: 1.11.13 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -1201,7 +1201,7 @@ importers: version: 1.11.13 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -1299,7 +1299,7 @@ importers: version: 0.5.16 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -1542,7 +1542,7 @@ importers: version: 2.11.0(@types/react@19.0.6)(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -1588,10 +1588,10 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) next-intl: specifier: 3.26.3 - version: 3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0) + version: 3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1649,7 +1649,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -1825,7 +1825,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: specifier: 19.0.0 version: 19.0.0 @@ -8451,8 +8451,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.83.1: - resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==} + sass@1.83.3: + resolution: {integrity: sha512-t4gb+nTrUeaPb+xzdqDmaMyi8evP0QuUB8o57dYHZF/lIGniqZ/PR/iWGcWoS8vr46F9V7buXFv290fMV6vTIQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -11787,10 +11787,10 @@ snapshots: '@tanstack/react-query': 5.64.1(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.64.1(react@19.0.0) - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: 19.0.0 '@tanstack/react-query@5.64.1(react@19.0.0)': @@ -12034,11 +12034,11 @@ snapshots: '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 @@ -12427,14 +12427,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12452,7 +12452,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12463,13 +12463,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.8': dependencies: @@ -12499,7 +12499,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.8': dependencies: @@ -15663,21 +15663,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-auth@5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: 19.0.0 - next-intl@3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1))(react@19.0.0): + next-intl@3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.1): + next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3): dependencies: '@next/env': 15.1.4 '@swc/counter': 0.1.3 @@ -15698,7 +15698,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.4 '@next/swc-win32-x64-msvc': 15.1.4 '@playwright/test': 1.49.1 - sass: 1.83.1 + sass: 1.83.3 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -16868,7 +16868,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.83.1: + sass@1.83.3: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -18095,13 +18095,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -18113,18 +18113,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.3) optionalDependencies: - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -18132,14 +18132,14 @@ snapshots: optionalDependencies: '@types/node': 22.10.6 fsevents: 2.3.3 - sass: 1.83.1 + sass: 1.83.3 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -18155,8 +18155,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.6 From ff1a00303728b15b8e709ce57d77a78967abab78 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 06:41:43 +0000 Subject: [PATCH 232/262] fix(deps): update dependency sass to ^1.83.4 (#1946) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 96 ++++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index b165ac6f4..e0a95d40b 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -72,7 +72,7 @@ "react-dom": "19.0.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.83.3", + "sass": "^1.83.4", "superjson": "2.2.2", "swagger-ui-react": "^5.18.2", "use-deep-compare-effect": "^1.8.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51f713319..ec7fd251d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: version: 2.3.3(@types/node@22.10.6)(typescript@5.7.3) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/coverage-v8': specifier: ^2.1.8 version: 2.1.8(vitest@2.1.8) @@ -72,10 +72,10 @@ importers: version: 5.7.3 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + version: 5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) vitest: specifier: ^2.1.8 - version: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + version: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) apps/nextjs: dependencies: @@ -183,13 +183,13 @@ importers: version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': specifier: 5.64.1 - version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) + version: 5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0) '@trpc/client': specifier: next version: 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next version: 11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) @@ -231,7 +231,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -251,8 +251,8 @@ importers: specifier: ^0.14.1 version: 0.14.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) sass: - specifier: ^1.83.3 - version: 1.83.3 + specifier: ^1.83.4 + version: 1.83.4 superjson: specifier: 2.2.2 version: 2.2.2 @@ -556,7 +556,7 @@ importers: version: 4.5.0 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -629,10 +629,10 @@ importers: version: 7.3.1 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) + version: 5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -709,7 +709,7 @@ importers: version: 1.11.13 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -1201,7 +1201,7 @@ importers: version: 1.11.13 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -1299,7 +1299,7 @@ importers: version: 0.5.16 next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -1542,7 +1542,7 @@ importers: version: 2.11.0(@types/react@19.0.6)(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -1588,10 +1588,10 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) next-intl: specifier: 3.26.3 - version: 3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0) + version: 3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1649,7 +1649,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -1825,7 +1825,7 @@ importers: version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 - version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: specifier: 19.0.0 version: 19.0.0 @@ -8451,8 +8451,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.83.3: - resolution: {integrity: sha512-t4gb+nTrUeaPb+xzdqDmaMyi8evP0QuUB8o57dYHZF/lIGniqZ/PR/iWGcWoS8vr46F9V7buXFv290fMV6vTIQ==} + sass@1.83.4: + resolution: {integrity: sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==} engines: {node: '>=14.0.0'} hasBin: true @@ -11787,10 +11787,10 @@ snapshots: '@tanstack/react-query': 5.64.1(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.64.1(@tanstack/react-query@5.64.1(react@19.0.0))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0)': dependencies: '@tanstack/react-query': 5.64.1(react@19.0.0) - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 '@tanstack/react-query@5.64.1(react@19.0.0)': @@ -12034,11 +12034,11 @@ snapshots: '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.700(@tanstack/react-query@5.64.1(react@19.0.0))(@trpc/client@11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@trpc/client': 11.0.0-rc.700(@trpc/server@11.0.0-rc.700(typescript@5.7.3))(typescript@5.7.3) '@trpc/server': 11.0.0-rc.700(typescript@5.7.3) - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 @@ -12427,14 +12427,14 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12452,7 +12452,7 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color @@ -12463,13 +12463,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': + '@vitest/mocker@2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0))': dependencies: '@vitest/spy': 2.1.8 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/pretty-format@2.1.8': dependencies: @@ -12499,7 +12499,7 @@ snapshots: sirv: 3.0.0 tinyglobby: 0.2.10 tinyrainbow: 1.2.0 - vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vitest: 2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) '@vitest/utils@2.1.8': dependencies: @@ -15663,21 +15663,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0): + next-auth@5.0.0-beta.25(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 - next-intl@3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3))(react@19.0.0): + next-intl@3.26.3(next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3) + next: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 use-intl: 3.26.3(react@19.0.0) - next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.3): + next@15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4): dependencies: '@next/env': 15.1.4 '@swc/counter': 0.1.3 @@ -15698,7 +15698,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.4 '@next/swc-win32-x64-msvc': 15.1.4 '@playwright/test': 1.49.1 - sass: 1.83.3 + sass: 1.83.4 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -16868,7 +16868,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.83.3: + sass@1.83.4: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -18095,13 +18095,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite-node@2.1.8(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - '@types/node' - less @@ -18113,18 +18113,18 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.7.3) optionalDependencies: - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -18132,14 +18132,14 @@ snapshots: optionalDependencies: '@types/node': 22.10.6 fsevents: 2.3.3 - sass: 1.83.3 + sass: 1.83.4 sugarss: 4.0.1(postcss@8.4.47) terser: 5.32.0 - vitest@2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): + vitest@2.1.8(@types/node@22.10.6)(@vitest/ui@2.1.8)(jsdom@26.0.0)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0): dependencies: '@vitest/expect': 2.1.8 - '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) + '@vitest/mocker': 2.1.8(vite@5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0)) '@vitest/pretty-format': 2.1.8 '@vitest/runner': 2.1.8 '@vitest/snapshot': 2.1.8 @@ -18155,8 +18155,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.5(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) - vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.3)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite: 5.4.5(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) + vite-node: 2.1.8(@types/node@22.10.6)(sass@1.83.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.6 From 3e67b411b6e35c3b9a8154e8270a6f36f78f0024 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 09:16:54 +0000 Subject: [PATCH 233/262] chore(deps): update dependency @types/react to v19.0.7 (#1947) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 166 +++++++++++++++++++-------------------- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index e0a95d40b..a77a19452 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -84,7 +84,7 @@ "@types/chroma-js": "3.1.0", "@types/node": "^22.10.6", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.6", + "@types/react": "19.0.7", "@types/react-dom": "19.0.3", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec7fd251d..9e11b8506 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,19 +153,19 @@ importers: version: 7.15.3(chroma-js@3.1.2) '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/modals': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -225,10 +225,10 @@ importers: version: 11.0.1 jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.6)(react@19.0.0) + version: 2.11.0(@types/react@19.0.7)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -258,7 +258,7 @@ importers: version: 2.2.2 swagger-ui-react: specifier: ^5.18.2 - version: 5.18.2(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.18.2(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -282,11 +282,11 @@ importers: specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.6 - version: 19.0.6 + specifier: 19.0.7 + version: 19.0.7 '@types/react-dom': specifier: 19.0.3 - version: 19.0.3(@types/react@19.0.6) + version: 19.0.3(@types/react@19.0.7) '@types/swagger-ui-react': specifier: ^4.18.3 version: 4.18.3 @@ -921,10 +921,10 @@ importers: version: 0.30.1 drizzle-orm: specifier: ^0.38.3 - version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + version: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.7)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) drizzle-zod: specifier: ^0.6.1 - version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) + version: 0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.7)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1) mysql2: specifier: 3.12.0 version: 3.12.0 @@ -1134,7 +1134,7 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1192,7 +1192,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1232,7 +1232,7 @@ importers: version: link:../ui '@mantine/notifications': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1290,7 +1290,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1527,19 +1527,19 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) '@mantine/spotlight': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) jotai: specifier: ^2.11.0 - version: 2.11.0(@types/react@19.0.6)(react@19.0.0) + version: 2.11.0(@types/react@19.0.7)(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1634,10 +1634,10 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1646,7 +1646,7 @@ importers: version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1762,7 +1762,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.15.3 version: 7.15.3(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -4334,8 +4334,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.6': - resolution: {integrity: sha512-gIlMztcTeDgXCUj0vCBOqEuSEhX//63fW9SZtCJ+agxoQTOklwDfiEMlTWn4mR/C/UK5VHlpwsCsOyf7/hc4lw==} + '@types/react@19.0.7': + resolution: {integrity: sha512-MoFsEJKkAtZCrC1r6CM8U22GzhG7u2Wir8ons/aCKH6MBdD1ibV24zOSSkdZVUKqN5i396zG5VKLYZ3yaUZdLA==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -10741,7 +10741,7 @@ snapshots: dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) @@ -10749,24 +10749,24 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.6)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.6)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.7)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.7)(react@19.0.0) type-fest: 4.30.2 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10782,25 +10782,25 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@mantine/store': 7.15.3(react@19.0.0) react: 19.0.0 @@ -10810,9 +10810,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tiptap/extension-link': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/react': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12258,11 +12258,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.3(@types/react@19.0.6)': + '@types/react-dom@19.0.3(@types/react@19.0.7)': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - '@types/react@19.0.6': + '@types/react@19.0.7': dependencies: csstype: 3.1.3 @@ -12294,7 +12294,7 @@ snapshots: '@types/swagger-ui-react@4.18.3': dependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 '@types/through@0.0.33': dependencies: @@ -13636,18 +13636,18 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): + drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.7)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - '@types/react': 19.0.6 + '@types/react': 19.0.7 better-sqlite3: 11.7.2 mysql2: 3.12.0 react: 19.0.0 - drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): + drizzle-zod@0.6.1(drizzle-orm@0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.7)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0))(zod@3.24.1): dependencies: - drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.6)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) + drizzle-orm: 0.38.3(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(@types/react@19.0.7)(better-sqlite3@11.7.2)(mysql2@3.12.0)(react@19.0.0) zod: 3.24.1 dunder-proto@1.0.1: @@ -15224,9 +15224,9 @@ snapshots: jose@5.9.6: {} - jotai@2.11.0(@types/react@19.0.6)(react@19.0.0): + jotai@2.11.0(@types/react@19.0.7)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react: 19.0.0 js-base64@3.7.7: @@ -15476,10 +15476,10 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.15.3(react@19.0.0) '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16514,35 +16514,35 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.1.2(@types/react@19.0.6)(react@19.0.0)(redux@5.0.1): + react-redux@9.1.2(@types/react@19.0.7)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.3 react: 19.0.0 use-sync-external-store: 1.2.2(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 redux: 5.0.1 react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.0.6)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.6)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - react-remove-scroll@2.6.2(@types/react@19.0.6)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.6)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.6)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.7)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.7)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.6)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.6)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.7)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.7)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react-scan@0.0.31: dependencies: @@ -16557,22 +16557,22 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@19.0.6)(react@19.0.0): + react-style-singleton@2.2.1(@types/react@19.0.7)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - react-style-singleton@2.2.3(@types/react@19.0.6)(react@19.0.0): + react-style-singleton@2.2.3(@types/react@19.0.7)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 react-syntax-highlighter@15.5.0(react@19.0.0): dependencies: @@ -16583,12 +16583,12 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@19.0.6)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.7)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.6)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.7)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17409,7 +17409,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.18.2(@types/react@19.0.6)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.18.2(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.25.6 '@braintree/sanitize-url': 7.0.4 @@ -17434,7 +17434,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.1.2(@types/react@19.0.6)(react@19.0.0)(redux@5.0.1) + react-redux: 9.1.2(@types/react@19.0.7)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.5.0(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -18002,12 +18002,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.0.6)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -18025,26 +18025,26 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.6)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - use-latest@1.2.1(@types/react@19.0.6)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.7)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.6)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.7)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 - use-sidecar@1.1.2(@types/react@19.0.6)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.7)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.6 + '@types/react': 19.0.7 use-sync-external-store@1.2.2(react@19.0.0): dependencies: From 75c791801e593e88deb3abcacf2b91aade0871d8 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:48:54 +0100 Subject: [PATCH 234/262] fix(deps): update dependency eslint-config-prettier to v10 (#1937) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 10 +++++----- tooling/eslint/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9e11b8506..1cab1c348 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1861,8 +1861,8 @@ importers: specifier: ^15.1.4 version: 15.1.4 eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.18.0) + specifier: ^10.0.1 + version: 10.0.1(eslint@9.18.0) eslint-config-turbo: specifier: ^2.3.3 version: 2.3.3(eslint@9.18.0) @@ -5803,8 +5803,8 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + eslint-config-prettier@10.0.1: + resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -14040,7 +14040,7 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.18.0): + eslint-config-prettier@10.0.1(eslint@9.18.0): dependencies: eslint: 9.18.0 diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 9f72c3b33..161ab38cf 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -18,7 +18,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@next/eslint-plugin-next": "^15.1.4", - "eslint-config-prettier": "^9.1.0", + "eslint-config-prettier": "^10.0.1", "eslint-config-turbo": "^2.3.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", From 4d94fce523ff8b04f3b15055ee44b760311d3bd1 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 18:39:12 +0100 Subject: [PATCH 235/262] test: adjust nzbget test to use append instead of scan (#1952) --- package.json | 6 +-- packages/integrations/test/nzbget.spec.ts | 46 +++++++++++++---------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 04cf9ee28..601753572 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "lint:ws": "pnpm dlx sherif@latest", "package:new": "turbo gen init", "release": "semantic-release", - "test": "cross-env NODE_ENV=development vitest run --exclude e2e --coverage.enabled ", - "test:e2e": "cross-env NODE_ENV=development vitest e2e", - "test:ui": "cross-env NODE_ENV=development vitest --exclude e2e --ui --coverage.enabled", + "test": "cross-env NODE_ENV=development CI=true vitest run --exclude e2e --coverage.enabled ", + "test:e2e": "cross-env NODE_ENV=development CI=true vitest e2e", + "test:ui": "cross-env NODE_ENV=development CI=true vitest --exclude e2e --ui --coverage.enabled", "typecheck": "turbo typecheck", "with-env": "dotenv -e .env --" }, diff --git a/packages/integrations/test/nzbget.spec.ts b/packages/integrations/test/nzbget.spec.ts index 9241c5a52..c30008a99 100644 --- a/packages/integrations/test/nzbget.spec.ts +++ b/packages/integrations/test/nzbget.spec.ts @@ -1,3 +1,4 @@ +import { readFile } from "fs/promises"; import { join } from "path"; import type { StartedTestContainer } from "testcontainers"; import { GenericContainer, getContainerRuntimeClient, ImageName, Wait } from "testcontainers"; @@ -169,29 +170,34 @@ const nzbGetAddItemAsync = async ( password: string, integration: NzbGetIntegration, ) => { - // Add nzb file in the watch folder - await container.copyFilesToContainer([ - { - source: join(__dirname, "/volumes/usenet/test_download_100MB.nzb"), - target: "/downloads/nzb/test_download_100MB.nzb", - }, - ]); + const fileContent = await readFile(join(__dirname, "/volumes/usenet/test_download_100MB.nzb"), "base64"); // Trigger scanning of the watch folder (Only available way to add an item except "append" which is too complex and unnecessary) await fetch(`http://${container.getHost()}:${container.getMappedPort(6789)}/${username}:${password}/jsonrpc`, { method: "POST", - body: JSON.stringify({ method: "scan" }), + body: JSON.stringify({ + method: "append", + params: [ + "/downloads/nzb/test_download_100MB.nzb", // NZBFilename + fileContent, // Content + "", // Category + 0, // Priority + true, // AddToTop + false, // Paused + "random", // DupeKey + 1000, // DupeScore + "all", // DupeMode + [], // PPParameters + ], + }), }); - // Retries up to 10000 times to let NzbGet scan and process the nzb (1 retry should suffice tbh but NzbGet is slow) - for (let i = 0; i < 10000; i++) { - const { - items: [item], - } = await integration.getClientJobsAndStatusAsync(); - if (item) { - // Remove the added time because NzbGet doesn't return it properly in this specific case - const { added: _, ...itemRest } = item; - return itemRest; - } + + const { + items: [item], + } = await integration.getClientJobsAndStatusAsync(); + + if (!item) { + throw new Error("No item found"); } - // Throws if it can't find the item - throw new Error("No item found"); + + return item; }; From a03a01b964e3ab30af6078326b91fb10817b3b98 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 17:53:17 +0000 Subject: [PATCH 236/262] fix(deps): update mantine monorepo to ^7.16.0 (#1948) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 12 +- packages/form/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 4 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 4 +- pnpm-lock.yaml | 243 +++++++++++------------- 10 files changed, 133 insertions(+), 152 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index a77a19452..fdccb2a78 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -38,12 +38,12 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.15.3", - "@mantine/core": "^7.15.3", - "@mantine/dropzone": "^7.15.3", - "@mantine/hooks": "^7.15.3", - "@mantine/modals": "^7.15.3", - "@mantine/tiptap": "^7.15.3", + "@mantine/colors-generator": "^7.16.0", + "@mantine/core": "^7.16.0", + "@mantine/dropzone": "^7.16.0", + "@mantine/hooks": "^7.16.0", + "@mantine/modals": "^7.16.0", + "@mantine/tiptap": "^7.16.0", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.11.1", "@tabler/icons-react": "^3.28.1", diff --git a/packages/form/package.json b/packages/form/package.json index 85fa287f2..f765c86de 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.15.3" + "@mantine/form": "^7.16.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index f79101064..1dfe91465 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -32,7 +32,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", + "@mantine/core": "^7.16.0", "@tabler/icons-react": "^3.28.1", "dayjs": "^1.11.13", "next": "15.1.4", diff --git a/packages/modals/package.json b/packages/modals/package.json index d69e03619..6b1779a7f 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", - "@mantine/hooks": "^7.15.3", + "@mantine/core": "^7.16.0", + "@mantine/hooks": "^7.16.0", "react": "19.0.0" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index a3cc00dda..bef90b8fa 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^7.15.3", + "@mantine/notifications": "^7.16.0", "@tabler/icons-react": "^3.28.1" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 7d27af588..0dcbf34be 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,8 +37,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", - "@mantine/hooks": "^7.15.3", + "@mantine/core": "^7.16.0", + "@mantine/hooks": "^7.16.0", "adm-zip": "0.5.16", "next": "15.1.4", "react": "19.0.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 695c636ce..dcf9a98cd 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -32,9 +32,9 @@ "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", - "@mantine/hooks": "^7.15.3", - "@mantine/spotlight": "^7.15.3", + "@mantine/core": "^7.16.0", + "@mantine/hooks": "^7.16.0", + "@mantine/spotlight": "^7.16.0", "@tabler/icons-react": "^3.28.1", "jotai": "^2.11.0", "next": "15.1.4", diff --git a/packages/ui/package.json b/packages/ui/package.json index 7ab4d7c97..568d4b18e 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,9 +29,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", - "@mantine/dates": "^7.15.3", - "@mantine/hooks": "^7.15.3", + "@mantine/core": "^7.16.0", + "@mantine/dates": "^7.16.0", + "@mantine/hooks": "^7.16.0", "@tabler/icons-react": "^3.28.1", "mantine-react-table": "2.0.0-beta.8", "next": "15.1.4", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 771594400..cb493a6a3 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -41,8 +41,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.15.3", - "@mantine/hooks": "^7.15.3", + "@mantine/core": "^7.16.0", + "@mantine/hooks": "^7.16.0", "@tabler/icons-react": "^3.28.1", "@tiptap/extension-color": "2.11.2", "@tiptap/extension-highlight": "2.11.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1cab1c348..d2e1786d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,23 +149,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.15.3 - version: 7.15.3(chroma-js@3.1.2) + specifier: ^7.16.0 + version: 7.16.0(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) '@mantine/modals': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -228,7 +228,7 @@ importers: version: 2.11.0(@types/react@19.0.7)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -991,8 +991,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1133,11 +1133,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1191,8 +1191,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1231,8 +1231,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1289,11 +1289,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) adm-zip: specifier: 0.5.16 version: 0.5.16 @@ -1526,14 +1526,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) '@mantine/spotlight': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1585,7 +1585,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1633,20 +1633,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': - specifier: ^7.15.3 - version: 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1761,11 +1761,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.15.3 - version: 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.15.3 - version: 7.15.3(react@19.0.0) + specifier: ^7.16.0 + version: 7.16.0(react@19.0.0) '@tabler/icons-react': specifier: ^3.28.1 version: 3.28.1(react@19.0.0) @@ -1822,7 +1822,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.4 version: 15.1.4(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -3153,79 +3153,79 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/colors-generator@7.15.3': - resolution: {integrity: sha512-SQjiilxzGHJ1yatcRjmgm0PY9W6tWswYHC5GNT1QAMzKIVwrN3Jo8944OJSX/6I+8dYVjqVqxEpKGF79F+HfCA==} + '@mantine/colors-generator@7.16.0': + resolution: {integrity: sha512-mVZB527OPii03DHuiniYufSCOlrPy+nhQyYOrL49qDa5NB/lAccjTGH6QYqQV+Wqdmh9kbpgI13Bo+pwS/iZiQ==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.15.3': - resolution: {integrity: sha512-8IMTq5xDJDjByDUYkDNKImikASStzrnPtVumKsrEnyEY0zhAWkAe/z/+PjTUMcN44ncJ/PrXQkJ6qMaVWzSZwA==} + '@mantine/core@7.16.0': + resolution: {integrity: sha512-lYYwa4Itz77uC8zQzdiKiKdz9Q01NBOYPZsotIKsP/Zqij0qhpsVxoJ8MK3P8IqFyLfThTMmR4sT1qlGfLTA9Q==} peerDependencies: - '@mantine/hooks': 7.15.3 + '@mantine/hooks': 7.16.0 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.15.3': - resolution: {integrity: sha512-lv71dcfA8qB43v03cRELC2/G7FQXfAgj0tSMImj2p2FL3PSWWF4WRvW6byiB+hszk4lgooSo7kppzkSMVUlsdA==} + '@mantine/dates@7.16.0': + resolution: {integrity: sha512-BVPA/3itdAjuX11GMebeS1c5VNruwkkRhCUVVv1F4lBhZqSeL/d8yPb8Iyfdw0tMGIkdxHKT9winG+bXAoF0Kw==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@7.15.3': - resolution: {integrity: sha512-3BZNKqfWyE6/DXOUoYbT72kVDiAu4jRLxUM7KsWojlSy1ucgd8X5oC6yvMlCa2nSDbrVlCNzsDADrezh2MxaNA==} + '@mantine/dropzone@7.16.0': + resolution: {integrity: sha512-lZwv96MswNTc0zSt/ObM8uykv2pZbM3eK6pNoA25jn+hZSrcB/TiET15Uhc7k0E/naxvQbZTxeNxQRpN3xrKRQ==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.15.3': - resolution: {integrity: sha512-E+xrY/z6Y4JoHqL4f91AoMeNspuAe+nET667wKVBSUu4yLQX0FS8uvdypoaasb3LcTk7GRmnDNYyfC37zz4zkg==} + '@mantine/form@7.16.0': + resolution: {integrity: sha512-PUxX5v8XMoNwjFdZbns4dDcQf8U9lIfagFsDGz3KKStgsuBcgnn97/MDP6SpsOHV3g7AGEJoF65+ax1fMOkkNA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.15.3': - resolution: {integrity: sha512-rZYObhrmww3OIb4O30pDox/rc+9k3AExO0FSw13t7cfz5/Di+Ho1cChswVFAshnp81ucGEod1fiDOfuyGW7JhA==} + '@mantine/hooks@7.16.0': + resolution: {integrity: sha512-8KxrhckesbrV6tyOndm6fJ+jSKA4KX/67ppDFlfYMMbV6Yh+s0zRO4KLi2uCtl6tgckQd2/zDzX3kQk+VYKqDA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.15.3': - resolution: {integrity: sha512-S/nu/4OcQw2sBbFVEIU1FfyiLDKVN9qOxnxhQBxaR9BFk4gEALzuU2uCorlu4f8TKUMo2kho0b0iTuYluQ07Dw==} + '@mantine/modals@7.16.0': + resolution: {integrity: sha512-2AUFqwuz9JhEnNNjf7Oly4oj1nePKn6QcMKJOQx6Kr1eBcSZRsZ4EmlSONFvfTz/9UJDvm30Hk4HPOPoi0i5fQ==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.15.3': - resolution: {integrity: sha512-C1obM5dQsSHIB3B3Kajk0TdLnBpLXFMOIy0otG5khoL/8c8qOU4U0kHxtPVFBFvU/hw4rx7/idiiJdjp8DepDQ==} + '@mantine/notifications@7.16.0': + resolution: {integrity: sha512-ofwpMLoe/QaXTEqrLNA2vEq4KblacKHLg1xJn7a40irt6uQ6GSlFoLveKjOupiG0xUa+gIbevA1uv3tHJuJ6uA==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.15.3': - resolution: {integrity: sha512-O+r8QLqo93A1h5CJJotZuMVywVVo6d8vJ/DYhxq18QzGuPF8bHoXPD3m+unEA34aSO4Y70kyXyFdZRyCVmOS0g==} + '@mantine/spotlight@7.16.0': + resolution: {integrity: sha512-RZfApZLH7i8ydI5Kj4VD/FSu7Kbp9KAo/KY6bRhpRaFhFLaGRocmCCJ/1RGM/UhMr8gUYwvNa3Be3zStfI7Bvw==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.15.3': - resolution: {integrity: sha512-E3pCEm5ozRF/iK/jM1liKntjqaKhotvPtNAqSBcx6AkWSJ8bt16JhNrmrs3J3RmWvfqzF+fftT8HI/3HYbgu9w==} + '@mantine/store@7.16.0': + resolution: {integrity: sha512-IeeKk8w+a5Z5sctMUYrLBVVA9173B2oKPP4Rh656eoXH+vz/KCpL/ITnFWrt0Cv9Fyv/V+zm1UyAnUWRdQ6uXA==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.15.3': - resolution: {integrity: sha512-hMtRIpT1ujpGrjr2b2iX34cBaAoryCKpoPFPK9hrwmES2/53asYYyC+8Y47RBBpZmpuFlqM2VOy2Nk83gXqZGQ==} + '@mantine/tiptap@7.16.0': + resolution: {integrity: sha512-gYiFLoyQ8MSIDPMmi0DG1Ze3kCJHO8tHqbK0yUIKqe8r1Lnzdl86tERqLfUAFlDrQUg2vnNFgpZ8WVfiTHKZgw==} peerDependencies: - '@mantine/core': 7.15.3 - '@mantine/hooks': 7.15.3 + '@mantine/core': 7.16.0 + '@mantine/hooks': 7.16.0 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -8197,16 +8197,6 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -10737,14 +10727,14 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/colors-generator@7.15.3(chroma-js@3.1.2)': + '@mantine/colors-generator@7.16.0(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) clsx: 2.1.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10755,65 +10745,65 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-dropzone-esm: 15.2.0(react@19.0.0) - '@mantine/form@7.15.3(react@19.0.0)': + '@mantine/form@7.16.0(react@19.0.0)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.0.0 - '@mantine/hooks@7.15.3(react@19.0.0)': + '@mantine/hooks@7.16.0(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/modals@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) - '@mantine/store': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) + '@mantine/store': 7.16.0(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) - '@mantine/store': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) + '@mantine/store': 7.16.0(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/store@7.15.3(react@19.0.0)': + '@mantine/store@7.16.0(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/tiptap@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tiptap/extension-link@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2))(@tiptap/react@2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) '@tiptap/extension-link': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2) '@tiptap/react': 2.11.2(@tiptap/core@2.11.2(@tiptap/pm@2.11.2))(@tiptap/pm@2.11.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 @@ -15476,11 +15466,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.8(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(@tabler/icons-react@3.28.1(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.15.3(@mantine/core@7.15.3(@mantine/hooks@7.15.3(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.15.3(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.15.3(react@19.0.0) + '@mantine/core': 7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.16.0(@mantine/core@7.16.0(@mantine/hooks@7.16.0(react@19.0.0))(@types/react@19.0.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.0(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.0(react@19.0.0) '@tabler/icons-react': 3.28.1(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -16537,7 +16527,7 @@ snapshots: dependencies: react: 19.0.0 react-remove-scroll-bar: 2.3.8(@types/react@19.0.7)(react@19.0.0) - react-style-singleton: 2.2.1(@types/react@19.0.7)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.7)(react@19.0.0) tslib: 2.8.1 use-callback-ref: 1.3.3(@types/react@19.0.7)(react@19.0.0) use-sidecar: 1.1.2(@types/react@19.0.7)(react@19.0.0) @@ -16557,15 +16547,6 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.1(@types/react@19.0.7)(react@19.0.0): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 19.0.0 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.0.7 - react-style-singleton@2.2.3(@types/react@19.0.7)(react@19.0.0): dependencies: get-nonce: 1.0.1 From 1fd3fd8dfbdfd7c4a5e2a84365ef028f3452dffd Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 19:03:38 +0100 Subject: [PATCH 237/262] refactor: env validation typescript and common package (#1912) --- apps/nextjs/next.config.ts | 8 ++-- .../app/[locale]/_client-providers/trpc.tsx | 2 +- .../src/app/[locale]/auth/login/page.tsx | 2 +- .../boards/(content)/_header-actions.tsx | 2 +- apps/nextjs/src/app/[locale]/layout.tsx | 2 +- .../manage/users/groups/[id]/members/page.tsx | 2 +- .../src/app/[locale]/widgets/[kind]/page.tsx | 2 +- apps/nextjs/src/{env.mjs => env.ts} | 7 +-- packages/api/src/router/invite/checks.ts | 2 +- packages/api/src/router/test/group.spec.ts | 2 +- packages/api/src/router/test/invite.spec.ts | 2 +- packages/api/src/router/test/user.spec.ts | 2 +- packages/auth/configuration.ts | 2 +- packages/auth/{env.mjs => env.ts} | 45 +++---------------- packages/auth/events.ts | 2 +- packages/auth/package.json | 2 +- packages/auth/providers/check-provider.ts | 2 +- .../authorization/ldap-authorization.ts | 2 +- .../auth/providers/credentials/ldap-client.ts | 2 +- packages/auth/providers/filter-providers.ts | 2 +- packages/auth/providers/oidc/oidc-provider.ts | 2 +- .../providers/test/ldap-authorization.spec.ts | 2 +- packages/auth/test/events.spec.ts | 2 +- packages/common/{env.mjs => env.ts} | 5 ++- packages/common/package.json | 6 ++- packages/common/src/encryption.ts | 2 +- packages/common/src/env-validation.ts | 42 +++++++++++++++++ .../cron-jobs/src/jobs/session-cleanup.ts | 2 +- packages/db/configs/mysql.config.ts | 2 +- packages/db/configs/sqlite.config.ts | 2 +- packages/db/driver.ts | 2 +- packages/db/{env.mjs => env.ts} | 9 ++-- packages/db/migrations/mysql/migrate.ts | 2 +- packages/db/migrations/sqlite/migrate.ts | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 3 ++ 36 files changed, 98 insertions(+), 83 deletions(-) rename apps/nextjs/src/{env.mjs => env.ts} (86%) rename packages/auth/{env.mjs => env.ts} (75%) rename packages/common/{env.mjs => env.ts} (86%) create mode 100644 packages/common/src/env-validation.ts rename packages/db/{env.mjs => env.ts} (87%) diff --git a/apps/nextjs/next.config.ts b/apps/nextjs/next.config.ts index 5e36315b1..5a082309c 100644 --- a/apps/nextjs/next.config.ts +++ b/apps/nextjs/next.config.ts @@ -1,13 +1,13 @@ // Importing env files here to validate on build -import "@homarr/auth/env.mjs"; -import "@homarr/db/env.mjs"; -import "@homarr/common/env.mjs"; +import "@homarr/auth/env"; +import "@homarr/db/env"; +import "@homarr/common/env"; import type { NextConfig } from "next"; import MillionLint from "@million/lint"; import createNextIntlPlugin from "next-intl/plugin"; -import "./src/env.mjs"; +import "./src/env.ts"; // Package path does not work... so we need to use relative path const withNextIntl = createNextIntlPlugin("../../packages/translation/src/request.ts"); diff --git a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx index 52d5c10b7..3d2042030 100644 --- a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx +++ b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx @@ -21,7 +21,7 @@ import type { AppRouter } from "@homarr/api"; import { clientApi, getTrpcUrl } from "@homarr/api/client"; import { createHeadersCallbackForSource } from "@homarr/api/shared"; -import { env } from "~/env.mjs"; +import { env } from "~/env"; const getWebSocketProtocol = () => { // window is not defined on server side diff --git a/apps/nextjs/src/app/[locale]/auth/login/page.tsx b/apps/nextjs/src/app/[locale]/auth/login/page.tsx index 9b5dfbd83..c9d913c08 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/page.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/page.tsx @@ -1,7 +1,7 @@ import { redirect } from "next/navigation"; import { Card, Center, Stack, Text, Title } from "@mantine/core"; -import { env } from "@homarr/auth/env.mjs"; +import { env } from "@homarr/auth/env"; import { auth } from "@homarr/auth/next"; import { getScopedI18n } from "@homarr/translation/server"; diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx index e951a4318..b0657e1e1 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx @@ -28,7 +28,7 @@ import { useCategoryActions } from "~/components/board/sections/category/categor import { CategoryEditModal } from "~/components/board/sections/category/category-edit-modal"; import { useDynamicSectionActions } from "~/components/board/sections/dynamic/dynamic-actions"; import { HeaderButton } from "~/components/layout/header/button"; -import { env } from "~/env.mjs"; +import { env } from "~/env"; import { useEditMode, useRequiredBoard } from "./_context"; export const BoardContentHeaderActions = () => { diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx index 6469ddd39..8f145ee3c 100644 --- a/apps/nextjs/src/app/[locale]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/layout.tsx @@ -9,7 +9,7 @@ import "~/styles/scroll-area.scss"; import { notFound } from "next/navigation"; import { NextIntlClientProvider } from "next-intl"; -import { env } from "@homarr/auth/env.mjs"; +import { env } from "@homarr/auth/env"; import { auth } from "@homarr/auth/next"; import { ModalProvider } from "@homarr/modals"; import { Notifications } from "@homarr/notifications"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx index 9609a2089..965bb61ed 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/[id]/members/page.tsx @@ -5,7 +5,7 @@ import { IconExclamationCircle } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; -import { env } from "@homarr/auth/env.mjs"; +import { env } from "@homarr/auth/env"; import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; import { everyoneGroup } from "@homarr/definitions"; diff --git a/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx b/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx index bc3af8b27..bcffbb4e2 100644 --- a/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx +++ b/apps/nextjs/src/app/[locale]/widgets/[kind]/page.tsx @@ -5,7 +5,7 @@ import { db } from "@homarr/db"; import type { WidgetKind } from "@homarr/definitions"; import { widgetImports } from "@homarr/widgets"; -import { env } from "~/env.mjs"; +import { env } from "~/env"; import { WidgetPreviewPageContent } from "./_content"; interface Props { diff --git a/apps/nextjs/src/env.mjs b/apps/nextjs/src/env.ts similarity index 86% rename from apps/nextjs/src/env.mjs rename to apps/nextjs/src/env.ts index fffc18fda..72d1c3837 100644 --- a/apps/nextjs/src/env.mjs +++ b/apps/nextjs/src/env.ts @@ -1,6 +1,8 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; +import { shouldSkipEnvValidation } from "@homarr/common/env-validation"; + export const env = createEnv({ shared: { PORT: z.coerce.number().default(3000), @@ -13,7 +15,7 @@ export const env = createEnv({ server: { // Comma separated list of docker hostnames that can be used to connect to query the docker endpoints (localhost:2375,host.docker.internal:2375, ...) DOCKER_HOSTNAMES: z.string().optional(), - DOCKER_PORTS: z.number().optional(), + DOCKER_PORTS: z.string().optional(), }, /** * Specify your client-side environment variables schema here. @@ -32,6 +34,5 @@ export const env = createEnv({ DOCKER_PORTS: process.env.DOCKER_PORTS, // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR, }, - skipValidation: - Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint", + skipValidation: shouldSkipEnvValidation(), }); diff --git a/packages/api/src/router/invite/checks.ts b/packages/api/src/router/invite/checks.ts index 330faaae3..10585d8b2 100644 --- a/packages/api/src/router/invite/checks.ts +++ b/packages/api/src/router/invite/checks.ts @@ -1,6 +1,6 @@ import { TRPCError } from "@trpc/server"; -import { env } from "@homarr/auth/env.mjs"; +import { env } from "@homarr/auth/env"; export const throwIfCredentialsDisabled = () => { if (!env.AUTH_PROVIDERS.includes("credentials")) { diff --git a/packages/api/src/router/test/group.spec.ts b/packages/api/src/router/test/group.spec.ts index ab5357e8f..e3d989ab7 100644 --- a/packages/api/src/router/test/group.spec.ts +++ b/packages/api/src/router/test/group.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; -import * as env from "@homarr/auth/env.mjs"; +import * as env from "@homarr/auth/env"; import { createId, eq } from "@homarr/db"; import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/api/src/router/test/invite.spec.ts b/packages/api/src/router/test/invite.spec.ts index 886ef63df..c03d9a180 100644 --- a/packages/api/src/router/test/invite.spec.ts +++ b/packages/api/src/router/test/invite.spec.ts @@ -24,7 +24,7 @@ vi.mock("@homarr/auth", async () => { }); // Mock the env module to return the credentials provider -vi.mock("@homarr/auth/env.mjs", () => { +vi.mock("@homarr/auth/env", () => { return { env: { AUTH_PROVIDERS: ["credentials"], diff --git a/packages/api/src/router/test/user.spec.ts b/packages/api/src/router/test/user.spec.ts index 0a3aa8d4f..9aa6e1c1b 100644 --- a/packages/api/src/router/test/user.spec.ts +++ b/packages/api/src/router/test/user.spec.ts @@ -28,7 +28,7 @@ vi.mock("@homarr/auth", async () => { }); // Mock the env module to return the credentials provider -vi.mock("@homarr/auth/env.mjs", () => { +vi.mock("@homarr/auth/env", () => { return { env: { AUTH_PROVIDERS: ["credentials"], diff --git a/packages/auth/configuration.ts b/packages/auth/configuration.ts index 49dd7126a..96bba6723 100644 --- a/packages/auth/configuration.ts +++ b/packages/auth/configuration.ts @@ -8,7 +8,7 @@ import type { SupportedAuthProvider } from "@homarr/definitions"; import { createAdapter } from "./adapter"; import { createSessionCallback } from "./callbacks"; -import { env } from "./env.mjs"; +import { env } from "./env"; import { createSignInEventHandler } from "./events"; import { createCredentialsConfiguration, createLdapConfiguration } from "./providers/credentials/credentials-provider"; import { EmptyNextAuthProvider } from "./providers/empty/empty-provider"; diff --git a/packages/auth/env.mjs b/packages/auth/env.ts similarity index 75% rename from packages/auth/env.mjs rename to packages/auth/env.ts index 9105ee776..6d9aa3354 100644 --- a/packages/auth/env.mjs +++ b/packages/auth/env.ts @@ -1,10 +1,9 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; -const trueStrings = ["1", "yes", "t", "true"]; -const falseStrings = ["0", "no", "f", "false"]; +import { createBooleanSchema, createDurationSchema, shouldSkipEnvValidation } from "@homarr/common/env-validation"; +import { supportedAuthProviders } from "@homarr/definitions"; -const supportedAuthProviders = ["credentials", "oidc", "ldap"]; const authProvidersSchema = z .string() .min(1) @@ -14,7 +13,7 @@ const authProvidersSchema = z .toLowerCase() .split(",") .filter((provider) => { - if (supportedAuthProviders.includes(provider)) return true; + if (supportedAuthProviders.some((supportedProvider) => supportedProvider === provider)) return true; else if (!provider) console.log("One or more of the entries for AUTH_PROVIDER could not be parsed and/or returned null."); else console.log(`The value entered for AUTH_PROVIDER "${provider}" is incorrect.`); @@ -23,41 +22,7 @@ const authProvidersSchema = z ) .default("credentials"); -const createDurationSchema = (defaultValue) => - z - .string() - .regex(/^\d+[smhd]?$/) - .default(defaultValue) - .transform((duration) => { - const lastChar = duration[duration.length - 1]; - if (!isNaN(Number(lastChar))) { - return Number(defaultValue); - } - - const multipliers = { - s: 1, - m: 60, - h: 60 * 60, - d: 60 * 60 * 24, - }; - const numberDuration = Number(duration.slice(0, -1)); - const multiplier = multipliers[lastChar]; - - return numberDuration * multiplier; - }); - -const booleanSchema = z - .string() - .default("false") - .transform((value, ctx) => { - const normalized = value.trim().toLowerCase(); - if (trueStrings.includes(normalized)) return true; - if (falseStrings.includes(normalized)) return false; - - throw new Error(`Invalid boolean value for ${ctx.path.join(".")}`); - }); - -const skipValidation = Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION); +const skipValidation = shouldSkipEnvValidation(); const authProviders = skipValidation ? [] : authProvidersSchema.parse(process.env.AUTH_PROVIDERS); export const env = createEnv({ @@ -71,7 +36,7 @@ export const env = createEnv({ AUTH_OIDC_CLIENT_ID: z.string().min(1), AUTH_OIDC_CLIENT_SECRET: z.string().min(1), AUTH_OIDC_CLIENT_NAME: z.string().min(1).default("OIDC"), - AUTH_OIDC_AUTO_LOGIN: booleanSchema, + AUTH_OIDC_AUTO_LOGIN: createBooleanSchema(false), AUTH_OIDC_SCOPE_OVERWRITE: z.string().min(1).default("openid email profile groups"), AUTH_OIDC_GROUPS_ATTRIBUTE: z.string().default("groups"), // Is used in the signIn event to assign the correct groups, key is from object of decoded id_token AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE: z.string().optional(), diff --git a/packages/auth/events.ts b/packages/auth/events.ts index 31713ac7d..2c8c68dd7 100644 --- a/packages/auth/events.ts +++ b/packages/auth/events.ts @@ -8,7 +8,7 @@ import { groupMembers, groups, users } from "@homarr/db/schema"; import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions"; import { logger } from "@homarr/log"; -import { env } from "./env.mjs"; +import { env } from "./env"; import { extractProfileName } from "./providers/oidc/oidc-provider"; export const createSignInEventHandler = (db: Database): Exclude["signIn"] => { diff --git a/packages/auth/package.json b/packages/auth/package.json index e94c2cacf..a4c57c9eb 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -11,7 +11,7 @@ "./client": "./client.ts", "./server": "./server.ts", "./shared": "./shared.ts", - "./env.mjs": "./env.mjs" + "./env": "./env.ts" }, "main": "./index.ts", "types": "./index.ts", diff --git a/packages/auth/providers/check-provider.ts b/packages/auth/providers/check-provider.ts index fd483465b..b38e3c3ad 100644 --- a/packages/auth/providers/check-provider.ts +++ b/packages/auth/providers/check-provider.ts @@ -1,6 +1,6 @@ import type { SupportedAuthProvider } from "@homarr/definitions"; -import { env } from "../env.mjs"; +import { env } from "../env"; export const isProviderEnabled = (provider: SupportedAuthProvider) => { // The question mark is placed there because isProviderEnabled is called during static build of about page diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts index 529d26ff2..bf793ba05 100644 --- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts +++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts @@ -7,7 +7,7 @@ import { logger } from "@homarr/log"; import type { validation } from "@homarr/validation"; import { z } from "@homarr/validation"; -import { env } from "../../../env.mjs"; +import { env } from "../../../env"; import { LdapClient } from "../ldap-client"; export const authorizeWithLdapCredentialsAsync = async ( diff --git a/packages/auth/providers/credentials/ldap-client.ts b/packages/auth/providers/credentials/ldap-client.ts index 7c266360f..4dc48e2a8 100644 --- a/packages/auth/providers/credentials/ldap-client.ts +++ b/packages/auth/providers/credentials/ldap-client.ts @@ -3,7 +3,7 @@ import { Client } from "ldapts"; import { objectEntries } from "@homarr/common"; -import { env } from "../../env.mjs"; +import { env } from "../../env"; export interface BindOptions { distinguishedName: string; diff --git a/packages/auth/providers/filter-providers.ts b/packages/auth/providers/filter-providers.ts index 1ee2ad38e..236bfe6ac 100644 --- a/packages/auth/providers/filter-providers.ts +++ b/packages/auth/providers/filter-providers.ts @@ -1,6 +1,6 @@ import type { Provider } from "next-auth/providers"; -import { env } from "../env.mjs"; +import { env } from "../env"; export const filterProviders = (providers: Exclude unknown>[]) => { // During build this will be undefined, so we default to an empty array diff --git a/packages/auth/providers/oidc/oidc-provider.ts b/packages/auth/providers/oidc/oidc-provider.ts index 5d4570564..82328b3ff 100644 --- a/packages/auth/providers/oidc/oidc-provider.ts +++ b/packages/auth/providers/oidc/oidc-provider.ts @@ -2,7 +2,7 @@ import type { ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapte import type { OIDCConfig } from "@auth/core/providers"; import type { Profile } from "@auth/core/types"; -import { env } from "../../env.mjs"; +import { env } from "../../env"; import { createRedirectUri } from "../../redirect"; export const OidcProvider = (headers: ReadonlyHeaders | null): OIDCConfig => ({ diff --git a/packages/auth/providers/test/ldap-authorization.spec.ts b/packages/auth/providers/test/ldap-authorization.spec.ts index 8d4a03ff9..50f35399e 100644 --- a/packages/auth/providers/test/ldap-authorization.spec.ts +++ b/packages/auth/providers/test/ldap-authorization.spec.ts @@ -9,7 +9,7 @@ import { createDb } from "@homarr/db/test"; import { authorizeWithLdapCredentialsAsync } from "../credentials/authorization/ldap-authorization"; import * as ldapClient from "../credentials/ldap-client"; -vi.mock("../../env.mjs", () => ({ +vi.mock("../../env", () => ({ env: { AUTH_LDAP_BIND_DN: "bind_dn", AUTH_LDAP_BIND_PASSWORD: "bind_password", diff --git a/packages/auth/test/events.spec.ts b/packages/auth/test/events.spec.ts index 2bd4ad921..a2783bad7 100644 --- a/packages/auth/test/events.spec.ts +++ b/packages/auth/test/events.spec.ts @@ -11,7 +11,7 @@ import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions"; import { createSignInEventHandler } from "../events"; -vi.mock("../env.mjs", () => { +vi.mock("../env", () => { return { env: { AUTH_OIDC_GROUPS_ATTRIBUTE: "someRandomGroupsKey", diff --git a/packages/common/env.mjs b/packages/common/env.ts similarity index 86% rename from packages/common/env.mjs rename to packages/common/env.ts index 4e62ec25d..fda1b7859 100644 --- a/packages/common/env.mjs +++ b/packages/common/env.ts @@ -2,6 +2,8 @@ import { randomBytes } from "crypto"; import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; +import { shouldSkipEnvValidation } from "./src/env-validation"; + const errorSuffix = `, please generate a 64 character secret in hex format or use the following: "${randomBytes(32).toString("hex")}"`; export const env = createEnv({ @@ -23,6 +25,5 @@ export const env = createEnv({ runtimeEnv: { SECRET_ENCRYPTION_KEY: process.env.SECRET_ENCRYPTION_KEY, }, - skipValidation: - Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint", + skipValidation: shouldSkipEnvValidation(), }); diff --git a/packages/common/package.json b/packages/common/package.json index b9758e9ff..f1705a4ed 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -9,7 +9,8 @@ "./types": "./src/types.ts", "./server": "./src/server.ts", "./client": "./src/client.ts", - "./env.mjs": "./env.mjs" + "./env": "./env.ts", + "./env-validation": "./src/env-validation.ts" }, "typesVersions": { "*": { @@ -30,7 +31,8 @@ "dayjs": "^1.11.13", "next": "15.1.4", "react": "19.0.0", - "react-dom": "19.0.0" + "react-dom": "19.0.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/common/src/encryption.ts b/packages/common/src/encryption.ts index e9a20b69c..a10451f9f 100644 --- a/packages/common/src/encryption.ts +++ b/packages/common/src/encryption.ts @@ -1,6 +1,6 @@ import crypto from "crypto"; -import { env } from "../env.mjs"; +import { env } from "../env"; const algorithm = "aes-256-cbc"; //Using AES encryption diff --git a/packages/common/src/env-validation.ts b/packages/common/src/env-validation.ts new file mode 100644 index 000000000..ff884bc0a --- /dev/null +++ b/packages/common/src/env-validation.ts @@ -0,0 +1,42 @@ +import { z } from "zod"; + +const trueStrings = ["1", "yes", "t", "true"]; +const falseStrings = ["0", "no", "f", "false"]; + +export const createBooleanSchema = (defaultValue: boolean) => + z + .string() + .default(defaultValue.toString()) + .transform((value, ctx) => { + const normalized = value.trim().toLowerCase(); + if (trueStrings.includes(normalized)) return true; + if (falseStrings.includes(normalized)) return false; + + throw new Error(`Invalid boolean value for ${ctx.path.join(".")}`); + }); + +export const createDurationSchema = (defaultValue: `${number}${"s" | "m" | "h" | "d"}`) => + z + .string() + .regex(/^\d+[smhd]?$/) + .default(defaultValue) + .transform((duration) => { + const lastChar = duration[duration.length - 1] as "s" | "m" | "h" | "d"; + if (!isNaN(Number(lastChar))) { + return Number(defaultValue); + } + + const multipliers = { + s: 1, + m: 60, + h: 60 * 60, + d: 60 * 60 * 24, + }; + const numberDuration = Number(duration.slice(0, -1)); + const multiplier = multipliers[lastChar]; + + return numberDuration * multiplier; + }); + +export const shouldSkipEnvValidation = () => + Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint"; diff --git a/packages/cron-jobs/src/jobs/session-cleanup.ts b/packages/cron-jobs/src/jobs/session-cleanup.ts index cbfe8533d..72f6c88fe 100644 --- a/packages/cron-jobs/src/jobs/session-cleanup.ts +++ b/packages/cron-jobs/src/jobs/session-cleanup.ts @@ -1,4 +1,4 @@ -import { env } from "@homarr/auth/env.mjs"; +import { env } from "@homarr/auth/env"; import { NEVER } from "@homarr/cron-jobs-core/expressions"; import { db, eq, inArray } from "@homarr/db"; import { sessions, users } from "@homarr/db/schema"; diff --git a/packages/db/configs/mysql.config.ts b/packages/db/configs/mysql.config.ts index c04425119..1eb3aa943 100644 --- a/packages/db/configs/mysql.config.ts +++ b/packages/db/configs/mysql.config.ts @@ -1,6 +1,6 @@ import type { Config } from "drizzle-kit"; -import { env } from "../env.mjs"; +import { env } from "../env"; export default { dialect: "mysql", diff --git a/packages/db/configs/sqlite.config.ts b/packages/db/configs/sqlite.config.ts index 052c926bb..6b38860f2 100644 --- a/packages/db/configs/sqlite.config.ts +++ b/packages/db/configs/sqlite.config.ts @@ -1,6 +1,6 @@ import type { Config } from "drizzle-kit"; -import { env } from "../env.mjs"; +import { env } from "../env"; export default { dialect: "sqlite", diff --git a/packages/db/driver.ts b/packages/db/driver.ts index 8e54f07b5..643651d78 100644 --- a/packages/db/driver.ts +++ b/packages/db/driver.ts @@ -7,7 +7,7 @@ import mysql from "mysql2"; import { logger } from "@homarr/log"; -import { env } from "./env.mjs"; +import { env } from "./env"; import * as mysqlSchema from "./schema/mysql"; import * as sqliteSchema from "./schema/sqlite"; diff --git a/packages/db/env.mjs b/packages/db/env.ts similarity index 87% rename from packages/db/env.mjs rename to packages/db/env.ts index fb5ec2923..4c5ae0319 100644 --- a/packages/db/env.mjs +++ b/packages/db/env.ts @@ -1,12 +1,14 @@ import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; +import { shouldSkipEnvValidation } from "@homarr/common/env-validation"; + const drivers = { betterSqlite3: "better-sqlite3", mysql2: "mysql2", -}; +} as const; -const isDriver = (driver) => process.env.DB_DRIVER === driver; +const isDriver = (driver: (typeof drivers)[keyof typeof drivers]) => process.env.DB_DRIVER === driver; const isUsingDbHost = Boolean(process.env.DB_HOST); const onlyAllowUrl = isDriver(drivers.betterSqlite3); const urlRequired = onlyAllowUrl || !isUsingDbHost; @@ -55,6 +57,5 @@ export const env = createEnv({ DB_NAME: process.env.DB_NAME, DB_PORT: process.env.DB_PORT, }, - skipValidation: - Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint", + skipValidation: shouldSkipEnvValidation(), }); diff --git a/packages/db/migrations/mysql/migrate.ts b/packages/db/migrations/mysql/migrate.ts index daca71ee7..4b2616c49 100644 --- a/packages/db/migrations/mysql/migrate.ts +++ b/packages/db/migrations/mysql/migrate.ts @@ -3,7 +3,7 @@ import { migrate } from "drizzle-orm/mysql2/migrator"; import mysql from "mysql2"; import type { Database } from "../.."; -import { env } from "../../env.mjs"; +import { env } from "../../env"; import * as mysqlSchema from "../../schema/mysql"; import { seedDataAsync } from "../seed"; diff --git a/packages/db/migrations/sqlite/migrate.ts b/packages/db/migrations/sqlite/migrate.ts index 803f36215..e075a8d14 100644 --- a/packages/db/migrations/sqlite/migrate.ts +++ b/packages/db/migrations/sqlite/migrate.ts @@ -2,7 +2,7 @@ import Database from "better-sqlite3"; import { drizzle } from "drizzle-orm/better-sqlite3"; import { migrate } from "drizzle-orm/better-sqlite3/migrator"; -import { env } from "../../env.mjs"; +import { env } from "../../env"; import * as sqliteSchema from "../../schema/sqlite"; import { seedDataAsync } from "../seed"; diff --git a/packages/db/package.json b/packages/db/package.json index a33036b75..e26e15ed1 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -11,7 +11,7 @@ "./test": "./test/index.ts", "./queries": "./queries/index.ts", "./validationSchemas": "./validationSchemas.ts", - "./env.mjs": "./env.mjs" + "./env": "./env.ts" }, "main": "./index.ts", "types": "./index.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2e1786d7..505a53ee1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -716,6 +716,9 @@ importers: react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 From 986e013ca3eaf402d9014c5586536e05d93e9adc Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 19:31:50 +0100 Subject: [PATCH 238/262] fix(app): missing noreferer attribute for anchor tag (#1915) --- packages/widgets/src/app/component.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/widgets/src/app/component.tsx b/packages/widgets/src/app/component.tsx index 33edf9f19..77039a7af 100644 --- a/packages/widgets/src/app/component.tsx +++ b/packages/widgets/src/app/component.tsx @@ -98,7 +98,14 @@ interface AppLinkProps { const AppLink = ({ href, openInNewTab, enabled, children }: PropsWithChildren) => enabled ? ( - + {children} ) : ( From 5c16fb8d6c6892e4fab119509304326da845c0e0 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 19:44:37 +0100 Subject: [PATCH 239/262] chore: add start command to run from source (#1928) * chore: add start command to run from source * fix: start command does not run in parallel --- .gitignore | 2 ++ package.json | 1 + 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 7e1d14c68..3d0fc5393 100644 --- a/.gitignore +++ b/.gitignore @@ -54,7 +54,9 @@ yarn-error.log* *.log apps/tasks/tasks.cjs +apps/tasks/tasks.css apps/websocket/wssServer.cjs +apps/websocket/wssServer.css apps/nextjs/.million/ packages/cli/cli.cjs diff --git a/package.json b/package.json index 601753572..8afa6d4b2 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "lint:ws": "pnpm dlx sherif@latest", "package:new": "turbo gen init", "release": "semantic-release", + "start": "concurrently \"pnpm with-env node apps/tasks/tasks.cjs\" \"pnpm with-env node apps/websocket/wssServer.cjs\" \"pnpm -F nextjs start\"", "test": "cross-env NODE_ENV=development CI=true vitest run --exclude e2e --coverage.enabled ", "test:e2e": "cross-env NODE_ENV=development CI=true vitest e2e", "test:ui": "cross-env NODE_ENV=development CI=true vitest --exclude e2e --ui --coverage.enabled", From ec3bda34e0c1adacf0cfc5d7af272f9f2617fbe5 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 19:45:21 +0100 Subject: [PATCH 240/262] fix(media-request): media and media-request status can have missing values (#1911) --- .../integrations/src/interfaces/media-requests/media-request.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/integrations/src/interfaces/media-requests/media-request.ts b/packages/integrations/src/interfaces/media-requests/media-request.ts index c997e8014..7c90c15d8 100644 --- a/packages/integrations/src/interfaces/media-requests/media-request.ts +++ b/packages/integrations/src/interfaces/media-requests/media-request.ts @@ -47,6 +47,7 @@ export enum MediaRequestStatus { PendingApproval = 1, Approved = 2, Declined = 3, + Failed = 4, } export enum MediaAvailability { @@ -55,4 +56,5 @@ export enum MediaAvailability { Processing = 3, PartiallyAvailable = 4, Available = 5, + Blacklisted = 6, } From e01d74f4f89aee9a122b660e6303c356871c6ebb Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Tue, 14 Jan 2025 19:54:55 +0100 Subject: [PATCH 241/262] feat(board): add mobile home board (#1910) * feat(board): add mobile home board * fix: add missing translations * fix: mysql key reference with other datatype * fix: format issue * fix: missing trpc context arguments in tests * fix: missing trpc context arguments in tests --- .../[locale]/boards/[name]/settings/page.tsx | 6 +- .../_components/board-card-menu-dropdown.tsx | 15 +- .../src/app/[locale]/manage/boards/page.tsx | 10 +- .../_components/board-settings-form.tsx | 19 + .../_components/_change-home-board.tsx | 21 +- .../manage/users/[userId]/general/page.tsx | 2 +- packages/api/src/router/board.ts | 55 +- packages/api/src/router/test/app.spec.ts | 10 + packages/api/src/router/test/board.spec.ts | 61 +- .../router/test/docker/docker-router.spec.ts | 3 + packages/api/src/router/test/group.spec.ts | 66 +- .../integration/integration-router.spec.ts | 13 + packages/api/src/router/test/invite.spec.ts | 5 + .../src/router/test/serverSettings.spec.ts | 3 + packages/api/src/router/test/user.spec.ts | 8 + .../api/src/router/test/widgets/app.spec.ts | 2 + packages/api/src/router/user.ts | 12 +- packages/api/src/trpc.ts | 2 + packages/common/src/server.ts | 1 + packages/common/src/user-agent.ts | 11 + .../migrations/mysql/0020_salty_doorman.sql | 2 + .../migrations/mysql/meta/0020_snapshot.json | 1700 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../sqlite/0020_empty_hellfire_club.sql | 1 + .../migrations/sqlite/meta/0020_snapshot.json | 1625 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 3 + packages/db/schema/sqlite.ts | 3 + packages/server-settings/src/index.ts | 1 + .../boards-search-group.tsx | 26 +- packages/translation/src/lang/en.json | 19 +- packages/validation/src/user.ts | 5 +- 32 files changed, 3634 insertions(+), 90 deletions(-) create mode 100644 packages/common/src/user-agent.ts create mode 100644 packages/db/migrations/mysql/0020_salty_doorman.sql create mode 100644 packages/db/migrations/mysql/meta/0020_snapshot.json create mode 100644 packages/db/migrations/sqlite/0020_empty_hellfire_club.sql create mode 100644 packages/db/migrations/sqlite/meta/0020_snapshot.json diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx index 36818573a..1ffb892d1 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx @@ -101,7 +101,11 @@ export default async function BoardSettingsPage(props: Props) { - + )} diff --git a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx index eef7dedb2..68ecf3a57 100644 --- a/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx +++ b/apps/nextjs/src/app/[locale]/manage/boards/_components/board-card-menu-dropdown.tsx @@ -3,7 +3,7 @@ import { useCallback } from "react"; import Link from "next/link"; import { Menu } from "@mantine/core"; -import { IconCopy, IconHome, IconSettings, IconTrash } from "@tabler/icons-react"; +import { IconCopy, IconDeviceMobile, IconHome, IconSettings, IconTrash } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -43,6 +43,12 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => await revalidatePathActionAsync("/"); }, }); + const setMobileHomeBoardMutation = clientApi.board.setMobileHomeBoard.useMutation({ + onSettled: async () => { + // Revalidate all as it's part of the user settings, /boards page and board manage page + await revalidatePathActionAsync("/"); + }, + }); const deleteBoardMutation = clientApi.board.deleteBoard.useMutation({ onSettled: async () => { await revalidatePathActionAsync("/manage/boards"); @@ -68,6 +74,10 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => await setHomeBoardMutation.mutateAsync({ id: board.id }); }, [board.id, setHomeBoardMutation]); + const handleSetMobileHomeBoard = useCallback(async () => { + await setMobileHomeBoardMutation.mutateAsync({ id: board.id }); + }, [board.id, setMobileHomeBoardMutation]); + const handleDuplicateBoard = useCallback(() => { openDuplicateModal({ board: { @@ -85,6 +95,9 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) => }> {t("setHomeBoard.label")} + }> + {t("setMobileHomeBoard.label")} + {session?.user.permissions.includes("board-create") && ( }> {t("duplicate.label")} diff --git a/apps/nextjs/src/app/[locale]/manage/boards/page.tsx b/apps/nextjs/src/app/[locale]/manage/boards/page.tsx index 2b1529894..4974b6a86 100644 --- a/apps/nextjs/src/app/[locale]/manage/boards/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/boards/page.tsx @@ -15,7 +15,7 @@ import { Title, Tooltip, } from "@mantine/core"; -import { IconDotsVertical, IconHomeFilled, IconLock, IconWorld } from "@tabler/icons-react"; +import { IconDeviceMobile, IconDotsVertical, IconHomeFilled, IconLock, IconWorld } from "@tabler/icons-react"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -88,6 +88,14 @@ const BoardCard = async ({ board }: BoardCardProps) => { )} + {board.isMobileHome && ( + + }> + {t("action.setMobileHomeBoard.badge.label")} + + + )} + {board.creator && ( diff --git a/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx b/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx index 8890cbce0..69f2329b0 100644 --- a/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/settings/_components/board-settings-form.tsx @@ -37,6 +37,25 @@ export const BoardSettingsForm = ({ defaultValues }: { defaultValues: ServerSett )} {...form.getInputProps("homeBoardId")} /> + ({ + value: board.id, + label: board.name, + image: board.logoImageUrl, + }))} + SelectOption={({ label, image }: { value: string; label: string; image: string | null }) => ( + + {/* eslint-disable-next-line @next/next/no-img-element */} + {image ? {label} : } + + {label} + + + )} + {...form.getInputProps("mobileHomeBoardId")} + /> )}
diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx index b6fe54770..1666e15b2 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx @@ -18,13 +18,14 @@ interface ChangeHomeBoardFormProps { export const ChangeHomeBoardForm = ({ user, boardsData }: ChangeHomeBoardFormProps) => { const t = useI18n(); - const { mutate, isPending } = clientApi.user.changeHomeBoardId.useMutation({ + const { mutate, isPending } = clientApi.user.changeHomeBoards.useMutation({ async onSettled() { await revalidatePathActionAsync(`/manage/users/${user.id}`); }, onSuccess(_, variables) { form.setInitialValues({ homeBoardId: variables.homeBoardId, + mobileHomeBoardId: variables.mobileHomeBoardId, }); showSuccessNotification({ message: t("user.action.changeHomeBoard.notification.success.message"), @@ -36,9 +37,10 @@ export const ChangeHomeBoardForm = ({ user, boardsData }: ChangeHomeBoardFormPro }); }, }); - const form = useZodForm(validation.user.changeHomeBoard, { + const form = useZodForm(validation.user.changeHomeBoards, { initialValues: { homeBoardId: user.homeBoardId ?? "", + mobileHomeBoardId: user.mobileHomeBoardId ?? "", }, }); @@ -52,7 +54,18 @@ export const ChangeHomeBoardForm = ({ user, boardsData }: ChangeHomeBoardFormPro return (
- +
+ + + {t("widget.healthMonitoring.cluster.table.header.name")} + {type !== "storage" ? ( + {t("widget.healthMonitoring.cluster.table.header.cpu")} + ) : null} + {type !== "storage" ? ( + {t("widget.healthMonitoring.cluster.table.header.memory")} + ) : null} + {type === "storage" ? ( + {t("widget.healthMonitoring.cluster.table.header.node")} + ) : null} + + + + {data.map((item) => { + return ( + + + + + {item.type === "storage" ? ( + + ) : ( + <> + + + + )} + + + + ); + })} + +
+ + + {item.name} + + {item.node}{(item.cpu.utilization * 100).toFixed(1)}% + {(item.memory.total ? (item.memory.used / item.memory.total) * 100 : 0).toFixed(1)}% +
+ ); +}; diff --git a/packages/widgets/src/health-monitoring/component.tsx b/packages/widgets/src/health-monitoring/component.tsx index d4a597f4f..0c44f999b 100644 --- a/packages/widgets/src/health-monitoring/component.tsx +++ b/packages/widgets/src/health-monitoring/component.tsx @@ -1,425 +1,61 @@ "use client"; -import { - Avatar, - Box, - Card, - Center, - Divider, - Flex, - Group, - Indicator, - List, - Modal, - Progress, - RingProgress, - Stack, - Text, - Tooltip, -} from "@mantine/core"; -import { useDisclosure, useElementSize } from "@mantine/hooks"; -import { - IconBrain, - IconClock, - IconCpu, - IconCpu2, - IconFileReport, - IconInfoCircle, - IconServer, - IconTemperature, - IconVersions, -} from "@tabler/icons-react"; +import { ScrollArea, Tabs } from "@mantine/core"; import dayjs from "dayjs"; import duration from "dayjs/plugin/duration"; import { clientApi } from "@homarr/api/client"; -import type { TranslationFunction } from "@homarr/translation"; -import { useI18n } from "@homarr/translation/client"; import type { WidgetComponentProps } from "../definition"; +import { ClusterHealthMonitoring } from "./cluster/cluster-health"; +import { SystemHealthMonitoring } from "./system-health"; dayjs.extend(duration); -export default function HealthMonitoringWidget({ options, integrationIds }: WidgetComponentProps<"healthMonitoring">) { - const t = useI18n(); - const [healthData] = clientApi.widget.healthMonitoring.getHealthStatus.useSuspenseQuery( - { - integrationIds, - }, - { - refetchOnMount: false, - refetchOnWindowFocus: false, - refetchOnReconnect: false, - retry: false, - }, - ); - const [opened, { open, close }] = useDisclosure(false); - const utils = clientApi.useUtils(); +export default function HealthMonitoringWidget(props: WidgetComponentProps<"healthMonitoring">) { + const [integrations] = clientApi.integration.byIds.useSuspenseQuery(props.integrationIds); - clientApi.widget.healthMonitoring.subscribeHealthStatus.useSubscription( - { integrationIds }, - { - onData(data) { - utils.widget.healthMonitoring.getHealthStatus.setData({ integrationIds }, (prevData) => { - if (!prevData) { - return undefined; - } - const newData = prevData.map((item) => - item.integrationId === data.integrationId - ? { ...item, healthInfo: data.healthInfo, updatedAt: data.timestamp } - : item, - ); - return newData; - }); - }, - }, - ); + const proxmoxIntegrationId = integrations.find((integration) => integration.kind === "proxmox")?.id; + + if (!proxmoxIntegrationId) { + return ; + } + + const otherIntegrationIds = integrations + .filter((integration) => integration.kind !== "proxmox") + .map((integration) => integration.id); + if (otherIntegrationIds.length === 0) { + return ; + } return ( - - {healthData.map(({ integrationId, integrationName, healthInfo, updatedAt }) => { - const disksData = matchFileSystemAndSmart(healthInfo.fileSystem, healthInfo.smart); - const memoryUsage = formatMemoryUsage(healthInfo.memAvailable, healthInfo.memUsed); - return ( - - - - - 0 ? "blue" : "gray"} - position="top-end" - size="4cqmin" - label={healthInfo.availablePkgUpdates > 0 ? healthInfo.availablePkgUpdates : undefined} - disabled={!healthInfo.rebootRequired && healthInfo.availablePkgUpdates === 0} - > - - - - - - - - - } - > - {t("widget.healthMonitoring.popover.processor", { cpuModelName: healthInfo.cpuModelName })} - - } - > - {t("widget.healthMonitoring.popover.memory", { memory: memoryUsage.memTotal.GB })} - - } - > - {t("widget.healthMonitoring.popover.memoryAvailable", { - memoryAvailable: memoryUsage.memFree.GB, - percent: memoryUsage.memFree.percent, - })} - - } - > - {t("widget.healthMonitoring.popover.version", { - version: healthInfo.version, - })} - - } - > - {formatUptime(healthInfo.uptime, t)} - - } - > - {t("widget.healthMonitoring.popover.loadAverage")} - - }> - - {t("widget.healthMonitoring.popover.minute")} {healthInfo.loadAverage["1min"]}% - - - {t("widget.healthMonitoring.popover.minutes", { count: 5 })}{" "} - {healthInfo.loadAverage["5min"]}% - - - {t("widget.healthMonitoring.popover.minutes", { count: 15 })}{" "} - {healthInfo.loadAverage["15min"]}% - - - - - - - {options.cpu && } - {healthInfo.cpuTemp && options.cpu && ( - - )} - {options.memory && } - - { - - {t("widget.healthMonitoring.popover.lastSeen", { lastSeen: dayjs(updatedAt).fromNow() })} - - } - - {options.fileSystem && - disksData.map((disk) => { - return ( - - - - - - {disk.deviceName} - - - - - - {options.fahrenheit - ? `${(disk.temperature * 1.8 + 32).toFixed(1)}°F` - : `${disk.temperature}°C`} - - - - - - {disk.overallStatus} - - - - - - - - {t("widget.healthMonitoring.popover.used")} - - - - - = 1 - ? `${(Number(disk.available) / 1024 ** 4).toFixed(2)} TiB` - : `${(Number(disk.available) / 1024 ** 3).toFixed(2)} GiB` - } - > - - - {t("widget.healthMonitoring.popover.available")} - - - - - - ); - })} - - ); - })} - + + + + + System + + + Cluster + + + + + + + + + + ); } - -export const formatUptime = (uptimeInSeconds: number, t: TranslationFunction) => { - const uptimeDuration = dayjs.duration(uptimeInSeconds, "seconds"); - const months = uptimeDuration.months(); - const days = uptimeDuration.days(); - const hours = uptimeDuration.hours(); - const minutes = uptimeDuration.minutes(); - - return t("widget.healthMonitoring.popover.uptime", { months, days, hours, minutes }); -}; - -export const progressColor = (percentage: number) => { - if (percentage < 40) return "green"; - else if (percentage < 60) return "yellow"; - else if (percentage < 90) return "orange"; - else return "red"; -}; - -interface FileSystem { - deviceName: string; - used: string; - available: string; - percentage: number; -} - -interface SmartData { - deviceName: string; - temperature: number; - overallStatus: string; -} - -export const matchFileSystemAndSmart = (fileSystems: FileSystem[], smartData: SmartData[]) => { - return fileSystems - .map((fileSystem) => { - const baseDeviceName = fileSystem.deviceName.replace(/[0-9]+$/, ""); - const smartDisk = smartData.find((smart) => smart.deviceName === baseDeviceName); - - return { - deviceName: smartDisk?.deviceName ?? fileSystem.deviceName, - used: fileSystem.used, - available: fileSystem.available, - percentage: fileSystem.percentage, - temperature: smartDisk?.temperature ?? 0, - overallStatus: smartDisk?.overallStatus ?? "", - }; - }) - .sort((fileSystemA, fileSystemB) => fileSystemA.deviceName.localeCompare(fileSystemB.deviceName)); -}; - -const CpuRing = ({ cpuUtilization }: { cpuUtilization: number }) => { - const { width, ref } = useElementSize(); - - return ( - - - {`${cpuUtilization.toFixed(2)}%`} - -
- } - sections={[ - { - value: Number(cpuUtilization.toFixed(2)), - color: progressColor(Number(cpuUtilization.toFixed(2))), - }, - ]} - /> -
- ); -}; - -const CpuTempRing = ({ fahrenheit, cpuTemp }: { fahrenheit: boolean; cpuTemp: number }) => { - const { width, ref } = useElementSize(); - return ( - - - - {fahrenheit ? `${(cpuTemp * 1.8 + 32).toFixed(1)}°F` : `${cpuTemp.toFixed(1)}°C`} - - - - } - sections={[ - { - value: cpuTemp, - color: progressColor(cpuTemp), - }, - ]} - /> - - ); -}; - -const MemoryRing = ({ available, used }: { available: string; used: string }) => { - const { width, ref } = useElementSize(); - const memoryUsage = formatMemoryUsage(available, used); - - return ( - - - - {memoryUsage.memUsed.GB}GiB - - - - } - sections={[ - { - value: Number(memoryUsage.memUsed.percent), - color: progressColor(Number(memoryUsage.memUsed.percent)), - tooltip: `${memoryUsage.memUsed.percent}%`, - }, - ]} - /> - - ); -}; - -export const formatMemoryUsage = (memFree: string, memUsed: string) => { - const memFreeBytes = Number(memFree); - const memUsedBytes = Number(memUsed); - const totalMemory = memFreeBytes + memUsedBytes; - const memFreeGB = (memFreeBytes / 1024 ** 3).toFixed(2); - const memUsedGB = (memUsedBytes / 1024 ** 3).toFixed(2); - const memFreePercent = Math.round((memFreeBytes / totalMemory) * 100); - const memUsedPercent = Math.round((memUsedBytes / totalMemory) * 100); - const memTotalGB = (totalMemory / 1024 ** 3).toFixed(2); - - return { - memFree: { percent: memFreePercent, GB: memFreeGB }, - memUsed: { percent: memUsedPercent, GB: memUsedGB }, - memTotal: { GB: memTotalGB }, - }; -}; diff --git a/packages/widgets/src/health-monitoring/index.ts b/packages/widgets/src/health-monitoring/index.ts index 970f827f4..2d9c9e895 100644 --- a/packages/widgets/src/health-monitoring/index.ts +++ b/packages/widgets/src/health-monitoring/index.ts @@ -20,6 +20,20 @@ export const { definition, componentLoader } = createWidgetDefinition("healthMon fileSystem: factory.switch({ defaultValue: true, }), + defaultTab: factory.select({ + defaultValue: "system", + options: [ + { value: "system", label: "System" }, + { value: "cluster", label: "Cluster" }, + ] as const, + }), + sectionIndicatorRequirement: factory.select({ + defaultValue: "all", + options: [ + { value: "all", label: "All active" }, + { value: "any", label: "Any active" }, + ] as const, + }), })), supportedIntegrations: getIntegrationKindsByCategory("healthMonitoring"), errors: { diff --git a/packages/widgets/src/health-monitoring/system-health.tsx b/packages/widgets/src/health-monitoring/system-health.tsx new file mode 100644 index 000000000..c2ed07564 --- /dev/null +++ b/packages/widgets/src/health-monitoring/system-health.tsx @@ -0,0 +1,425 @@ +"use client"; + +import { + Avatar, + Box, + Card, + Center, + Divider, + Flex, + Group, + Indicator, + List, + Modal, + Progress, + RingProgress, + Stack, + Text, + Tooltip, +} from "@mantine/core"; +import { useDisclosure, useElementSize } from "@mantine/hooks"; +import { + IconBrain, + IconClock, + IconCpu, + IconCpu2, + IconFileReport, + IconInfoCircle, + IconServer, + IconTemperature, + IconVersions, +} from "@tabler/icons-react"; +import dayjs from "dayjs"; +import duration from "dayjs/plugin/duration"; + +import { clientApi } from "@homarr/api/client"; +import type { TranslationFunction } from "@homarr/translation"; +import { useI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; + +dayjs.extend(duration); + +export const SystemHealthMonitoring = ({ options, integrationIds }: WidgetComponentProps<"healthMonitoring">) => { + const t = useI18n(); + const [healthData] = clientApi.widget.healthMonitoring.getSystemHealthStatus.useSuspenseQuery( + { + integrationIds, + }, + { + refetchOnMount: false, + refetchOnWindowFocus: false, + refetchOnReconnect: false, + retry: false, + }, + ); + const [opened, { open, close }] = useDisclosure(false); + const utils = clientApi.useUtils(); + + clientApi.widget.healthMonitoring.subscribeSystemHealthStatus.useSubscription( + { integrationIds }, + { + onData(data) { + utils.widget.healthMonitoring.getSystemHealthStatus.setData({ integrationIds }, (prevData) => { + if (!prevData) { + return undefined; + } + const newData = prevData.map((item) => + item.integrationId === data.integrationId + ? { ...item, healthInfo: data.healthInfo, updatedAt: data.timestamp } + : item, + ); + return newData; + }); + }, + }, + ); + + return ( + + {healthData.map(({ integrationId, integrationName, healthInfo, updatedAt }) => { + const disksData = matchFileSystemAndSmart(healthInfo.fileSystem, healthInfo.smart); + const memoryUsage = formatMemoryUsage(healthInfo.memAvailable, healthInfo.memUsed); + return ( + + + + + 0 ? "blue" : "gray"} + position="top-end" + size="4cqmin" + label={healthInfo.availablePkgUpdates > 0 ? healthInfo.availablePkgUpdates : undefined} + disabled={!healthInfo.rebootRequired && healthInfo.availablePkgUpdates === 0} + > + + + + + + + + + } + > + {t("widget.healthMonitoring.popover.processor", { cpuModelName: healthInfo.cpuModelName })} + + } + > + {t("widget.healthMonitoring.popover.memory", { memory: memoryUsage.memTotal.GB })} + + } + > + {t("widget.healthMonitoring.popover.memoryAvailable", { + memoryAvailable: memoryUsage.memFree.GB, + percent: memoryUsage.memFree.percent, + })} + + } + > + {t("widget.healthMonitoring.popover.version", { + version: healthInfo.version, + })} + + } + > + {formatUptime(healthInfo.uptime, t)} + + } + > + {t("widget.healthMonitoring.popover.loadAverage")} + + }> + + {t("widget.healthMonitoring.popover.minute")} {healthInfo.loadAverage["1min"]}% + + + {t("widget.healthMonitoring.popover.minutes", { count: 5 })}{" "} + {healthInfo.loadAverage["5min"]}% + + + {t("widget.healthMonitoring.popover.minutes", { count: 15 })}{" "} + {healthInfo.loadAverage["15min"]}% + + + + + + + {options.cpu && } + {healthInfo.cpuTemp && options.cpu && ( + + )} + {options.memory && } + + { + + {t("widget.healthMonitoring.popover.lastSeen", { lastSeen: dayjs(updatedAt).fromNow() })} + + } + + {options.fileSystem && + disksData.map((disk) => { + return ( + + + + + + {disk.deviceName} + + + + + + {options.fahrenheit + ? `${(disk.temperature * 1.8 + 32).toFixed(1)}°F` + : `${disk.temperature}°C`} + + + + + + {disk.overallStatus} + + + + + + + + {t("widget.healthMonitoring.popover.used")} + + + + + = 1 + ? `${(Number(disk.available) / 1024 ** 4).toFixed(2)} TiB` + : `${(Number(disk.available) / 1024 ** 3).toFixed(2)} GiB` + } + > + + + {t("widget.healthMonitoring.popover.available")} + + + + + + ); + })} + + ); + })} + + ); +}; + +export const formatUptime = (uptimeInSeconds: number, t: TranslationFunction) => { + const uptimeDuration = dayjs.duration(uptimeInSeconds, "seconds"); + const months = uptimeDuration.months(); + const days = uptimeDuration.days(); + const hours = uptimeDuration.hours(); + const minutes = uptimeDuration.minutes(); + + return t("widget.healthMonitoring.popover.uptime", { months, days, hours, minutes }); +}; + +export const progressColor = (percentage: number) => { + if (percentage < 40) return "green"; + else if (percentage < 60) return "yellow"; + else if (percentage < 90) return "orange"; + else return "red"; +}; + +interface FileSystem { + deviceName: string; + used: string; + available: string; + percentage: number; +} + +interface SmartData { + deviceName: string; + temperature: number; + overallStatus: string; +} + +export const matchFileSystemAndSmart = (fileSystems: FileSystem[], smartData: SmartData[]) => { + return fileSystems + .map((fileSystem) => { + const baseDeviceName = fileSystem.deviceName.replace(/[0-9]+$/, ""); + const smartDisk = smartData.find((smart) => smart.deviceName === baseDeviceName); + + return { + deviceName: smartDisk?.deviceName ?? fileSystem.deviceName, + used: fileSystem.used, + available: fileSystem.available, + percentage: fileSystem.percentage, + temperature: smartDisk?.temperature ?? 0, + overallStatus: smartDisk?.overallStatus ?? "", + }; + }) + .sort((fileSystemA, fileSystemB) => fileSystemA.deviceName.localeCompare(fileSystemB.deviceName)); +}; + +const CpuRing = ({ cpuUtilization }: { cpuUtilization: number }) => { + const { width, ref } = useElementSize(); + + return ( + + + {`${cpuUtilization.toFixed(2)}%`} + + + } + sections={[ + { + value: Number(cpuUtilization.toFixed(2)), + color: progressColor(Number(cpuUtilization.toFixed(2))), + }, + ]} + /> + + ); +}; + +const CpuTempRing = ({ fahrenheit, cpuTemp }: { fahrenheit: boolean; cpuTemp: number }) => { + const { width, ref } = useElementSize(); + return ( + + + + {fahrenheit ? `${(cpuTemp * 1.8 + 32).toFixed(1)}°F` : `${cpuTemp.toFixed(1)}°C`} + + + + } + sections={[ + { + value: cpuTemp, + color: progressColor(cpuTemp), + }, + ]} + /> + + ); +}; + +const MemoryRing = ({ available, used }: { available: string; used: string }) => { + const { width, ref } = useElementSize(); + const memoryUsage = formatMemoryUsage(available, used); + + return ( + + + + {memoryUsage.memUsed.GB}GiB + + + + } + sections={[ + { + value: Number(memoryUsage.memUsed.percent), + color: progressColor(Number(memoryUsage.memUsed.percent)), + tooltip: `${memoryUsage.memUsed.percent}%`, + }, + ]} + /> + + ); +}; + +export const formatMemoryUsage = (memFree: string, memUsed: string) => { + const memFreeBytes = Number(memFree); + const memUsedBytes = Number(memUsed); + const totalMemory = memFreeBytes + memUsedBytes; + const memFreeGB = (memFreeBytes / 1024 ** 3).toFixed(2); + const memUsedGB = (memUsedBytes / 1024 ** 3).toFixed(2); + const memFreePercent = Math.round((memFreeBytes / totalMemory) * 100); + const memUsedPercent = Math.round((memUsedBytes / totalMemory) * 100); + const memTotalGB = (totalMemory / 1024 ** 3).toFixed(2); + + return { + memFree: { percent: memFreePercent, GB: memFreeGB }, + memUsed: { percent: memUsedPercent, GB: memUsedGB }, + memTotal: { GB: memTotalGB }, + }; +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79ca9d3d0..b942d7fb4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + proxmox-api>undici: 7.2.3 + patchedDependencies: pretty-print-error: hash: 4arrfgbz7em6s4gqywse7esg4u @@ -1113,6 +1116,9 @@ importers: '@jellyfin/sdk': specifier: ^0.11.0 version: 0.11.0(axios@1.7.7) + proxmox-api: + specifier: 1.1.1 + version: 1.1.1 undici: specifier: 7.2.3 version: 7.2.3 @@ -8031,6 +8037,9 @@ packages: proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + proxmox-api@1.1.1: + resolution: {integrity: sha512-2qH7pxKBBHa7WtEBmxPaBY2FZEH2R04hqr9zD9PmErLzJ7RGGcfNcXoS/v5G4vBM2Igmnx0EAYBstPwwfDwHnA==} + proxy-agent@6.4.0: resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} @@ -16318,6 +16327,10 @@ snapshots: proto-list@1.2.4: {} + proxmox-api@1.1.1: + dependencies: + undici: 7.2.3 + proxy-agent@6.4.0: dependencies: agent-base: 7.1.1 From f9fea70d39317a87d0aad51fa4c7d1e86c05732f Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 17 Jan 2025 13:45:18 +0100 Subject: [PATCH 262/262] chore: change documentation base url to homarr.dev (#1826) --- packages/definitions/src/docs/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/definitions/src/docs/index.ts b/packages/definitions/src/docs/index.ts index cc6c0f515..5d3c11f5c 100644 --- a/packages/definitions/src/docs/index.ts +++ b/packages/definitions/src/docs/index.ts @@ -1,6 +1,6 @@ import type { HomarrDocumentationPath } from "./homarr-docs-sitemap"; -const documentationBaseUrl = "https://deploy-preview-113--homarr-docs.netlify.app"; +const documentationBaseUrl = "https://homarr.dev"; // Please use the method so the path can be checked! export const createDocumentationLink = (path: HomarrDocumentationPath, hashTag?: `#${string}`) =>