From e40a11608cb21a75e6910028abf97e14b5275f56 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 19:26:11 +0000
Subject: [PATCH 01/31] fix(deps): update testcontainers-node monorepo to
^11.11.0 (#4781)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
package.json | 4 ++--
packages/db/package.json | 4 ++--
pnpm-lock.yaml | 46 ++++++++++++++++++++--------------------
3 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/package.json b/package.json
index 7746ea2e0..cc461d66e 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"@semantic-release/github": "^12.0.2",
"@semantic-release/npm": "^13.1.3",
"@semantic-release/release-notes-generator": "^14.1.0",
- "@testcontainers/redis": "^11.10.0",
+ "@testcontainers/redis": "^11.11.0",
"@turbo/gen": "^2.7.2",
"@vitejs/plugin-react": "^5.1.2",
"@vitest/coverage-v8": "^4.0.16",
@@ -53,7 +53,7 @@
"json5": "^2.2.3",
"prettier": "^3.7.4",
"semantic-release": "^25.0.2",
- "testcontainers": "^11.10.0",
+ "testcontainers": "^11.11.0",
"turbo": "^2.7.2",
"typescript": "^5.9.3",
"vite-tsconfig-paths": "^5.1.4",
diff --git a/packages/db/package.json b/packages/db/package.json
index 584dd431d..a61cf8537 100644
--- a/packages/db/package.json
+++ b/packages/db/package.json
@@ -49,8 +49,8 @@
"@homarr/server-settings": "workspace:^0.1.0",
"@mantine/core": "^8.3.10",
"@paralleldrive/cuid2": "^3.1.0",
- "@testcontainers/mysql": "^11.10.0",
- "@testcontainers/postgresql": "^11.10.0",
+ "@testcontainers/mysql": "^11.11.0",
+ "@testcontainers/postgresql": "^11.11.0",
"better-sqlite3": "^12.5.0",
"dotenv": "^17.2.3",
"drizzle-kit": "^0.31.8",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 52a6235c8..ebae5a4b9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -59,8 +59,8 @@ importers:
specifier: ^14.1.0
version: 14.1.0(semantic-release@25.0.2(typescript@5.9.3))
'@testcontainers/redis':
- specifier: ^11.10.0
- version: 11.10.0
+ specifier: ^11.11.0
+ version: 11.11.0
'@turbo/gen':
specifier: ^2.7.2
version: 2.7.2(@swc/core@1.15.3)(@types/node@24.10.4)(typescript@5.9.3)
@@ -92,8 +92,8 @@ importers:
specifier: ^25.0.2
version: 25.0.2(typescript@5.9.3)
testcontainers:
- specifier: ^11.10.0
- version: 11.10.0
+ specifier: ^11.11.0
+ version: 11.11.0
turbo:
specifier: ^2.7.2
version: 2.7.2
@@ -1135,11 +1135,11 @@ importers:
specifier: ^3.1.0
version: 3.1.0
'@testcontainers/mysql':
- specifier: ^11.10.0
- version: 11.10.0
+ specifier: ^11.11.0
+ version: 11.11.0
'@testcontainers/postgresql':
- specifier: ^11.10.0
- version: 11.10.0
+ specifier: ^11.11.0
+ version: 11.11.0
better-sqlite3:
specifier: ^12.5.0
version: 12.5.0
@@ -4447,14 +4447,14 @@ packages:
'@tanstack/virtual-core@3.11.2':
resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==}
- '@testcontainers/mysql@11.10.0':
- resolution: {integrity: sha512-0DLD0ClFFLewUzD+yHm9lBHPn4OTXEGdgf1Jn0Xnw+noPVol5DeP+GqSUXZ3nfde36l8g5uRPNEgHFBOolVdPA==}
+ '@testcontainers/mysql@11.11.0':
+ resolution: {integrity: sha512-2EfFhUDEvEdwBwez+F/NhqP+h2rFzLzHYbRX0N/9/Lgdlq8TbsYWZ9SaWL9V0f1FWX89XnyZrT3i/j7m8MIESg==}
- '@testcontainers/postgresql@11.10.0':
- resolution: {integrity: sha512-d6QeN3KkXLJBdt0T6X3KKtdkHbaZdzCRPo133FSG8yOoGofQAYghtau39iUdeF9GAN8UTWZAxio40uYKBSV7xw==}
+ '@testcontainers/postgresql@11.11.0':
+ resolution: {integrity: sha512-Og64I/h5LKLVvUTkAcLeTXfFcMhh3dCHCypN3Uzd+tQMd70SpCfQ0LCP9v/U+MS7JBRzU9EmqhUFkTOm4hyZWw==}
- '@testcontainers/redis@11.10.0':
- resolution: {integrity: sha512-w/Hnv1IH8jJ4wjIgpSzoll1KABz2L28+i6JAZVSZuSzQPqeTeFa3mZHnRcdKJggjEIMDwpFlqjGXYRYKNAk0Fw==}
+ '@testcontainers/redis@11.11.0':
+ resolution: {integrity: sha512-IaDPNd1jRkshwJ69D7Nc3OTt5QQG1d4G1TZILSQ7gAVr4OqAJxoA9pV73ZvKIF/8LwxDDg136ApPlU9PcFtIKg==}
'@tiptap/core@3.14.0':
resolution: {integrity: sha512-nm0VWVA1Vq/jaKY3wyRXViL/kf78yMdH7qETpv4qZXDQLU+pdWV3IGoRTQTKESc7d8L1wL/2uCeByLNUJfrSIw==}
@@ -10148,8 +10148,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- testcontainers@11.10.0:
- resolution: {integrity: sha512-8hwK2EnrOZfrHPpDC7CPe03q7H8Vv8j3aXdcmFFyNV8dzpBzgZYmqyDtduJ8YQ5kbzj+A+jUXMQ6zI8B5U3z+g==}
+ testcontainers@11.11.0:
+ resolution: {integrity: sha512-nKTJn3n/gkyGg/3SVkOwX+isPOGSHlfI+CWMobSmvQrsj7YW01aWvl2pYIfV4LMd+C8or783yYrzKSK2JlP+Qw==}
text-decoder@1.2.0:
resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==}
@@ -13384,23 +13384,23 @@ snapshots:
'@tanstack/virtual-core@3.11.2': {}
- '@testcontainers/mysql@11.10.0':
+ '@testcontainers/mysql@11.11.0':
dependencies:
- testcontainers: 11.10.0
+ testcontainers: 11.11.0
transitivePeerDependencies:
- bare-buffer
- supports-color
- '@testcontainers/postgresql@11.10.0':
+ '@testcontainers/postgresql@11.11.0':
dependencies:
- testcontainers: 11.10.0
+ testcontainers: 11.11.0
transitivePeerDependencies:
- bare-buffer
- supports-color
- '@testcontainers/redis@11.10.0':
+ '@testcontainers/redis@11.11.0':
dependencies:
- testcontainers: 11.10.0
+ testcontainers: 11.11.0
transitivePeerDependencies:
- bare-buffer
- supports-color
@@ -20043,7 +20043,7 @@ snapshots:
commander: 2.20.3
source-map-support: 0.5.21
- testcontainers@11.10.0:
+ testcontainers@11.11.0:
dependencies:
'@balena/dockerignore': 1.0.2
'@types/dockerode': 3.3.47
From 249d929435c1c22a8033ffc51283e4c8c5129228 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 20:32:51 +0000
Subject: [PATCH 02/31] chore(deps): update dependency hono@<4.6.5 to
>=4.11.3 (#4775)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index cc461d66e..f7de61066 100644
--- a/package.json
+++ b/package.json
@@ -84,7 +84,7 @@
"brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1",
"esbuild@<=0.24.2": ">=0.27.1",
"form-data@>=4.0.0 <4.0.4": ">=4.0.5",
- "hono@<4.6.5": ">=4.11.2",
+ "hono@<4.6.5": ">=4.11.3",
"linkifyjs@<4.3.2": ">=4.3.2",
"nanoid@>=4.0.0 <5.0.9": ">=5.1.6",
"prismjs@<1.30.0": ">=1.30.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ebae5a4b9..89c9ad100 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,7 +12,7 @@ overrides:
brace-expansion@>=1.0.0 <=1.1.11: '>=4.0.1'
esbuild@<=0.24.2: '>=0.27.1'
form-data@>=4.0.0 <4.0.4: '>=4.0.5'
- hono@<4.6.5: '>=4.11.2'
+ hono@<4.6.5: '>=4.11.3'
linkifyjs@<4.3.2: '>=4.3.2'
nanoid@>=4.0.0 <5.0.9: '>=5.1.6'
prismjs@<1.30.0: '>=1.30.0'
@@ -3258,7 +3258,7 @@ packages:
resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==}
engines: {node: '>=18.14.1'}
peerDependencies:
- hono: '>=4.11.2'
+ hono: '>=4.11.3'
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
From e574dd70f1421e9254a289a0f02fd0b4d43e26ad Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 20:33:15 +0000
Subject: [PATCH 03/31] fix(deps): update dependency ldapts to v8.0.35 (#4768)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
packages/auth/package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/packages/auth/package.json b/packages/auth/package.json
index bb3ed8978..2a55e62ee 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -32,7 +32,7 @@
"@homarr/validation": "workspace:^0.1.0",
"bcrypt": "^6.0.0",
"cookies": "^0.9.1",
- "ldapts": "8.0.34",
+ "ldapts": "8.0.35",
"next": "16.1.1",
"next-auth": "5.0.0-beta.30",
"react": "19.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 89c9ad100..41ef1d431 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -715,8 +715,8 @@ importers:
specifier: ^0.9.1
version: 0.9.1
ldapts:
- specifier: 8.0.34
- version: 8.0.34
+ specifier: 8.0.35
+ version: 8.0.35
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -7888,8 +7888,8 @@ packages:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
- ldapts@8.0.34:
- resolution: {integrity: sha512-e9xnGsHVzFvQqQsCpMm/e+SCLS00dPypsT2ieoev+vGjD2Ex4bBdKhfu7YowCyFJtySG0AWM4ltlQ6e+SP+wjQ==}
+ ldapts@8.0.35:
+ resolution: {integrity: sha512-trh0IoMW7FR+7fqTJWbmiFrcOowHmkXwK9J3Rhwo4vSjOWc4bTcwJVTXjPnilkJc/WrM2rNac4jy11XxO7eBHw==}
engines: {node: '>=20'}
levn@0.4.1:
@@ -17340,7 +17340,7 @@ snapshots:
dependencies:
readable-stream: 2.3.8
- ldapts@8.0.34:
+ ldapts@8.0.35:
dependencies:
'@types/asn1': 0.2.4
asn1: 0.2.6
From a004bfbb9eba6c19199b9b6121690f5ab0993931 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 20:33:57 +0000
Subject: [PATCH 04/31] chore(deps): update dependency jsdom to ^27.4.0 (#4776)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 73 +++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 67 insertions(+), 8 deletions(-)
diff --git a/package.json b/package.json
index f7de61066..644094f88 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"@vitest/ui": "^4.0.16",
"conventional-changelog-conventionalcommits": "^9.1.0",
"cross-env": "^10.1.0",
- "jsdom": "^27.3.0",
+ "jsdom": "^27.4.0",
"json5": "^2.2.3",
"prettier": "^3.7.4",
"semantic-release": "^25.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 41ef1d431..68a7ce1df 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -80,8 +80,8 @@ importers:
specifier: ^10.1.0
version: 10.1.0
jsdom:
- specifier: ^27.3.0
- version: 27.3.0(postcss@8.5.6)
+ specifier: ^27.4.0
+ version: 27.4.0(postcss@8.5.6)
json5:
specifier: ^2.2.3
version: 2.2.3
@@ -105,7 +105,7 @@ importers:
version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))
vitest:
specifier: ^4.0.16
- version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
+ version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
apps/nextjs:
dependencies:
@@ -3161,6 +3161,15 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@exodus/bytes@1.7.0':
+ resolution: {integrity: sha512-5i+BtvujK/vM07YCGDyz4C4AyDzLmhxHMtM5HpUyPRtJPBdFPsj290ffXW+UXY21/G7GtXeHD2nRmq0T1ShyQQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ '@exodus/crypto': ^1.0.0-rc.4
+ peerDependenciesMeta:
+ '@exodus/crypto':
+ optional: true
+
'@extractus/feed-extractor@7.1.7':
resolution: {integrity: sha512-eNeddvKK9rBxWSHj5zBo6ODihJqJtq+QzEQdVeadkOK48avmdela+c2JAfMcPEBMFaWcAYV4bUMhI9Tqi8mX2Q==}
engines: {node: '>= 20'}
@@ -7256,6 +7265,10 @@ packages:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
+ html-encoding-sniffer@6.0.0:
+ resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+
html-entities@2.6.0:
resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
@@ -7803,6 +7816,15 @@ packages:
canvas:
optional: true
+ jsdom@27.4.0:
+ resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==}
+ engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
+ peerDependencies:
+ canvas: ^3.0.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
jsep@1.4.0:
resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
engines: {node: '>= 10.16.0'}
@@ -11876,6 +11898,8 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@exodus/bytes@1.7.0': {}
+
'@extractus/feed-extractor@7.1.7':
dependencies:
'@ndaidong/bellajs': 12.0.1
@@ -14153,7 +14177,7 @@ snapshots:
obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.0.3
- vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
+ vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
transitivePeerDependencies:
- supports-color
@@ -14200,7 +14224,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
+ vitest: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
'@vitest/utils@4.0.16':
dependencies:
@@ -16699,6 +16723,12 @@ snapshots:
dependencies:
whatwg-encoding: 3.1.1
+ html-encoding-sniffer@6.0.0:
+ dependencies:
+ '@exodus/bytes': 1.7.0
+ transitivePeerDependencies:
+ - '@exodus/crypto'
+
html-entities@2.6.0: {}
html-escaper@2.0.2: {}
@@ -17267,6 +17297,35 @@ snapshots:
- supports-color
- utf-8-validate
+ jsdom@27.4.0(postcss@8.5.6):
+ dependencies:
+ '@acemir/cssom': 0.9.28
+ '@asamuzakjp/dom-selector': 6.7.6
+ '@exodus/bytes': 1.7.0
+ cssstyle: 5.3.4(postcss@8.5.6)
+ data-urls: 6.0.0
+ decimal.js: 10.6.0
+ html-encoding-sniffer: 6.0.0
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ is-potential-custom-element-name: 1.0.1
+ parse5: 8.0.0
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 6.0.0
+ w3c-xmlserializer: 5.0.0
+ webidl-conversions: 8.0.0
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 15.1.0
+ ws: 8.18.3
+ xml-name-validator: 5.0.0
+ transitivePeerDependencies:
+ - '@exodus/crypto'
+ - bufferutil
+ - postcss
+ - supports-color
+ - utf-8-validate
+
jsep@1.4.0: {}
jsesc@3.0.2: {}
@@ -20739,7 +20798,7 @@ snapshots:
tsx: 4.20.5
yaml: 2.5.1
- vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.3.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1):
+ vitest@4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1):
dependencies:
'@vitest/expect': 4.0.16
'@vitest/mocker': 4.0.16(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))
@@ -20764,7 +20823,7 @@ snapshots:
optionalDependencies:
'@types/node': 24.10.4
'@vitest/ui': 4.0.16(vitest@4.0.16)
- jsdom: 27.3.0(postcss@8.5.6)
+ jsdom: 27.4.0(postcss@8.5.6)
transitivePeerDependencies:
- jiti
- less
From 236fa35f7e0943be33bba153e7030ce4e3bb204e Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Thu, 1 Jan 2026 20:35:52 +0000
Subject: [PATCH 05/31] fix(deps): update dependency isomorphic-dompurify to
^2.35.0 (#4779)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
apps/nextjs/package.json | 2 +-
pnpm-lock.yaml | 13 +++++++------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index a411a4d5c..94d5adad2 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -73,7 +73,7 @@
"dotenv": "^17.2.3",
"flag-icons": "^7.5.0",
"glob": "^13.0.0",
- "isomorphic-dompurify": "^2.34.0",
+ "isomorphic-dompurify": "^2.35.0",
"jotai": "^2.16.1",
"mantine-react-table": "2.0.0-beta.9",
"next": "16.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 68a7ce1df..43b6fd744 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -284,8 +284,8 @@ importers:
specifier: ^13.0.0
version: 13.0.0
isomorphic-dompurify:
- specifier: ^2.34.0
- version: 2.34.0(postcss@8.5.6)
+ specifier: ^2.35.0
+ version: 2.35.0(postcss@8.5.6)
jotai:
specifier: ^2.16.1
version: 2.16.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.3)
@@ -7716,8 +7716,8 @@ packages:
resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
engines: {node: '>=16'}
- isomorphic-dompurify@2.34.0:
- resolution: {integrity: sha512-7VeB/tDBQ8jt1+syT563hmmejY01nuwizpUIFPfM1aw3iTgLLiVP4/Nh+PKhNoa1V/H+E6ZlNcowsXLbChPCpw==}
+ isomorphic-dompurify@2.35.0:
+ resolution: {integrity: sha512-a9+LQqylQCU8f1zmsYmg2tfrbdY2YS/Hc+xntcq/mDI2MY3Q108nq8K23BWDIg6YGC5JsUMC15fj2ZMqCzt/+A==}
engines: {node: '>=20.19.5'}
isomorphic-fetch@3.0.0:
@@ -17160,11 +17160,12 @@ snapshots:
isexe@3.1.1:
optional: true
- isomorphic-dompurify@2.34.0(postcss@8.5.6):
+ isomorphic-dompurify@2.35.0(postcss@8.5.6):
dependencies:
dompurify: 3.3.1
- jsdom: 27.3.0(postcss@8.5.6)
+ jsdom: 27.4.0(postcss@8.5.6)
transitivePeerDependencies:
+ - '@exodus/crypto'
- bufferutil
- canvas
- postcss
From bf44a8ecb1bb2871e2f33170e9dabdd75038ca32 Mon Sep 17 00:00:00 2001
From: "homarr-update-contributors[bot]"
<210161987+homarr-update-contributors[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 14:13:47 +0000
Subject: [PATCH 06/31] chore: update contributors (#4783)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
---
static-data/contributors.json | 2 +-
static-data/translators.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/static-data/contributors.json b/static-data/contributors.json
index fa266ad25..e97e63e56 100644
--- a/static-data/contributors.json
+++ b/static-data/contributors.json
@@ -1 +1 @@
-[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}]
\ No newline at end of file
+[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"}]
\ No newline at end of file
diff --git a/static-data/translators.json b/static-data/translators.json
index 452550d31..0c36397cd 100644
--- a/static-data/translators.json
+++ b/static-data/translators.json
@@ -1 +1 @@
-[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"}]
\ No newline at end of file
+[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"}]
\ No newline at end of file
From 1e5d38fd3ca4c68fa4c61b02757a3cff39839fdb Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 16:34:55 +0000
Subject: [PATCH 07/31] fix(deps): update tanstack-query monorepo (#4782)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
apps/nextjs/package.json | 4 +-
packages/api/package.json | 2 +-
packages/cron-job-api/package.json | 2 +-
pnpm-lock.yaml | 140 ++++++++---------------------
4 files changed, 43 insertions(+), 105 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 94d5adad2..6c6baacec 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -56,8 +56,8 @@
"@mantine/tiptap": "^8.3.10",
"@million/lint": "1.0.14",
"@tabler/icons-react": "^3.35.0",
- "@tanstack/react-query": "^5.90.12",
- "@tanstack/react-query-devtools": "^5.91.1",
+ "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-query-next-experimental": "^5.91.0",
"@trpc/client": "^11.8.1",
"@trpc/next": "^11.8.1",
diff --git a/packages/api/package.json b/packages/api/package.json
index a3cfd18e7..97bc07cad 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -41,7 +41,7 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.4.0",
- "@tanstack/react-query": "^5.90.12",
+ "@tanstack/react-query": "^5.90.14",
"@trpc/client": "^11.8.1",
"@trpc/react-query": "^11.8.1",
"@trpc/server": "^11.8.1",
diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json
index aac63b5d0..959d1986c 100644
--- a/packages/cron-job-api/package.json
+++ b/packages/cron-job-api/package.json
@@ -28,7 +28,7 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/core": "workspace:^0.1.0",
"@homarr/cron-jobs": "workspace:^0.1.0",
- "@tanstack/react-query": "^5.90.12",
+ "@tanstack/react-query": "^5.90.14",
"@trpc/client": "^11.8.1",
"@trpc/server": "^11.8.1",
"@trpc/tanstack-react-query": "^11.8.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 43b6fd744..2cd0bcd53 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -233,23 +233,23 @@ importers:
specifier: ^3.35.0
version: 3.35.0(react@19.2.3)
'@tanstack/react-query':
- specifier: ^5.90.12
- version: 5.90.12(react@19.2.3)
+ specifier: ^5.90.14
+ version: 5.90.16(react@19.2.3)
'@tanstack/react-query-devtools':
- specifier: ^5.91.1
- version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3)
+ specifier: ^5.91.2
+ version: 5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3)
'@tanstack/react-query-next-experimental':
specifier: ^5.91.0
- version: 5.91.0(@tanstack/react-query@5.90.12(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)
+ version: 5.91.0(@tanstack/react-query@5.90.16(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
'@trpc/next':
specifier: ^11.8.1
- version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
'@trpc/react-query':
specifier: ^11.8.1
- version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
'@trpc/server':
specifier: ^11.8.1
version: 11.8.1(typescript@5.9.3)
@@ -630,20 +630,20 @@ importers:
specifier: ^1.4.0
version: 1.4.0
'@tanstack/react-query':
- specifier: ^5.90.12
- version: 5.90.12(react@19.2.3)
+ specifier: ^5.90.14
+ version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
'@trpc/react-query':
specifier: ^11.8.1
- version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
'@trpc/server':
specifier: ^11.8.1
version: 11.8.1(typescript@5.9.3)
'@trpc/tanstack-react-query':
specifier: ^11.8.1
- version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
lodash.clonedeep:
specifier: ^4.5.0
version: 4.5.0
@@ -942,8 +942,8 @@ importers:
specifier: workspace:^0.1.0
version: link:../cron-jobs
'@tanstack/react-query':
- specifier: ^5.90.12
- version: 5.90.12(react@19.2.3)
+ specifier: ^5.90.14
+ version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
version: 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
@@ -952,7 +952,7 @@ importers:
version: 11.8.1(typescript@5.9.3)
'@trpc/tanstack-react-query':
specifier: ^11.8.1
- version: 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ version: 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
node-cron:
specifier: ^4.2.1
version: 4.2.1
@@ -4412,16 +4412,16 @@ packages:
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
engines: {node: '>=12'}
- '@tanstack/query-core@5.90.12':
- resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==}
+ '@tanstack/query-core@5.90.16':
+ resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==}
- '@tanstack/query-devtools@5.91.1':
- resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==}
+ '@tanstack/query-devtools@5.92.0':
+ resolution: {integrity: sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==}
- '@tanstack/react-query-devtools@5.91.1':
- resolution: {integrity: sha512-tRnJYwEbH0kAOuToy8Ew7bJw1lX3AjkkgSlf/vzb+NpnqmHPdWM+lA2DSdGQSLi1SU0PDRrrCI1vnZnci96CsQ==}
+ '@tanstack/react-query-devtools@5.91.2':
+ resolution: {integrity: sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg==}
peerDependencies:
- '@tanstack/react-query': ^5.90.10
+ '@tanstack/react-query': ^5.90.14
react: ^18 || ^19
'@tanstack/react-query-next-experimental@5.91.0':
@@ -4431,8 +4431,8 @@ packages:
next: ^13 || ^14 || ^15 || ^16
react: ^18 || ^19
- '@tanstack/react-query@5.90.12':
- resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==}
+ '@tanstack/react-query@5.90.16':
+ resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==}
peerDependencies:
react: ^18 || ^19
@@ -7261,10 +7261,6 @@ packages:
resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==}
engines: {node: '>=14'}
- html-encoding-sniffer@4.0.0:
- resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
- engines: {node: '>=18'}
-
html-encoding-sniffer@6.0.0:
resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
@@ -7319,10 +7315,6 @@ packages:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
iconv-lite@0.7.0:
resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
engines: {node: '>=0.10.0'}
@@ -7807,15 +7799,6 @@ packages:
jsbn@1.1.0:
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
- jsdom@27.3.0:
- resolution: {integrity: sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg==}
- engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
- peerDependencies:
- canvas: ^3.0.0
- peerDependenciesMeta:
- canvas:
- optional: true
-
jsdom@27.4.0:
resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
@@ -10900,11 +10883,6 @@ packages:
webpack-cli:
optional: true
- whatwg-encoding@3.1.1:
- resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
- engines: {node: '>=18'}
- deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
-
whatwg-fetch@3.6.20:
resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
@@ -13371,25 +13349,25 @@ snapshots:
dependencies:
remove-accents: 0.5.0
- '@tanstack/query-core@5.90.12': {}
+ '@tanstack/query-core@5.90.16': {}
- '@tanstack/query-devtools@5.91.1': {}
+ '@tanstack/query-devtools@5.92.0': {}
- '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3)':
dependencies:
- '@tanstack/query-devtools': 5.91.1
- '@tanstack/react-query': 5.90.12(react@19.2.3)
+ '@tanstack/query-devtools': 5.92.0
+ '@tanstack/react-query': 5.90.16(react@19.2.3)
react: 19.2.3
- '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.12(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)':
+ '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.16(react@19.2.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react@19.2.3)':
dependencies:
- '@tanstack/react-query': 5.90.12(react@19.2.3)
+ '@tanstack/react-query': 5.90.16(react@19.2.3)
next: 16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
react: 19.2.3
- '@tanstack/react-query@5.90.12(react@19.2.3)':
+ '@tanstack/react-query@5.90.16(react@19.2.3)':
dependencies:
- '@tanstack/query-core': 5.90.12
+ '@tanstack/query-core': 5.90.16
react: 19.2.3
'@tanstack/react-table@8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
@@ -13670,7 +13648,7 @@ snapshots:
'@trpc/server': 11.8.1(typescript@5.9.3)
typescript: 5.9.3
- '@trpc/next@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
+ '@trpc/next@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(next@16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
dependencies:
'@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
'@trpc/server': 11.8.1(typescript@5.9.3)
@@ -13679,12 +13657,12 @@ snapshots:
react-dom: 19.2.3(react@19.2.3)
typescript: 5.9.3
optionalDependencies:
- '@tanstack/react-query': 5.90.12(react@19.2.3)
- '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
+ '@tanstack/react-query': 5.90.16(react@19.2.3)
+ '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)
- '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
+ '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
dependencies:
- '@tanstack/react-query': 5.90.12(react@19.2.3)
+ '@tanstack/react-query': 5.90.16(react@19.2.3)
'@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
'@trpc/server': 11.8.1(typescript@5.9.3)
react: 19.2.3
@@ -13695,9 +13673,9 @@ snapshots:
dependencies:
typescript: 5.9.3
- '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
+ '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.16(react@19.2.3))(@trpc/client@11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.1(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)':
dependencies:
- '@tanstack/react-query': 5.90.12(react@19.2.3)
+ '@tanstack/react-query': 5.90.16(react@19.2.3)
'@trpc/client': 11.8.1(@trpc/server@11.8.1(typescript@5.9.3))(typescript@5.9.3)
'@trpc/server': 11.8.1(typescript@5.9.3)
react: 19.2.3
@@ -16719,10 +16697,6 @@ snapshots:
hpagent@1.2.0: {}
- html-encoding-sniffer@4.0.0:
- dependencies:
- whatwg-encoding: 3.1.1
-
html-encoding-sniffer@6.0.0:
dependencies:
'@exodus/bytes': 1.7.0
@@ -16776,10 +16750,6 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
iconv-lite@0.7.0:
dependencies:
safer-buffer: 2.1.2
@@ -17270,34 +17240,6 @@ snapshots:
jsbn@1.1.0: {}
- jsdom@27.3.0(postcss@8.5.6):
- dependencies:
- '@acemir/cssom': 0.9.28
- '@asamuzakjp/dom-selector': 6.7.6
- cssstyle: 5.3.4(postcss@8.5.6)
- data-urls: 6.0.0
- decimal.js: 10.6.0
- html-encoding-sniffer: 4.0.0
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.6
- is-potential-custom-element-name: 1.0.1
- parse5: 8.0.0
- saxes: 6.0.0
- symbol-tree: 3.2.4
- tough-cookie: 6.0.0
- w3c-xmlserializer: 5.0.0
- webidl-conversions: 8.0.0
- whatwg-encoding: 3.1.1
- whatwg-mimetype: 4.0.0
- whatwg-url: 15.1.0
- ws: 8.18.3
- xml-name-validator: 5.0.0
- transitivePeerDependencies:
- - bufferutil
- - postcss
- - supports-color
- - utf-8-validate
-
jsdom@27.4.0(postcss@8.5.6):
dependencies:
'@acemir/cssom': 0.9.28
@@ -20896,10 +20838,6 @@ snapshots:
- esbuild
- uglify-js
- whatwg-encoding@3.1.1:
- dependencies:
- iconv-lite: 0.6.3
-
whatwg-fetch@3.6.20: {}
whatwg-mimetype@4.0.0: {}
From 808ace39830044df0859d4807ce1e2eda5c74e75 Mon Sep 17 00:00:00 2001
From: "homarr-crowdin[bot]"
<190541745+homarr-crowdin[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 18:34:13 +0100
Subject: [PATCH 08/31] chore(lang): update translations from crowdin (#4767)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
---
packages/translation/src/lang/es.json | 14 +-
packages/translation/src/lang/fr.json | 228 ++++----
packages/translation/src/lang/no.json | 764 +++++++++++++-------------
packages/translation/src/lang/sl.json | 68 +--
4 files changed, 537 insertions(+), 537 deletions(-)
diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json
index ae157ab9f..e0d5f6733 100644
--- a/packages/translation/src/lang/es.json
+++ b/packages/translation/src/lang/es.json
@@ -1941,19 +1941,19 @@
"description": "Estadísticas de tus contenedores (Este widget sólo puede ser añadido con privilegios de administrador)",
"option": {
"enableRowSorting": {
- "label": ""
+ "label": "Habilitar ordenar elementos"
},
"defaultSort": {
- "label": "",
+ "label": "Columna usada para ordenar por defecto",
"option": {
- "name": "",
- "state": "",
- "cpuUsage": "",
- "memoryUsage": ""
+ "name": "Nombre",
+ "state": "Estado",
+ "cpuUsage": "Uso de CPU",
+ "memoryUsage": "Uso de memoria"
}
},
"descendingDefaultSort": {
- "label": ""
+ "label": "Invertir orden"
}
},
"error": {
diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json
index cf026c16e..aa7da9044 100644
--- a/packages/translation/src/lang/fr.json
+++ b/packages/translation/src/lang/fr.json
@@ -7,7 +7,7 @@
"description": "Pour commencer, veuillez selectionner comment vous souhaitez configurer votre instance Homarr.",
"action": {
"scratch": "Partir de zéro",
- "importOldmarr": "Importer à partir d'Homarr avant la 1.0"
+ "importOldmarr": "Importer depuis Homarr avant la 1.0"
}
},
"import": {
@@ -27,7 +27,7 @@
"description": "Configurer le comportement d'importation"
},
"boardSelection": {
- "title": "{count} tableaux trouvés",
+ "title": "Tableaux {count} trouvés",
"description": "Choisissez tous les tableaux avec la taille que vous souhaitez importer",
"action": {
"selectAll": "Tout sélectionner",
@@ -113,7 +113,7 @@
"subtitle": "Bon retour parmi nous ! Veuillez entrer vos identifiants"
},
"invite": {
- "title": "Rejoindre Homarr",
+ "title": "Rejoignez Homarr",
"subtitle": "Bienvenue sur Homarr! Veuillez créer votre compte",
"description": "Vous avez été invité par {username}"
},
@@ -649,14 +649,14 @@
"app": {
"option": {
"existing": {
- "title": "",
- "label": ""
+ "title": "Existant",
+ "label": "Sélectionner une application existante"
},
"new": {
- "title": "",
+ "title": "Nouveau",
"url": {
- "label": "",
- "description": ""
+ "label": "Lien de l'application",
+ "description": "Lien d'ouverture de l'application depuis le tableau de bord"
}
}
}
@@ -676,9 +676,9 @@
},
"app": {
"action": {
- "add": "",
- "remove": "",
- "select": ""
+ "add": "Lier une application",
+ "remove": "Délier",
+ "select": "Sélectionnez une application à lier"
}
}
},
@@ -709,7 +709,7 @@
"description": "L'intégration \"{kind}\" peut être utilisée avec les moteurs de recherche. Cochez ceci pour configurer automatiquement le moteur de recherche."
},
"app": {
- "sectionTitle": ""
+ "sectionTitle": "Application liée"
},
"createApp": {
"label": "Créer une application",
@@ -991,8 +991,8 @@
"newLabel": "Nouvel ID d'installation"
},
"privateKey": {
- "label": "",
- "newLabel": ""
+ "label": "Clé privée",
+ "newLabel": "Nouvelle clé privée"
}
}
},
@@ -1044,14 +1044,14 @@
}
},
"common": {
- "success": "",
+ "success": "Succès",
"beta": "Bêta",
"error": "Erreur",
"action": {
"add": "Ajouter",
"apply": "Appliquer",
"backToOverview": "Retourner à l'aperçu",
- "change": "",
+ "change": "Modifier",
"create": "Créer",
"createAnother": "Créer et recommencer",
"edit": "Modifier",
@@ -1174,8 +1174,8 @@
},
"unit": {
"speed": {
- "kilometersPerHour": "",
- "milesPerHour": ""
+ "kilometersPerHour": "km/h",
+ "milesPerHour": "mph"
}
}
},
@@ -1190,7 +1190,7 @@
"label": "Titre"
},
"customCssClasses": {
- "label": ""
+ "label": "Classes Css personnalisées"
},
"borderColor": {
"label": "Couleur de la bordure"
@@ -1321,21 +1321,21 @@
"label": "Activer la vérification du statut"
},
"layout": {
- "label": "",
+ "label": "Mise en page",
"option": {
- "row": "",
- "row-reverse": "",
- "column": "",
- "column-reverse": ""
+ "row": "Horizontale",
+ "row-reverse": "Horizontal (inversé)",
+ "column": "Vertical",
+ "column-reverse": "Vertical (inversé)"
}
},
"descriptionDisplayMode": {
- "label": "",
- "description": "",
+ "label": "Mode d'affichage de la description",
+ "description": "Choisissez comment afficher la description de l'application",
"option": {
- "normal": "",
- "tooltip": "",
- "hidden": ""
+ "normal": "Au sein du widget",
+ "tooltip": "Comme infobulle",
+ "hidden": "Masquer"
}
}
},
@@ -1584,11 +1584,11 @@
},
"placeholder": "Commencer à écrire vos notes",
"dismiss": {
- "title": "",
- "message": "",
+ "title": "Abandonner les modifications ?",
+ "message": "Vous avez des modifications non enregistrées dans votre bloc-notes. Êtes-vous sûr de vouloir les supprimer ?",
"action": {
- "discard": "",
- "keepEditing": ""
+ "discard": "Ignorer les modifications",
+ "keepEditing": "Continuer les modifications"
}
}
},
@@ -1743,7 +1743,7 @@
"name": "Calendrier",
"description": "Afficher les événements de vos intégrations dans une vue calendrier pendant une certaine période de temps relative",
"duration": {
- "allDay": ""
+ "allDay": "Tous les jours"
},
"option": {
"releaseType": {
@@ -1780,7 +1780,7 @@
"description": "Uniquement sur la météo actuelle"
},
"useImperialSpeed": {
- "label": ""
+ "label": "Utiliser mph pour la vitesse du vent"
},
"location": {
"label": "Lieu de la météo"
@@ -1941,19 +1941,19 @@
"description": "Statistiques de vos conteneurs (Ce widget ne peut être ajouté qu'avec les privilèges d'administrateur)",
"option": {
"enableRowSorting": {
- "label": ""
+ "label": "Activer le tri des éléments"
},
"defaultSort": {
- "label": "",
+ "label": "Colonne de tri par défaut",
"option": {
- "name": "",
- "state": "",
- "cpuUsage": "",
- "memoryUsage": ""
+ "name": "Nom",
+ "state": "État",
+ "cpuUsage": "Utilisation du CPU",
+ "memoryUsage": "Utilisation mémoire"
}
},
"descendingDefaultSort": {
- "label": ""
+ "label": "Inverser le tri"
}
},
"error": {
@@ -2036,21 +2036,21 @@
"name": "Nom",
"id": "Id",
"metadata": {
- "title": "",
+ "title": "Statistiques détaillées",
"video": {
- "title": "",
- "resolution": ""
+ "title": "Vidéo",
+ "resolution": "Résolution"
},
"audio": {
- "title": "",
- "channelCount": "",
- "codec": ""
+ "title": "Audio",
+ "channelCount": "Canaux audio",
+ "codec": "Codec audio"
},
"transcoding": {
- "title": "",
- "container": "",
+ "title": "Transcodage",
+ "container": "Conteneur",
"resolution": "Résolution",
- "target": ""
+ "target": "Codec cible"
}
}
}
@@ -2248,7 +2248,7 @@
"unknown": "Inconnu",
"pending": "En attente",
"processing": "Traitement en cours",
- "requested": "",
+ "requested": "En attente",
"partiallyAvailable": "Partiel",
"available": "Disponible",
"blacklisted": "Sur la liste noire",
@@ -2361,7 +2361,7 @@
"label": "Nombre maximum de publications"
},
"hideDescription": {
- "label": ""
+ "label": "Masquer la description"
}
}
},
@@ -2542,7 +2542,7 @@
},
"firewall": {
"name": "Surveillance du pare-feu",
- "description": "",
+ "description": "Affiche un résumé des pare-feu",
"tab": {
"system": "Système",
"interfaces": "Interfaces"
@@ -2556,16 +2556,16 @@
"widget": {
"fwname": "Nom",
"version": "Version",
- "versiontitle": "",
- "cputitle": "",
- "memorytitle": "",
- "cpu": "",
- "memory": "",
+ "versiontitle": "Versions",
+ "cputitle": "Utilisation du CPU",
+ "memorytitle": "Utilisation de la mémoire",
+ "cpu": "CPU",
+ "memory": "Mémoire",
"interfaces": {
- "name": "",
- "trans": "",
- "recv": "",
- "title": ""
+ "name": "nom",
+ "trans": "Transmis",
+ "recv": "Reçus",
+ "title": "Interfaces réseau"
}
}
},
@@ -2576,37 +2576,37 @@
"option": {}
},
"systemResources": {
- "name": "",
- "description": "",
+ "name": "Ressources du système",
+ "description": "CPU, Mémoire, Disque et autre utilisation matérielle de votre système",
"option": {
"hasShadow": {
- "label": ""
+ "label": "Activer l'ombrage des cartes"
},
"visibleCharts": {
- "label": "",
- "description": "",
+ "label": "Graphiques visibles",
+ "description": "Sélectionnez les graphiques à afficher.",
"option": {
- "cpu": "",
- "memory": "",
- "network": ""
+ "cpu": "CPU",
+ "memory": "Mémoire",
+ "network": "Réseau"
}
},
"labelDisplayMode": {
- "label": "",
+ "label": "Mode d'affichage de l'étiquette",
"option": {
- "textWithIcon": "",
- "text": "",
- "icon": "",
- "hidden": ""
+ "textWithIcon": "Afficher le texte avec l'icône",
+ "text": "Afficher uniquement le texte",
+ "icon": "Afficher uniquement l'icône",
+ "hidden": "Masquer l'étiquette"
}
}
},
"card": {
- "cpu": "",
- "memory": "",
- "network": "",
- "up": "",
- "down": ""
+ "cpu": "CPU",
+ "memory": "RAM",
+ "network": "NET",
+ "up": "UP",
+ "down": "HORS SERVICE"
}
}
},
@@ -3030,8 +3030,8 @@
"integration": "Intégrations",
"app": "Applications",
"group": "Groupes",
- "searchEngine": "",
- "media": ""
+ "searchEngine": "Moteurs de recherche",
+ "media": "Médias"
},
"statisticLabel": {
"boards": "Tableaux de bord",
@@ -3040,8 +3040,8 @@
"authorization": "Autorisation"
},
"heroBanner": {
- "title": "",
- "subtitle": ""
+ "title": "Bienvenue sur votre",
+ "subtitle": "Tableau {app}"
}
},
"board": {
@@ -3387,19 +3387,19 @@
"label": "Conteneurs Docker"
},
"firewallCpu": {
- "label": ""
+ "label": "Processeur du pare-feu"
},
"firewallMemory": {
- "label": ""
+ "label": "Mémoire du pare-feu"
},
"firewallVersion": {
- "label": ""
+ "label": "Version du pare-feu"
},
"firewallInterfaces": {
- "label": ""
+ "label": "Interfaces du pare-feu"
},
"weather": {
- "label": ""
+ "label": "Météo"
}
},
"interval": {
@@ -3410,10 +3410,10 @@
"weeklyMonday": "Chaque semaine le lundi",
"update": {
"success": {
- "message": ""
+ "message": "Intervalle mis à jour avec succès"
},
"error": {
- "message": ""
+ "message": "L'intervalle de mise à jour a échoué"
}
}
},
@@ -3422,55 +3422,55 @@
},
"field": {
"name": {
- "label": ""
+ "label": "Nom"
},
"interval": {
"label": "Intervalle de planification"
},
"lastExecution": {
- "label": ""
+ "label": "Dernière exécution"
},
"actions": {
- "label": ""
+ "label": "Actions"
}
},
"table": {
- "search": ""
+ "search": "Rechercher des tâches {count}..."
},
"action": {
"refresh": {
- "label": ""
+ "label": "Rafraîchir"
}
},
"refresh": {
"success": {
- "message": ""
+ "message": "Tâches actualisées avec succès"
},
"error": {
- "message": ""
+ "message": "Échec de l'actualisation des tâches"
}
},
"trigger": {
"success": {
- "message": ""
+ "message": "Tâche déclenchée avec succès"
},
"error": {
- "message": ""
+ "message": "Échec du déclenchement de la tâche"
}
},
"enable": {
"success": {
- "message": ""
+ "message": "Tâche activée avec succès"
}
},
"disable": {
"success": {
- "message": ""
+ "message": "Tâche désactivée avec succès"
}
},
"toggle": {
"error": {
- "message": ""
+ "message": "Impossible de basculer le statut de la tâche"
}
}
},
@@ -3527,19 +3527,19 @@
"subtitle": "{count} utilisés dans le Code d'Homarr"
},
"hotkeys": {
- "title": "",
- "subtitle": "",
+ "title": "Raccourcis clavier",
+ "subtitle": "Raccourcis clavier pour améliorer votre flux de travail",
"field": {
- "shortcut": "",
- "action": ""
+ "shortcut": "Raccourci",
+ "action": "Action"
},
"action": {
- "toggleBoardEdit": "",
- "toggleColorScheme": "",
- "saveNotebook": "",
- "openSpotlight": ""
+ "toggleBoardEdit": "Activer/désactiver le mode d'édition du tableau",
+ "toggleColorScheme": "Basculer en mode clair/sombre",
+ "saveNotebook": "Enregistrer le bloc-notes (uniquement à l'intérieur du widget notebook)",
+ "openSpotlight": "Ouvrir la recherche"
},
- "note": ""
+ "note": "Astuce : Mod correspond à la touche Ctrl ou ⌘ sur macOS"
}
}
}
@@ -3995,7 +3995,7 @@
"tools": {
"label": "Outils",
"tasks": {
- "label": ""
+ "label": "Tâches"
},
"docker": {
"label": "Docker"
diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json
index 8254597a5..a1cd27ab0 100644
--- a/packages/translation/src/lang/no.json
+++ b/packages/translation/src/lang/no.json
@@ -612,17 +612,17 @@
"select": {
"label": "Velg app",
"notFound": "Ingen app funnet",
- "search": "",
- "noResults": "",
- "action": "",
- "title": ""
+ "search": "Søk etter en app",
+ "noResults": "Ingen resultater",
+ "action": "Velg {app}",
+ "title": "Velg en app for å legge den til på dette brettet"
},
"create": {
- "title": "",
- "description": "",
- "action": ""
+ "title": "Lag ny app",
+ "description": "Lag en ny app ",
+ "action": "Åpne appoppretting"
},
- "add": ""
+ "add": "Legg til en app"
}
},
"integration": {
@@ -649,14 +649,14 @@
"app": {
"option": {
"existing": {
- "title": "",
- "label": ""
+ "title": "Eksisterende",
+ "label": "Velg eksisterende app"
},
"new": {
- "title": "",
+ "title": "Ny",
"url": {
- "label": "",
- "description": ""
+ "label": "App url",
+ "description": "URL-en appen åpnes med når den aksesseres fra dashbordet"
}
}
}
@@ -676,9 +676,9 @@
},
"app": {
"action": {
- "add": "",
- "remove": "",
- "select": ""
+ "add": "Koble en app",
+ "remove": "Koble fra",
+ "select": "Velg en app å koble til"
}
}
},
@@ -709,14 +709,14 @@
"description": "Integrasjon \"{kind}\" kan brukes med søkemotorene. Huk av her for å automatisk konfigurere søkemotor."
},
"app": {
- "sectionTitle": ""
+ "sectionTitle": "Koblet app"
},
"createApp": {
- "label": "",
- "description": ""
+ "label": "Opprett app",
+ "description": "Opprett en app med samme navn og ikon som integrasjonen. La inndataboksen under stå tom for å opprette appen med integrasjons-URL-en."
},
"appHref": {
- "placeholder": ""
+ "placeholder": "Egendefinert app-URL"
}
},
"action": {
@@ -730,125 +730,125 @@
"error": {
"common": {
"cause": {
- "title": ""
+ "title": "Årsak med flere detaljer"
}
},
"unknown": {
- "title": "",
- "description": ""
+ "title": "Ukjent feil",
+ "description": "En ukjent feil oppstod, åpne årsaken nedenfor for å se flere detaljer"
},
"parse": {
- "title": "",
- "description": ""
+ "title": "Parse-feil",
+ "description": "Responsen kunne ikke tolkes. Vennligst kontroller at URL-en peker til tjenestens basis-URL."
},
"authorization": {
- "title": "",
- "description": ""
+ "title": "Autorisasjonsfeil",
+ "description": "Forespørselen var ikke autorisert. Kontroller at legitimasjonen er riktig og har tilstrekkelige rettigheter."
},
"statusCode": {
- "title": "",
- "description": "",
- "otherDescription": "",
+ "title": "Responsfeil",
+ "description": "Mottok uventet {statusCode} ({reason}) respons fra . Kontroller at URL-en peker til integrasjonens basis-URL.",
+ "otherDescription": "Mottok uventet {statusCode} respons fra . Kontroller at URL-en peker til integrasjonens basis-URL.",
"reason": {
- "badRequest": "",
- "notFound": "",
- "tooManyRequests": "",
- "internalServerError": "",
- "serviceUnavailable": "",
- "gatewayTimeout": ""
+ "badRequest": "Ugyldig forespørsel",
+ "notFound": "Ikke funnet",
+ "tooManyRequests": "For mange forespørsler",
+ "internalServerError": "Intern serverfeil",
+ "serviceUnavailable": "Tjenesten utilgjengelig",
+ "gatewayTimeout": "Tidsavbrudd i gateway"
}
},
"certificate": {
- "title": "",
+ "title": "Sertifikatfeil",
"description": {
- "expired": "",
- "notYetValid": "",
- "untrusted": "",
- "hostnameMismatch": ""
+ "expired": "Sertifikatet har utløpt.",
+ "notYetValid": "Sertifikatet er ikke gyldig ennå.",
+ "untrusted": "Sertifikatet er ikke betrodd.",
+ "hostnameMismatch": "Vertsnavnet i sertifikatet samsvarer ikke med URL-en."
},
"alert": {
"permission": {
- "title": "",
- "message": ""
+ "title": "Ikke nok tillatelser",
+ "message": "Du har ikke lov til å stole på eller laste opp sertifikater. Kontakt administratoren din for å laste opp nødvendig rotsertifikat."
},
"hostnameMismatch": {
- "title": "",
- "message": ""
+ "title": "Vertsnavn samsvarer ikke",
+ "message": "Vertsnavnet i sertifikatet samsvarer ikke med vertsnavnet du kobler til. Dette kan indikere en sikkerhetsrisiko, men du kan likevel velge å stole på sertifikatet."
},
"extract": {
- "title": "",
- "message": ""
+ "title": "Utpakking av CA-sertifikat feilet",
+ "message": "Bare selvsignerte sertifikater uten kjede kan hentes automatisk. Hvis du bruker et selvsignert sertifikat, må du laste opp CA-sertifikatet manuelt. Du finner instruksjoner for dette ."
}
},
"action": {
"retry": {
- "label": ""
+ "label": "Prøv å opprette på nytt"
},
"trust": {
- "label": ""
+ "label": "Stol på sertifikat"
},
"upload": {
- "label": ""
+ "label": "Last opp sertifikat"
}
},
"hostnameMismatch": {
"confirm": {
- "title": "",
- "message": ""
+ "title": "Stol på uoverensstemmende vertsnavn",
+ "message": "Er du sikker på at du vil stole på sertifikatet selv om vertsnavnet ikke stemmer?"
},
"notification": {
"success": {
- "title": "",
- "message": ""
+ "title": "Sertifikat betrodd",
+ "message": "Vertsnavn lagt til i listen over betrodde sertifikater"
},
"error": {
- "title": "",
- "message": ""
+ "title": "Kunne ikke stole på sertifikatet",
+ "message": "Sertifikatet med avvikende vertsnavn kunne ikke betros"
}
}
},
"selfSigned": {
"confirm": {
- "title": "",
- "message": ""
+ "title": "Stol på selvsignert sertifikat",
+ "message": "Er du sikker på at du vil stole på dette selvsignerte sertifikatet?"
},
"notification": {
"success": {
- "title": "",
- "message": ""
+ "title": "Sertifikat betrodd",
+ "message": "Sertifikatet ble lagt til i listen over betrodde sertifikater"
},
"error": {
- "title": "",
- "message": ""
+ "title": "Kunne ikke stole på sertifikatet",
+ "message": "Kunne ikke legge til sertifikatet i listen over betrodde sertifikater"
}
}
},
"details": {
- "title": "",
- "description": "",
+ "title": "Detaljer",
+ "description": "Gå gjennom sertifikatinformasjonen før du bestemmer deg for å stole på det.",
"content": {
- "action": "",
- "title": ""
+ "action": "Vis innhold",
+ "title": "PEM-sertifikat"
}
}
},
"request": {
- "title": "",
+ "title": "Forespørselsfeil",
"description": {
"connection": {
- "hostUnreachable": "",
- "networkUnreachable": "",
- "refused": "",
- "reset": ""
+ "hostUnreachable": "Serveren kunne ikke nås. Det betyr vanligvis at verten er frakoblet eller utilgjengelig fra nettet ditt.",
+ "networkUnreachable": "Nettverket er utilgjengelig. Kontroller internettforbindelsen eller nettverkskonfigurasjonen.",
+ "refused": "Serveren avviste tilkoblingen. Den kjører kanskje ikke eller avviser forespørsler på angitt port.",
+ "reset": "Tilkoblingen ble uventet lukket av serveren. Dette kan skje hvis serveren er ustabil eller ble startet på nytt."
},
"dns": {
- "notFound": "",
- "timeout": "",
- "noAnswer": ""
+ "notFound": "Serveradressen ble ikke funnet. Kontroller URL-en for skrivefeil eller ugyldige domenenavn.",
+ "timeout": "DNS-oppslaget fikk tidsavbrudd. Dette kan være midlertidig – prøv igjen om litt.",
+ "noAnswer": "DNS-serveren returnerte ikke et gyldig svar. Domenet kan finnes, men mangler gyldige oppføringer."
},
"timeout": {
- "aborted": "",
- "timeout": ""
+ "aborted": "Forespørselen ble avbrutt før den fullførte. Dette kan skyldes brukerhandling eller systemtidsavbrudd.",
+ "timeout": "Forespørselen tok for lang tid og fikk tidsavbrudd. Sjekk nettverket eller prøv igjen senere."
}
}
}
@@ -920,8 +920,8 @@
"message": "Banen er sannsynligvis ikke riktig"
},
"tooManyRequests": {
- "title": "",
- "message": ""
+ "title": "For mange forespørsler på kort tid",
+ "message": "Det var for mange forespørsler. Du blir sannsynligvis begrenset eller avvist av målsystemet"
}
}
},
@@ -963,36 +963,36 @@
"newLabel": "Nytt område"
},
"personalAccessToken": {
- "label": "",
- "newLabel": ""
+ "label": "Personlig tilgangstoken",
+ "newLabel": "Nytt personlig tilgangstoken"
},
"topic": {
- "label": "",
- "newLabel": ""
+ "label": "Emne",
+ "newLabel": "Nytt emne"
},
"url": {
- "label": "",
- "newLabel": ""
+ "label": "Url",
+ "newLabel": "Ny url"
},
"opnsenseApiKey": {
- "label": "",
- "newLabel": ""
+ "label": "API Nøkkel (Nøkkel)",
+ "newLabel": "Ny API Nøkkel (Nøkkel)"
},
"opnsenseApiSecret": {
- "label": "",
- "newLabel": ""
+ "label": "API Nøkkel (Hemliglet)",
+ "newLabel": "Ny API Key (Secret)"
},
"githubAppId": {
- "label": "",
- "newLabel": ""
+ "label": "App Id",
+ "newLabel": "Ny App Id"
},
"githubInstallationId": {
- "label": "",
- "newLabel": ""
+ "label": "Installasjons-ID",
+ "newLabel": "Ny Installation Id"
},
"privateKey": {
- "label": "",
- "newLabel": ""
+ "label": "Privat nøkkel",
+ "newLabel": "Ny privat nøkkel"
}
}
},
@@ -1044,14 +1044,14 @@
}
},
"common": {
- "success": "",
+ "success": "Suksess",
"beta": "Beta",
"error": "Feil",
"action": {
"add": "Legg til",
"apply": "Bruk",
"backToOverview": "Tilbake til oversikt",
- "change": "",
+ "change": "Endre",
"create": "Opprett",
"createAnother": "Opprett og start på nytt",
"edit": "Rediger",
@@ -1063,7 +1063,7 @@
"cancel": "Avbryt",
"delete": "Slett",
"discard": "Forkast",
- "close": "",
+ "close": "Lukk",
"confirm": "Bekreft",
"continue": "Fortsett",
"previous": "Tidligere",
@@ -1174,8 +1174,8 @@
},
"unit": {
"speed": {
- "kilometersPerHour": "",
- "milesPerHour": ""
+ "kilometersPerHour": "km/h",
+ "milesPerHour": "mph"
}
}
},
@@ -1187,10 +1187,10 @@
},
"option": {
"title": {
- "label": ""
+ "label": "Tittel"
},
"customCssClasses": {
- "label": ""
+ "label": "Egendefinerte css-klasser"
},
"borderColor": {
"label": "Grensefarge"
@@ -1288,7 +1288,7 @@
"label": "Integrasjoner"
},
"title": {
- "label": ""
+ "label": "Tittel"
},
"customCssClasses": {
"label": "Egendefinerte css-klasser"
@@ -1321,21 +1321,21 @@
"label": "Aktiver enkel ping"
},
"layout": {
- "label": "",
+ "label": "Oppsett",
"option": {
- "row": "",
- "row-reverse": "",
- "column": "",
- "column-reverse": ""
+ "row": "Horisontal",
+ "row-reverse": "Horisontal (omvendt)",
+ "column": "Vertikal",
+ "column-reverse": "Vertikal (omvendt)"
}
},
"descriptionDisplayMode": {
- "label": "",
- "description": "",
+ "label": "Visningsmodus for beskrivelse",
+ "description": "Velg hvordan appbeskrivelsen skal vises",
"option": {
- "normal": "",
- "tooltip": "",
- "hidden": ""
+ "normal": "Innenfor widget",
+ "tooltip": "Som verktøytips",
+ "hidden": "Skjult"
}
}
},
@@ -1582,13 +1582,13 @@
"width": "Bredde",
"height": "Høyde"
},
- "placeholder": "",
+ "placeholder": "Begynn å skrive notatene dine",
"dismiss": {
- "title": "",
- "message": "",
+ "title": "Forkaste endringer?",
+ "message": "Du har ulagrede endringer i notatboken. Er du sikker på at du vil forkaste dem?",
"action": {
- "discard": "",
- "keepEditing": ""
+ "discard": "Forkast endringer",
+ "keepEditing": "Fortsett å redigere"
}
}
},
@@ -1664,76 +1664,76 @@
}
},
"stockPrice": {
- "name": "",
- "description": "",
+ "name": "Aksjekurs",
+ "description": "Viser gjeldende aksjekurs for et selskap",
"option": {
"stock": {
- "label": ""
+ "label": "Aksjesymbol"
},
"timeRange": {
- "label": "",
+ "label": "Tidsperiode",
"option": {
"1d": {
- "label": ""
+ "label": "1 dag"
},
"5d": {
- "label": ""
+ "label": "5 dager"
},
"1mo": {
- "label": ""
+ "label": "1 måned"
},
"3mo": {
- "label": ""
+ "label": "3 måneder"
},
"6mo": {
- "label": ""
+ "label": "6 måneder"
},
"ytd": {
- "label": ""
+ "label": "År til dato"
},
"1y": {
- "label": ""
+ "label": "1 år"
},
"2y": {
- "label": ""
+ "label": "2 år"
},
"5y": {
- "label": ""
+ "label": "5 år"
},
"10y": {
- "label": ""
+ "label": "10 år"
},
"max": {
- "label": ""
+ "label": "Maks"
}
}
},
"timeInterval": {
- "label": "",
+ "label": "Tidsintervall",
"option": {
"5m": {
- "label": ""
+ "label": "5 minutter"
},
"15m": {
- "label": ""
+ "label": "15 minutter"
},
"30m": {
- "label": ""
+ "label": "30 minutter"
},
"1h": {
- "label": ""
+ "label": "1 time"
},
"1d": {
- "label": ""
+ "label": "1 dag"
},
"5d": {
- "label": ""
+ "label": "5 dager"
},
"1wk": {
- "label": ""
+ "label": "1 uke"
},
"1mo": {
- "label": ""
+ "label": "1 måned"
}
}
}
@@ -1743,7 +1743,7 @@
"name": "Kalender",
"description": "Vis hendelser fra integrasjonene dine i en kalendervisning innenfor en bestemt relativ tidsperiode",
"duration": {
- "allDay": ""
+ "allDay": "Hele dagen"
},
"option": {
"releaseType": {
@@ -1780,7 +1780,7 @@
"description": "Bare på nåværende vær"
},
"useImperialSpeed": {
- "label": ""
+ "label": "Bruk mph for vindhastighet"
},
"location": {
"label": "Vær plassering"
@@ -1800,12 +1800,12 @@
"description": "Hvordan datoen skal se ut"
}
},
- "currentWindSpeed": "{currentWindSpeed} km/t",
+ "currentWindSpeed": "{currentWindSpeed} {unit}",
"dailyForecast": {
"sunrise": "Soloppgang",
"sunset": "Solnedgang",
- "maxWindSpeed": "Maks. vindhastighet: {maxWindSpeed} km/t",
- "maxWindGusts": "Maks. vindkast: {maxWindGusts} km/t"
+ "maxWindSpeed": "Maks vindhastighet: {maxWindSpeed} {unit}",
+ "maxWindGusts": "Maks vindkast: {maxWindGusts} {unit}"
},
"kind": {
"clear": "Tøm",
@@ -1856,7 +1856,7 @@
"label": "Vis minneinfo"
},
"showUptime": {
- "label": ""
+ "label": "Vis oppetid"
},
"fileSystem": {
"label": "Vis filsysteminfo"
@@ -1865,7 +1865,7 @@
"label": "Standard fane"
},
"visibleClusterSections": {
- "label": ""
+ "label": "Synlige klyngeseksjoner"
},
"sectionIndicatorRequirement": {
"label": "Krav til seksjonsindikator"
@@ -1937,27 +1937,27 @@
}
},
"dockerContainers": {
- "name": "",
- "description": "",
+ "name": "Docker status",
+ "description": "Statistikk over containerne dine (denne widgeten kan bare legges til med administratorrettigheter)",
"option": {
"enableRowSorting": {
- "label": ""
+ "label": "Aktiver sortering av elementer"
},
"defaultSort": {
- "label": "",
+ "label": "Kolonne brukt som standard for sortering",
"option": {
- "name": "",
- "state": "",
- "cpuUsage": "",
- "memoryUsage": ""
+ "name": "Navn",
+ "state": "Tilstand",
+ "cpuUsage": "CPU-bruk",
+ "memoryUsage": "Minnebruk"
}
},
"descendingDefaultSort": {
- "label": ""
+ "label": "Reverser sortering"
}
},
"error": {
- "internalServerError": ""
+ "internalServerError": "Kunne ikke hente containerstatistikk"
}
},
"common": {
@@ -2026,8 +2026,8 @@
"description": "Vis pågående strømmer på dine media-servere",
"option": {
"showOnlyPlaying": {
- "label": "",
- "description": ""
+ "label": "Vis kun det som spiller nå",
+ "description": "Å deaktivere dette fungerer ikke for Plex"
}
},
"items": {
@@ -2036,21 +2036,21 @@
"name": "Navn",
"id": "Id",
"metadata": {
- "title": "",
+ "title": "Statistikk for nerder",
"video": {
- "title": "",
- "resolution": ""
+ "title": "Video",
+ "resolution": "Oppløsning"
},
"audio": {
- "title": "",
- "channelCount": "",
- "codec": ""
+ "title": "Lyd",
+ "channelCount": "Lydkanaler",
+ "codec": "Lydkodek"
},
"transcoding": {
- "title": "",
- "container": "",
- "resolution": "",
- "target": ""
+ "title": "Transkoding",
+ "container": "Beholder",
+ "resolution": "Oppløsning",
+ "target": "Målkodek"
}
}
}
@@ -2078,7 +2078,7 @@
"label": "Vis torrentoppføringer markert som fullført"
},
"showCompletedHttp": {
- "label": ""
+ "label": "Vis diverse oppføringer merket som fullført"
},
"activeTorrentThreshold": {
"label": "Skjul fullført torrent under denne terskelen (i kiB/s)"
@@ -2093,8 +2093,8 @@
"label": "Bruk filter for å beregne ratio"
},
"limitPerIntegration": {
- "label": "",
- "description": ""
+ "label": "Begrens elementer per integrasjon",
+ "description": "Dette begrenser antall elementer vist per integrasjon, ikke globalt"
}
},
"errors": {
@@ -2203,32 +2203,32 @@
"globalRatio": "Global ratio"
},
"mediaReleases": {
- "name": "",
- "description": "",
+ "name": "Medieutgivelser",
+ "description": "Vis nylig tillagte medier eller kommende utgivelser fra ulike integrasjoner",
"option": {
"layout": {
- "label": "",
+ "label": "Oppsett",
"option": {
"backdrop": {
- "label": ""
+ "label": "Bakgrunn"
},
"poster": {
- "label": ""
+ "label": "Plakat"
}
}
},
"showDescriptionTooltip": {
- "label": ""
+ "label": "Vis beskrivelse som verktøytips"
},
"showType": {
- "label": ""
+ "label": "Vis merke for medietype"
},
"showSource": {
- "label": ""
+ "label": "Vis kildeintegrasjon"
}
},
"length": {
- "duration": ""
+ "duration": "{length}min"
}
},
"mediaRequests-requestList": {
@@ -2248,18 +2248,18 @@
"unknown": "Ukjent",
"pending": "Pågår",
"processing": "Prosesserer",
- "requested": "",
+ "requested": "Forespurt",
"partiallyAvailable": "Delvis",
"available": "Tilgjengelig",
- "blacklisted": "",
- "deleted": ""
+ "blacklisted": "Svartelistet",
+ "deleted": "Slettet"
},
"status": {
"pending": "Venter",
"approved": "Godkjent",
"declined": "Avslått",
"failed": "Feilet",
- "completed": ""
+ "completed": "Fullført"
},
"toBeDetermined": "Uavklart"
},
@@ -2361,126 +2361,126 @@
"label": "Antall poster grense"
},
"hideDescription": {
- "label": ""
+ "label": "Skjul beskrivelse"
}
}
},
"releases": {
- "name": "",
- "description": "",
+ "name": "Utgivelser",
+ "description": "Viser en liste over gjeldende versjoner for angitte repositorier med gitt versjonsregex.",
"option": {
"newReleaseWithin": {
- "label": "",
- "description": ""
+ "label": "Ny utgivelse innen",
+ "description": "Brukseksempel: 1w (1 uke), 10M (10 måneder). Gyldige enheter h (timer), d (dager), w (uker), M (måneder), y (år). La stå tomt for ingen markering av nye utgivelser."
},
"staleReleaseWithin": {
- "label": "",
- "description": ""
+ "label": "Utdatert utgivelse innen",
+ "description": "Brukseksempel: 1w (1 uke), 10M (10 måneder). Gyldige enheter h (timer), d (dager), w (uker), M (måneder), y (år). La stå tomt for ingen markering av utdaterte utgivelser."
},
"showOnlyHighlighted": {
- "label": "",
- "description": ""
+ "label": "Vis bare uthevede",
+ "description": "Vis bare nye eller utdaterte utgivelser. Som beskrevet ovenfor."
},
"showDetails": {
- "label": ""
+ "label": "Vis detaljer"
},
"showOnlyIcon": {
- "label": ""
+ "label": "Vis bare ikon"
},
"topReleases": {
- "label": "",
- "description": ""
+ "label": "Topp utgivelser",
+ "description": "Maks antall nyeste utgivelser som vises. Null betyr ingen grense."
},
"repositories": {
- "label": "",
+ "label": "Repositorier",
"addRepository": {
- "label": ""
+ "label": "Legg til repository"
},
"importRepositories": {
- "label": "",
- "loading": "",
- "noImagesFound": "",
- "listFoundImages": "",
- "listAlreadyImportedImages": "",
- "allImagesAlreadyImported": "",
- "onlyAdminCanImport": "",
- "selectAll": "",
- "deselectAll": ""
+ "label": "Importer fra docker",
+ "loading": "Laster docker-bilder",
+ "noImagesFound": "Ingen docker-bilder funnet",
+ "listFoundImages": "Liste over funnede bilder",
+ "listAlreadyImportedImages": "Liste over allerede importerte bilder",
+ "allImagesAlreadyImported": "Alle bilder er allerede importert",
+ "onlyAdminCanImport": "Bare administratorer kan importere fra docker",
+ "selectAll": "Velg alle",
+ "deselectAll": "Velg bort alle"
},
"provider": {
- "label": ""
+ "label": "Leverandør"
},
"identifier": {
- "label": "",
- "placeholder": ""
+ "label": "Identifikator",
+ "placeholder": "Navn eller Eier/Navn"
},
"name": {
- "label": ""
+ "label": "Navn"
},
"versionFilter": {
- "label": "",
+ "label": "Versjonsfilter",
"prefix": {
- "label": ""
+ "label": "Prefiks"
},
"precision": {
- "label": "",
+ "label": "Presisjon",
"options": {
- "none": ""
+ "none": "Ingen"
}
},
"suffix": {
- "label": ""
+ "label": "Suffiks"
},
"regex": {
- "label": ""
+ "label": "Regulært uttrykk"
}
},
"edit": {
- "label": ""
+ "label": "Rediger"
},
"editForm": {
- "title": "",
+ "title": "Rediger repository",
"cancel": {
- "label": ""
+ "label": "Avbryt"
},
"confirm": {
- "label": ""
+ "label": "Bekreft"
}
},
"importForm": {
- "title": ""
+ "title": "Importer fra Docker"
},
"example": {
- "label": ""
+ "label": "Eksempel"
},
- "invalid": "",
+ "invalid": "Ugyldig repository-definisjon, kontroller verdiene",
"noProvider": {
- "label": "",
- "tooltip": ""
+ "label": "Ingen leverandør",
+ "tooltip": "Leverandøren kunne ikke tolkes, sett den manuelt etter import av bildene"
}
}
},
- "not-found": "",
- "pre-release": "",
- "archived": "",
- "forked": "",
- "starsCount": "",
- "forksCount": "",
- "issuesCount": "",
- "markViewed": "",
- "openProjectPage": "",
- "openReleasePage": "",
- "releaseDescription": "",
- "projectDescription": "",
- "created": "",
+ "not-found": "Ikke funnet",
+ "pre-release": "Forhåndsutgivelse",
+ "archived": "Arkivert",
+ "forked": "Forgrenet",
+ "starsCount": "Stjerner",
+ "forksCount": "Forgreninger",
+ "issuesCount": "Åpne saker",
+ "markViewed": "Merk som sett",
+ "openProjectPage": "Åpne prosjektside",
+ "openReleasePage": "Åpne releaseside",
+ "releaseDescription": "Utgivelsesbeskrivelse",
+ "projectDescription": "Prosjektbeskrivelse",
+ "created": "Opprettet",
"error": {
- "label": "",
+ "label": "Feil",
"messages": {
- "invalidIdentifier": "",
- "noMatchingVersion": "",
- "noReleasesFound": "",
- "noProviderSeleceted": "",
- "noProviderResponse": ""
+ "invalidIdentifier": "Ugyldig identifikator",
+ "noMatchingVersion": "Ingen samsvarende versjon funnet",
+ "noReleasesFound": "Ingen utgivelser funnet",
+ "noProviderSeleceted": "Ingen leverandør valgt",
+ "noProviderResponse": "Ingen respons fra leverandør"
}
}
},
@@ -2488,125 +2488,125 @@
"option": {},
"card": {
"vpn": {
- "countConnected": ""
+ "countConnected": "{count} tilkoblet"
}
},
"error": {
- "integrationsDisconnected": "",
- "unknownContentOption": ""
+ "integrationsDisconnected": "Ingen data tilgjengelig, alle integrasjoner er frakoblet",
+ "unknownContentOption": "Ukjent innholdsvalg for nettverkskontroller-sammendragswidget: "
},
- "name": "",
- "description": ""
+ "name": "Nettverkskontroller-sammendrag",
+ "description": "Viser sammendrag av en nettverkskontroller (som UniFi Controller)"
},
"networkControllerStatus": {
"card": {
"variants": {
"wired": {
- "name": ""
+ "name": "Kablet"
},
"wifi": {
- "name": ""
+ "name": "Wi-Fi"
}
},
"users": {
- "label": ""
+ "label": "Brukere"
},
"guests": {
- "label": ""
+ "label": "Gjester"
}
},
"option": {
"content": {
"option": {
"wifi": {
- "label": ""
+ "label": "Wi-Fi"
},
"wired": {
- "label": ""
+ "label": "Kablet"
}
},
- "label": ""
+ "label": "Widget-innhold"
}
},
"error": {
- "integrationsDisconnected": "",
- "unknownContentOption": ""
+ "integrationsDisconnected": "Ingen data tilgjengelig, alle integrasjoner er frakoblet",
+ "unknownContentOption": "Ukjent innholdsvalg for nettverksstatus-widget: "
},
- "name": "",
- "description": ""
+ "name": "Nettverksstatus",
+ "description": "Vis tilkoblede enheter på et nettverk"
},
"networkController": {
"error": {
- "internalServerError": ""
+ "internalServerError": "Kunne ikke hente nettverkskontroller-sammendrag"
}
},
"firewall": {
- "name": "",
- "description": "",
+ "name": "Brannmur-overvåking",
+ "description": "Viser et sammendrag av brannmurer",
"tab": {
- "system": "",
- "interfaces": ""
+ "system": "System",
+ "interfaces": "Grensesnitt"
},
"error": {
- "internalServerError": ""
+ "internalServerError": "Kunne ikke hente data fra brannmuren"
},
"option": {
- "interfaces": ""
+ "interfaces": "Nettverksgrensesnitt som skal vises"
},
"widget": {
- "fwname": "",
- "version": "",
- "versiontitle": "",
- "cputitle": "",
- "memorytitle": "",
- "cpu": "",
- "memory": "",
+ "fwname": "Navn",
+ "version": "Versjon",
+ "versiontitle": "Versjoner",
+ "cputitle": "CPU-bruk",
+ "memorytitle": "Minnebruk",
+ "cpu": "CPU",
+ "memory": "Minne",
"interfaces": {
- "name": "",
- "trans": "",
- "recv": "",
- "title": ""
+ "name": "navn",
+ "trans": "Sendt",
+ "recv": "Mottatt",
+ "title": "Nettverksgrensesnitt"
}
}
},
"notifications": {
- "name": "",
- "description": "",
- "noItems": "",
+ "name": "Varsler",
+ "description": "Vis varselhistorikk fra en integrasjon",
+ "noItems": "Ingen varsler å vise.",
"option": {}
},
"systemResources": {
- "name": "",
- "description": "",
+ "name": "Systemressurser",
+ "description": "CPU, minne, disk og annen maskinvarebruk på systemet ditt",
"option": {
"hasShadow": {
- "label": ""
+ "label": "Aktiver skyggelegging i diagram"
},
"visibleCharts": {
- "label": "",
- "description": "",
+ "label": "Synlige diagrammer",
+ "description": "Velg diagrammene du vil vise.",
"option": {
- "cpu": "",
- "memory": "",
- "network": ""
+ "cpu": "CPU",
+ "memory": "Minne",
+ "network": "Nettverk"
}
},
"labelDisplayMode": {
- "label": "",
+ "label": "Visningsmodus for etikett",
"option": {
- "textWithIcon": "",
- "text": "",
- "icon": "",
- "hidden": ""
+ "textWithIcon": "Vis tekst med ikon",
+ "text": "Vis bare tekst",
+ "icon": "Vis bare ikon",
+ "hidden": "Skjul etikett"
}
}
},
"card": {
- "cpu": "",
- "memory": "",
- "network": "",
- "up": "",
- "down": ""
+ "cpu": "CPU",
+ "memory": "Minne",
+ "network": "NETT",
+ "up": "OPP",
+ "down": "NED"
}
}
},
@@ -2729,10 +2729,10 @@
},
"backgroundImageUrl": {
"label": "URL for bakgrunnsbilde",
- "placeholder": "",
+ "placeholder": "Begynn å skrive for å søke i lokale bilder",
"group": {
- "your": "",
- "other": ""
+ "your": "Dine bilder",
+ "other": "Andre bilder"
}
},
"backgroundImageAttachment": {
@@ -2795,7 +2795,7 @@
"label": "Ikonfarge"
},
"clearColor": {
- "label": ""
+ "label": "Nullstill farge"
},
"customCss": {
"label": "Tilpasset css for denne tavlen",
@@ -3030,8 +3030,8 @@
"integration": "Integrasjoner",
"app": "Apper",
"group": "Grupper",
- "searchEngine": "",
- "media": ""
+ "searchEngine": "Søkemotorer",
+ "media": "Medier"
},
"statisticLabel": {
"boards": "Tavler",
@@ -3040,8 +3040,8 @@
"authorization": "Autorisasjon"
},
"heroBanner": {
- "title": "",
- "subtitle": ""
+ "title": "Velkommen tilbake til din",
+ "subtitle": "{app} tavle"
}
},
"board": {
@@ -3326,7 +3326,7 @@
"idle": "Inaktiv",
"running": "Kjører",
"error": "Feil",
- "disabled": ""
+ "disabled": "Deaktivert"
},
"job": {
"minecraftServerStatus": {
@@ -3378,99 +3378,99 @@
"label": "Media transkoding"
},
"networkController": {
- "label": ""
+ "label": "Nettverkskontroller"
},
"refreshNotifications": {
- "label": ""
+ "label": "Varseloppdaterer"
},
"dockerContainers": {
- "label": ""
+ "label": "Docker-beholdere"
},
"firewallCpu": {
- "label": ""
+ "label": "Brannmur-CPU"
},
"firewallMemory": {
- "label": ""
+ "label": "Brannmur-minne"
},
"firewallVersion": {
- "label": ""
+ "label": "Brannmur-versjon"
},
"firewallInterfaces": {
- "label": ""
+ "label": "Brannmur-grensesnitt"
},
"weather": {
- "label": ""
+ "label": "Vær"
}
},
"interval": {
- "seconds": "",
- "minutes": "",
- "hours": "",
- "midnight": "",
- "weeklyMonday": "",
+ "seconds": "Hvert {interval, plural, =1 {sekund} other {# sekunder}}",
+ "minutes": "Hvert {interval, plural, =1 {minutt} other {# minutter}}",
+ "hours": "Hver {interval, plural, =1 {time} other {# timer}}",
+ "midnight": "Hver dag ved midnatt",
+ "weeklyMonday": "Hver uke på mandag",
"update": {
"success": {
- "message": ""
+ "message": "Intervall oppdatert"
},
"error": {
- "message": ""
+ "message": "Kunne ikke oppdatere intervall"
}
}
},
"settings": {
- "title": ""
+ "title": "Oppgaveinnstillinger for {jobName}"
},
"field": {
"name": {
- "label": ""
+ "label": "Navn"
},
"interval": {
- "label": ""
+ "label": "Planlagt intervall"
},
"lastExecution": {
- "label": ""
+ "label": "Siste kjøring"
},
"actions": {
- "label": ""
+ "label": "Handlinger"
}
},
"table": {
- "search": ""
+ "search": "Søk i {count} oppgaver..."
},
"action": {
"refresh": {
- "label": ""
+ "label": "Oppdater"
}
},
"refresh": {
"success": {
- "message": ""
+ "message": "Oppgaver ble oppdatert"
},
"error": {
- "message": ""
+ "message": "Kunne ikke oppdatere oppgaver"
}
},
"trigger": {
"success": {
- "message": ""
+ "message": "Oppgave startet"
},
"error": {
- "message": ""
+ "message": "Kunne ikke starte oppgave"
}
},
"enable": {
"success": {
- "message": ""
+ "message": "Oppgave aktivert"
}
},
"disable": {
"success": {
- "message": ""
+ "message": "Oppgave deaktivert"
}
},
"toggle": {
"error": {
- "message": ""
+ "message": "Kunne ikke bytte oppgavestatus"
}
}
},
@@ -3527,19 +3527,19 @@
"subtitle": "{count} brukt i koden til Homarr"
},
"hotkeys": {
- "title": "",
- "subtitle": "",
+ "title": "Hurtigtaster",
+ "subtitle": "Tastatursnarveier som forbedrer arbeidsflyten din",
"field": {
- "shortcut": "",
- "action": ""
+ "shortcut": "Snarvei",
+ "action": "Handling"
},
"action": {
- "toggleBoardEdit": "",
- "toggleColorScheme": "",
- "saveNotebook": "",
- "openSpotlight": ""
+ "toggleBoardEdit": "Slå av/på redigeringsmodus for tavle",
+ "toggleColorScheme": "Bytt lys/mørk modus",
+ "saveNotebook": "Lagre notatbok (kun i notatbok-widget)",
+ "openSpotlight": "Åpne søk"
},
- "note": ""
+ "note": "Tips: Mod refererer til både Ctrl-tasten og ⌘ på macOS"
}
}
}
@@ -3549,9 +3549,9 @@
"title": "Containere",
"table": {
"updated": "Oppdatert {when}",
- "search": "Søk i {count} containere",
+ "search": "Søk {count} containere",
"selected": "{selectCount} av {totalCount} containere valgt",
- "footer": ""
+ "footer": "Totalt {count} containere"
},
"field": {
"name": {
@@ -3571,10 +3571,10 @@
},
"stats": {
"cpu": {
- "label": ""
+ "label": "CPU"
},
"memory": {
- "label": ""
+ "label": "Minne"
}
},
"containerImage": {
@@ -3585,7 +3585,7 @@
}
},
"action": {
- "title": "",
+ "title": "Handlinger",
"start": {
"label": "Start",
"notification": {
@@ -3995,7 +3995,7 @@
"tools": {
"label": "Verktøy",
"tasks": {
- "label": ""
+ "label": "Oppgaver"
},
"docker": {
"label": "Docker"
@@ -4033,7 +4033,7 @@
"certificates": {
"label": "Sertifikater",
"hostnames": {
- "label": ""
+ "label": "Vertsnavn"
}
}
},
@@ -4400,7 +4400,7 @@
},
"delete": {
"title": "Slett søkemotor",
- "message": "Er du sikker på at du vil slette søkemotoren '{name}'?",
+ "message": "Er du sikker på at du vil slette søkemotoren {name}?",
"notification": {
"success": {
"title": "Søkemotor slettet",
@@ -4434,25 +4434,25 @@
"certificate": {
"field": {
"hostname": {
- "label": ""
+ "label": "Vertsnavn"
},
"subject": {
- "label": ""
+ "label": "Emne"
},
"issuer": {
- "label": ""
+ "label": "Utsteder"
},
"validFrom": {
- "label": ""
+ "label": "Gyldig fra"
},
"validTo": {
- "label": ""
+ "label": "Gyldig til"
},
"serialNumber": {
- "label": ""
+ "label": "Serienummer"
},
"fingerprint": {
- "label": ""
+ "label": "Fingeravtrykk"
}
},
"page": {
@@ -4463,19 +4463,19 @@
"title": "Det er ingen sertifikater enda"
},
"invalid": {
- "title": "",
- "description": ""
+ "title": "Ugyldig sertifikat",
+ "description": "Kunne ikke tolke sertifikatet"
},
"expires": "Utløper {when}",
- "toHostnames": ""
+ "toHostnames": "Betrodde vertsnavn"
},
"hostnames": {
- "title": "",
- "description": "",
+ "title": "Betrodde sertifikatvertsnavn",
+ "description": "Noen sertifikater tillater ikke domenet Homarr bruker for forespørsler. Alle betrodde vertsnavn med sine sertifikat-hash brukes for å omgå disse begrensningene.",
"noResults": {
- "title": ""
+ "title": "Det finnes ingen vertsnavn ennå"
},
- "toCertificates": ""
+ "toCertificates": "Sertifikater"
}
},
"action": {
@@ -4507,16 +4507,16 @@
}
},
"removeHostname": {
- "label": "",
- "confirm": "",
+ "label": "Fjern betrodd vertsnavn",
+ "confirm": "Er du sikker på at du vil fjerne dette betrodde vertsnavnet? Dette kan gjøre at noen integrasjoner slutter å fungere.",
"notification": {
"success": {
- "title": "",
- "message": ""
+ "title": "Vertsnavn fjernet",
+ "message": "Vertsnavnet ble fjernet"
},
"error": {
- "title": "",
- "message": ""
+ "title": "Vertsnavn ikke fjernet",
+ "message": "Vertsnavnet kunne ikke fjernes"
}
}
}
@@ -4525,10 +4525,10 @@
"log": {
"level": {
"option": {
- "debug": "",
- "info": "",
- "warn": "",
- "error": ""
+ "debug": "Feilsøk",
+ "info": "Info",
+ "warn": "Advarsel",
+ "error": "Feil"
}
}
}
diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json
index 194997b1d..7fc414127 100644
--- a/packages/translation/src/lang/sl.json
+++ b/packages/translation/src/lang/sl.json
@@ -177,8 +177,8 @@
}
},
"forgotPassword": {
- "label": "",
- "description": ""
+ "label": "Ste pozabili geslo?",
+ "description": "Administrator lahko zažene ukaz:"
}
},
"register": {
@@ -622,7 +622,7 @@
"description": "",
"action": ""
},
- "add": ""
+ "add": "Dodaj aplikacijo"
}
},
"integration": {
@@ -1059,10 +1059,10 @@
"insert": "Vstavite",
"remove": "Odstrani",
"save": "Shrani",
- "saveChanges": "Shranjevanje sprememb",
+ "saveChanges": "Shrani spremembe",
"cancel": "Prekliči",
"delete": "Izbriši",
- "discard": "",
+ "discard": "Zapusti",
"close": "",
"confirm": "Potrdi",
"continue": "",
@@ -1125,13 +1125,13 @@
"userAvatar": {
"menu": {
"switchToDarkMode": "",
- "switchToLightMode": "",
- "management": "",
- "preferences": "Vaše želje",
- "logout": "",
+ "switchToLightMode": "Svetli način",
+ "management": "Nastavitve",
+ "preferences": "Prilagoditev",
+ "logout": "Odjava",
"login": "Prijava",
- "homeBoard": "",
- "loggedOut": "",
+ "homeBoard": "Vaša nadzorna plošča",
+ "loggedOut": "Odjava uspešna",
"updateAvailable": ""
}
},
@@ -1182,7 +1182,7 @@
"section": {
"dynamic": {
"action": {
- "create": "",
+ "create": "Nova dinamična vsebina",
"remove": ""
},
"option": {
@@ -1208,7 +1208,7 @@
}
},
"action": {
- "create": "",
+ "create": "Nova kategorija",
"edit": "",
"remove": "",
"moveUp": "Premaknite se navzgor",
@@ -1243,12 +1243,12 @@
},
"item": {
"action": {
- "create": "",
+ "create": "Nova vsebina",
"import": "",
- "edit": "",
- "moveResize": "",
- "duplicate": "",
- "remove": ""
+ "edit": "Uredi gradnik",
+ "moveResize": "Premakni/spremeni",
+ "duplicate": "Podvoji",
+ "remove": "Izbriši"
},
"menu": {
"label": {
@@ -2638,8 +2638,8 @@
"edit": {
"notification": {
"success": {
- "title": "",
- "message": ""
+ "title": "Spremembe so uveljavljene",
+ "message": "Vsebina je bila uspšeno shranjena"
},
"error": {
"title": "",
@@ -2647,8 +2647,8 @@
}
},
"confirmLeave": {
- "title": "",
- "message": ""
+ "title": "Neshranjene spremembe",
+ "message": "Vsebina ni shranjena, želite nadaljevati?"
}
},
"oldImport": {
@@ -2716,16 +2716,16 @@
},
"field": {
"pageTitle": {
- "label": ""
+ "label": "Naslov strani"
},
"metaTitle": {
- "label": ""
+ "label": "Meta naslov"
},
"logoImageUrl": {
- "label": ""
+ "label": "URL logotipa"
},
"faviconImageUrl": {
- "label": ""
+ "label": "URL ikone"
},
"backgroundImageUrl": {
"label": "",
@@ -2835,7 +2835,7 @@
"metaTitle": ""
},
"setting": {
- "title": "",
+ "title": "Nastavitve za {boardName} nadzorno ploščo",
"section": {
"general": {
"title": "Splošno",
@@ -2844,9 +2844,9 @@
"layout": {
"title": "Postavitev",
"responsive": {
- "title": "",
+ "title": "Predloga",
"action": {
- "add": ""
+ "add": "Dodaj predlogo"
}
}
},
@@ -2959,14 +2959,14 @@
"layout": {
"field": {
"name": {
- "label": ""
+ "label": "Ime"
},
"columnCount": {
- "label": ""
+ "label": "Število stolpcev"
},
"breakpoint": {
- "label": "",
- "description": ""
+ "label": "Prekinitvene točke",
+ "description": "Postavitev bo uporabljena na vseh zaslonih, večjih od te prelomne točke, do naslednje večje prelomne točke."
}
}
},
@@ -4046,7 +4046,7 @@
}
},
"search": {
- "placeholder": "",
+ "placeholder": "Iskanje vsebine",
"nothingFound": "",
"error": {
"fetch": ""
From 72baf965b4aa7cec175c93f9db52cbdf0186d3f5 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:23:01 +0100
Subject: [PATCH 09/31] chore(deps): update dependency esbuild to ^0.27.2
(#4734)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
apps/tasks/package.json | 2 +-
apps/websocket/package.json | 2 +-
packages/cli/package.json | 2 +-
packages/db/package.json | 2 +-
pnpm-lock.yaml | 286 ++++++++++++++++++++++++++++++++++--
5 files changed, 281 insertions(+), 13 deletions(-)
diff --git a/apps/tasks/package.json b/apps/tasks/package.json
index 3d663aa84..c8ae32e50 100644
--- a/apps/tasks/package.json
+++ b/apps/tasks/package.json
@@ -49,7 +49,7 @@
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node": "^24.10.4",
"dotenv-cli": "^11.0.0",
- "esbuild": "^0.27.1",
+ "esbuild": "^0.27.2",
"eslint": "^9.39.2",
"prettier": "^3.7.4",
"tsx": "4.20.4",
diff --git a/apps/websocket/package.json b/apps/websocket/package.json
index 522ffb3de..aca89c205 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.18.1",
- "esbuild": "^0.27.1",
+ "esbuild": "^0.27.2",
"eslint": "^9.39.2",
"prettier": "^3.7.4",
"typescript": "^5.9.3"
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 5299843d0..78ff471a8 100644
--- a/packages/cli/package.json
+++ b/packages/cli/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",
- "esbuild": "^0.27.1",
+ "esbuild": "^0.27.2",
"eslint": "^9.39.2",
"typescript": "^5.9.3"
}
diff --git a/packages/db/package.json b/packages/db/package.json
index a61cf8537..592bbbfde 100644
--- a/packages/db/package.json
+++ b/packages/db/package.json
@@ -67,7 +67,7 @@
"@types/better-sqlite3": "7.6.13",
"@types/pg": "^8.16.0",
"dotenv-cli": "^11.0.0",
- "esbuild": "^0.27.1",
+ "esbuild": "^0.27.2",
"eslint": "^9.39.2",
"prettier": "^3.7.4",
"tsx": "4.20.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2cd0bcd53..998992cf7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -457,8 +457,8 @@ importers:
specifier: ^11.0.0
version: 11.0.0
esbuild:
- specifier: ^0.27.1
- version: 0.27.1
+ specifier: ^0.27.2
+ version: 0.27.2
eslint:
specifier: ^9.39.2
version: 9.39.2
@@ -521,8 +521,8 @@ importers:
specifier: ^8.18.1
version: 8.18.1
esbuild:
- specifier: ^0.27.1
- version: 0.27.1
+ specifier: ^0.27.2
+ version: 0.27.2
eslint:
specifier: ^9.39.2
version: 9.39.2
@@ -817,8 +817,8 @@ importers:
specifier: workspace:^0.1.0
version: link:../../tooling/typescript
esbuild:
- specifier: ^0.27.1
- version: 0.27.1
+ specifier: ^0.27.2
+ version: 0.27.2
eslint:
specifier: ^9.39.2
version: 9.39.2
@@ -1184,8 +1184,8 @@ importers:
specifier: ^11.0.0
version: 11.0.0
esbuild:
- specifier: ^0.27.1
- version: 0.27.1
+ specifier: ^0.27.2
+ version: 0.27.2
eslint:
specifier: ^9.39.2
version: 9.39.2
@@ -2823,6 +2823,12 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.27.2':
+ resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.25.12':
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
engines: {node: '>=18'}
@@ -2835,6 +2841,12 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.27.2':
+ resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.25.12':
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
engines: {node: '>=18'}
@@ -2847,6 +2859,12 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.27.2':
+ resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.25.12':
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
engines: {node: '>=18'}
@@ -2859,6 +2877,12 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.27.2':
+ resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.25.12':
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
engines: {node: '>=18'}
@@ -2871,6 +2895,12 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.27.2':
+ resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.25.12':
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
engines: {node: '>=18'}
@@ -2883,6 +2913,12 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.2':
+ resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.25.12':
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
engines: {node: '>=18'}
@@ -2895,6 +2931,12 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.27.2':
+ resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.25.12':
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
engines: {node: '>=18'}
@@ -2907,6 +2949,12 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.2':
+ resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.25.12':
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
engines: {node: '>=18'}
@@ -2919,6 +2967,12 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.27.2':
+ resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.25.12':
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
engines: {node: '>=18'}
@@ -2931,6 +2985,12 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.27.2':
+ resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.25.12':
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
engines: {node: '>=18'}
@@ -2943,6 +3003,12 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.27.2':
+ resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.25.12':
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
engines: {node: '>=18'}
@@ -2955,6 +3021,12 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.27.2':
+ resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.25.12':
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
engines: {node: '>=18'}
@@ -2967,6 +3039,12 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.2':
+ resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.25.12':
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
engines: {node: '>=18'}
@@ -2979,6 +3057,12 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.2':
+ resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.25.12':
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
engines: {node: '>=18'}
@@ -2991,6 +3075,12 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.2':
+ resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.25.12':
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
engines: {node: '>=18'}
@@ -3003,6 +3093,12 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.27.2':
+ resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.25.12':
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
engines: {node: '>=18'}
@@ -3015,6 +3111,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.27.2':
+ resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.12':
resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
engines: {node: '>=18'}
@@ -3027,6 +3129,12 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.25.12':
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
engines: {node: '>=18'}
@@ -3039,6 +3147,12 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.2':
+ resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.25.12':
resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
engines: {node: '>=18'}
@@ -3051,6 +3165,12 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.25.12':
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
engines: {node: '>=18'}
@@ -3063,6 +3183,12 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.2':
+ resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openharmony-arm64@0.25.12':
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
engines: {node: '>=18'}
@@ -3075,6 +3201,12 @@ packages:
cpu: [arm64]
os: [openharmony]
+ '@esbuild/openharmony-arm64@0.27.2':
+ resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.25.12':
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
engines: {node: '>=18'}
@@ -3087,6 +3219,12 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.27.2':
+ resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.25.12':
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
engines: {node: '>=18'}
@@ -3099,6 +3237,12 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.27.2':
+ resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.25.12':
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
engines: {node: '>=18'}
@@ -3111,6 +3255,12 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.27.2':
+ resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.25.12':
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
engines: {node: '>=18'}
@@ -3123,6 +3273,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.27.2':
+ resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@eslint-community/eslint-utils@4.9.0':
resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6573,6 +6729,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.27.2:
+ resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -11666,7 +11827,7 @@ snapshots:
'@esbuild-kit/core-utils@3.3.2':
dependencies:
- esbuild: 0.27.1
+ esbuild: 0.27.2
source-map-support: 0.5.21
'@esbuild-kit/esm-loader@2.6.5':
@@ -11680,156 +11841,234 @@ snapshots:
'@esbuild/aix-ppc64@0.27.1':
optional: true
+ '@esbuild/aix-ppc64@0.27.2':
+ optional: true
+
'@esbuild/android-arm64@0.25.12':
optional: true
'@esbuild/android-arm64@0.27.1':
optional: true
+ '@esbuild/android-arm64@0.27.2':
+ optional: true
+
'@esbuild/android-arm@0.25.12':
optional: true
'@esbuild/android-arm@0.27.1':
optional: true
+ '@esbuild/android-arm@0.27.2':
+ optional: true
+
'@esbuild/android-x64@0.25.12':
optional: true
'@esbuild/android-x64@0.27.1':
optional: true
+ '@esbuild/android-x64@0.27.2':
+ optional: true
+
'@esbuild/darwin-arm64@0.25.12':
optional: true
'@esbuild/darwin-arm64@0.27.1':
optional: true
+ '@esbuild/darwin-arm64@0.27.2':
+ optional: true
+
'@esbuild/darwin-x64@0.25.12':
optional: true
'@esbuild/darwin-x64@0.27.1':
optional: true
+ '@esbuild/darwin-x64@0.27.2':
+ optional: true
+
'@esbuild/freebsd-arm64@0.25.12':
optional: true
'@esbuild/freebsd-arm64@0.27.1':
optional: true
+ '@esbuild/freebsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/freebsd-x64@0.25.12':
optional: true
'@esbuild/freebsd-x64@0.27.1':
optional: true
+ '@esbuild/freebsd-x64@0.27.2':
+ optional: true
+
'@esbuild/linux-arm64@0.25.12':
optional: true
'@esbuild/linux-arm64@0.27.1':
optional: true
+ '@esbuild/linux-arm64@0.27.2':
+ optional: true
+
'@esbuild/linux-arm@0.25.12':
optional: true
'@esbuild/linux-arm@0.27.1':
optional: true
+ '@esbuild/linux-arm@0.27.2':
+ optional: true
+
'@esbuild/linux-ia32@0.25.12':
optional: true
'@esbuild/linux-ia32@0.27.1':
optional: true
+ '@esbuild/linux-ia32@0.27.2':
+ optional: true
+
'@esbuild/linux-loong64@0.25.12':
optional: true
'@esbuild/linux-loong64@0.27.1':
optional: true
+ '@esbuild/linux-loong64@0.27.2':
+ optional: true
+
'@esbuild/linux-mips64el@0.25.12':
optional: true
'@esbuild/linux-mips64el@0.27.1':
optional: true
+ '@esbuild/linux-mips64el@0.27.2':
+ optional: true
+
'@esbuild/linux-ppc64@0.25.12':
optional: true
'@esbuild/linux-ppc64@0.27.1':
optional: true
+ '@esbuild/linux-ppc64@0.27.2':
+ optional: true
+
'@esbuild/linux-riscv64@0.25.12':
optional: true
'@esbuild/linux-riscv64@0.27.1':
optional: true
+ '@esbuild/linux-riscv64@0.27.2':
+ optional: true
+
'@esbuild/linux-s390x@0.25.12':
optional: true
'@esbuild/linux-s390x@0.27.1':
optional: true
+ '@esbuild/linux-s390x@0.27.2':
+ optional: true
+
'@esbuild/linux-x64@0.25.12':
optional: true
'@esbuild/linux-x64@0.27.1':
optional: true
+ '@esbuild/linux-x64@0.27.2':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.12':
optional: true
'@esbuild/netbsd-arm64@0.27.1':
optional: true
+ '@esbuild/netbsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/netbsd-x64@0.25.12':
optional: true
'@esbuild/netbsd-x64@0.27.1':
optional: true
+ '@esbuild/netbsd-x64@0.27.2':
+ optional: true
+
'@esbuild/openbsd-arm64@0.25.12':
optional: true
'@esbuild/openbsd-arm64@0.27.1':
optional: true
+ '@esbuild/openbsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/openbsd-x64@0.25.12':
optional: true
'@esbuild/openbsd-x64@0.27.1':
optional: true
+ '@esbuild/openbsd-x64@0.27.2':
+ optional: true
+
'@esbuild/openharmony-arm64@0.25.12':
optional: true
'@esbuild/openharmony-arm64@0.27.1':
optional: true
+ '@esbuild/openharmony-arm64@0.27.2':
+ optional: true
+
'@esbuild/sunos-x64@0.25.12':
optional: true
'@esbuild/sunos-x64@0.27.1':
optional: true
+ '@esbuild/sunos-x64@0.27.2':
+ optional: true
+
'@esbuild/win32-arm64@0.25.12':
optional: true
'@esbuild/win32-arm64@0.27.1':
optional: true
+ '@esbuild/win32-arm64@0.27.2':
+ optional: true
+
'@esbuild/win32-ia32@0.25.12':
optional: true
'@esbuild/win32-ia32@0.27.1':
optional: true
+ '@esbuild/win32-ia32@0.27.2':
+ optional: true
+
'@esbuild/win32-x64@0.25.12':
optional: true
'@esbuild/win32-x64@0.27.1':
optional: true
+ '@esbuild/win32-x64@0.27.2':
+ optional: true
+
'@eslint-community/eslint-utils@4.9.0(eslint@9.39.2)':
dependencies:
eslint: 9.39.2
@@ -15863,6 +16102,35 @@ snapshots:
'@esbuild/win32-ia32': 0.27.1
'@esbuild/win32-x64': 0.27.1
+ esbuild@0.27.2:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.2
+ '@esbuild/android-arm': 0.27.2
+ '@esbuild/android-arm64': 0.27.2
+ '@esbuild/android-x64': 0.27.2
+ '@esbuild/darwin-arm64': 0.27.2
+ '@esbuild/darwin-x64': 0.27.2
+ '@esbuild/freebsd-arm64': 0.27.2
+ '@esbuild/freebsd-x64': 0.27.2
+ '@esbuild/linux-arm': 0.27.2
+ '@esbuild/linux-arm64': 0.27.2
+ '@esbuild/linux-ia32': 0.27.2
+ '@esbuild/linux-loong64': 0.27.2
+ '@esbuild/linux-mips64el': 0.27.2
+ '@esbuild/linux-ppc64': 0.27.2
+ '@esbuild/linux-riscv64': 0.27.2
+ '@esbuild/linux-s390x': 0.27.2
+ '@esbuild/linux-x64': 0.27.2
+ '@esbuild/netbsd-arm64': 0.27.2
+ '@esbuild/netbsd-x64': 0.27.2
+ '@esbuild/openbsd-arm64': 0.27.2
+ '@esbuild/openbsd-x64': 0.27.2
+ '@esbuild/openharmony-arm64': 0.27.2
+ '@esbuild/sunos-x64': 0.27.2
+ '@esbuild/win32-arm64': 0.27.2
+ '@esbuild/win32-ia32': 0.27.2
+ '@esbuild/win32-x64': 0.27.2
+
escalade@3.2.0: {}
escape-goat@2.1.1: {}
From 45d2102d38a7b5fd1caf366730cd44d7fab00681 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:23:07 +0100
Subject: [PATCH 10/31] chore(deps): update dependency esbuild@<=0.24.2
to >=0.27.2 (#4735)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index 644094f88..28c330f6e 100644
--- a/package.json
+++ b/package.json
@@ -82,7 +82,7 @@
"axios@>=1.0.0 <1.8.2": ">=1.13.2",
"brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1",
"brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1",
- "esbuild@<=0.24.2": ">=0.27.1",
+ "esbuild@<=0.24.2": ">=0.27.2",
"form-data@>=4.0.0 <4.0.4": ">=4.0.5",
"hono@<4.6.5": ">=4.11.3",
"linkifyjs@<4.3.2": ">=4.3.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 998992cf7..2cfba1cc8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ overrides:
axios@>=1.0.0 <1.8.2: '>=1.13.2'
brace-expansion@>=2.0.0 <=2.0.1: '>=4.0.1'
brace-expansion@>=1.0.0 <=1.1.11: '>=4.0.1'
- esbuild@<=0.24.2: '>=0.27.1'
+ esbuild@<=0.24.2: '>=0.27.2'
form-data@>=4.0.0 <4.0.4: '>=4.0.5'
hono@<4.6.5: '>=4.11.3'
linkifyjs@<4.3.2: '>=4.3.2'
@@ -6717,7 +6717,7 @@ packages:
esbuild-register@3.6.0:
resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
peerDependencies:
- esbuild: '>=0.27.1'
+ esbuild: '>=0.27.2'
esbuild@0.25.12:
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
@@ -12608,7 +12608,7 @@ snapshots:
'@rrweb/types': 2.0.0-alpha.16
babel-plugin-syntax-hermes-parser: 0.21.1
ci-info: 4.0.0
- esbuild: 0.27.1
+ esbuild: 0.27.2
faster-babel-types: 0.1.0(@babel/types@7.26.0)
hono: 4.11.3
isomorphic-fetch: 3.0.0
From acb0bc68d20e152844e7ad817a6fe6cb648befd0 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:50:27 +0100
Subject: [PATCH 11/31] chore(deps): update dependency vite-tsconfig-paths to
v6 (#4709)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
package.json | 2 +-
pnpm-lock.yaml | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/package.json b/package.json
index 28c330f6e..2d33d70e7 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"testcontainers": "^11.11.0",
"turbo": "^2.7.2",
"typescript": "^5.9.3",
- "vite-tsconfig-paths": "^5.1.4",
+ "vite-tsconfig-paths": "^6.0.3",
"vitest": "^4.0.16"
},
"packageManager": "pnpm@10.26.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2cfba1cc8..334737d82 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -101,8 +101,8 @@ importers:
specifier: ^5.9.3
version: 5.9.3
vite-tsconfig-paths:
- specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))
+ specifier: ^6.0.3
+ version: 6.0.3(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))
vitest:
specifier: ^4.0.16
version: 4.0.16(@types/node@24.10.4)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)
@@ -10917,8 +10917,8 @@ packages:
videojs-vtt.js@0.15.5:
resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==}
- vite-tsconfig-paths@5.1.4:
- resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
+ vite-tsconfig-paths@6.0.3:
+ resolution: {integrity: sha512-7bL7FPX/DSviaZGYUKowWF1AiDVWjMjxNbE8lyaVGDezkedWqfGhlnQ4BZXre0ZN5P4kAgIJfAlgFDVyjrCIyg==}
peerDependencies:
vite: '>=7.3.0'
peerDependenciesMeta:
@@ -20981,9 +20981,9 @@ snapshots:
dependencies:
global: 4.4.0
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)):
+ vite-tsconfig-paths@6.0.3(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.4)(sass@1.97.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)):
dependencies:
- debug: 4.3.7
+ debug: 4.4.3
globrex: 0.1.2
tsconfck: 3.1.3(typescript@5.9.3)
optionalDependencies:
From 9b0dd6d6cebda4a541c8859506d89e9e9f782fa4 Mon Sep 17 00:00:00 2001
From: Manuel <30572287+manuel-rw@users.noreply.github.com>
Date: Fri, 2 Jan 2026 18:54:47 +0000
Subject: [PATCH 12/31] feat: unraid integration (#4439)
Co-authored-by: Meier Lukas
---
.../src/router/widgets/health-monitoring.ts | 4 +-
packages/definitions/src/integration.ts | 7 +
packages/integrations/src/base/creator.ts | 2 +
packages/integrations/src/index.ts | 1 +
.../src/unraid/unraid-integration.ts | 189 ++++++++++++++++++
.../integrations/src/unraid/unraid-types.ts | 73 +++++++
.../system-resources/chart/memory-chart.tsx | 2 +-
.../src/system-resources/component.tsx | 1 +
.../widgets/src/system-resources/index.ts | 2 +-
9 files changed, 277 insertions(+), 4 deletions(-)
create mode 100644 packages/integrations/src/unraid/unraid-integration.ts
create mode 100644 packages/integrations/src/unraid/unraid-types.ts
diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts
index c16a600ed..14ab160f7 100644
--- a/packages/api/src/router/widgets/health-monitoring.ts
+++ b/packages/api/src/router/widgets/health-monitoring.ts
@@ -9,7 +9,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc";
export const healthMonitoringRouter = createTRPCRouter({
getSystemHealthStatus: publicProcedure
- .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "mock"))
+ .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock"))
.query(async ({ ctx }) => {
return await Promise.all(
ctx.integrations.map(async (integration) => {
@@ -26,7 +26,7 @@ export const healthMonitoringRouter = createTRPCRouter({
);
}),
subscribeSystemHealthStatus: publicProcedure
- .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "mock"))
+ .concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "mock"))
.subscription(({ ctx }) => {
return observable<{ integrationId: string; healthInfo: SystemHealthMonitoring; timestamp: Date }>((emit) => {
const unsubscribes: (() => void)[] = [];
diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts
index 1309796d5..e8518b016 100644
--- a/packages/definitions/src/integration.ts
+++ b/packages/definitions/src/integration.ts
@@ -298,6 +298,13 @@ export const integrationDefs = {
category: ["healthMonitoring"],
documentationUrl: createDocumentationLink("/docs/integrations/truenas"),
},
+ unraid: {
+ name: "Unraid",
+ secretKinds: [["apiKey"]],
+ iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/unraid.svg",
+ category: ["healthMonitoring"],
+ documentationUrl: createDocumentationLink("/docs/integrations/unraid"),
+ },
// This integration only returns mock data, it is used during development (but can also be used in production by directly going to the create page)
mock: {
name: "Mock",
diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts
index 0e8c9ea7c..adca7fcb1 100644
--- a/packages/integrations/src/base/creator.ts
+++ b/packages/integrations/src/base/creator.ts
@@ -38,6 +38,7 @@ import { ProxmoxIntegration } from "../proxmox/proxmox-integration";
import { QuayIntegration } from "../quay/quay-integration";
import { TrueNasIntegration } from "../truenas/truenas-integration";
import { UnifiControllerIntegration } from "../unifi-controller/unifi-controller-integration";
+import { UnraidIntegration } from "../unraid/unraid-integration";
import type { Integration, IntegrationInput } from "./integration";
export const createIntegrationAsync = async (
@@ -101,6 +102,7 @@ export const integrationCreators = {
ntfy: NTFYIntegration,
mock: MockIntegration,
truenas: TrueNasIntegration,
+ unraid: UnraidIntegration,
} satisfies Record Promise]>;
type IntegrationInstanceOfKind = {
diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts
index c23aa00b7..45a37e476 100644
--- a/packages/integrations/src/index.ts
+++ b/packages/integrations/src/index.ts
@@ -22,6 +22,7 @@ export { PiHoleIntegrationV6 } from "./pi-hole/v6/pi-hole-integration-v6";
export { PlexIntegration } from "./plex/plex-integration";
export { ProwlarrIntegration } from "./prowlarr/prowlarr-integration";
export { TrueNasIntegration } from "./truenas/truenas-integration";
+export { UnraidIntegration } from "./unraid/unraid-integration";
export { OPNsenseIntegration } from "./opnsense/opnsense-integration";
export { ICalIntegration } from "./ical/ical-integration";
diff --git a/packages/integrations/src/unraid/unraid-integration.ts b/packages/integrations/src/unraid/unraid-integration.ts
new file mode 100644
index 000000000..4ae42cf7b
--- /dev/null
+++ b/packages/integrations/src/unraid/unraid-integration.ts
@@ -0,0 +1,189 @@
+import dayjs from "dayjs";
+import type { fetch as undiciFetch } from "undici/types/fetch";
+
+import { humanFileSize } from "@homarr/common";
+import { ResponseError } from "@homarr/common/server";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+import { createLogger } from "@homarr/core/infrastructure/logs";
+
+import { HandleIntegrationErrors } from "../base/errors/decorator";
+import type { IntegrationTestingInput } from "../base/integration";
+import { Integration } from "../base/integration";
+import type { TestingResult } from "../base/test-connection/test-connection-service";
+import type { ISystemHealthMonitoringIntegration } from "../interfaces/health-monitoring/health-monitoring-integration";
+import type { SystemHealthMonitoring } from "../interfaces/health-monitoring/health-monitoring-types";
+import type { UnraidSystemInfo } from "./unraid-types";
+import { unraidSystemInfoSchema } from "./unraid-types";
+
+const logger = createLogger({ module: "UnraidIntegration" });
+
+@HandleIntegrationErrors([])
+export class UnraidIntegration extends Integration implements ISystemHealthMonitoringIntegration {
+ protected async testingAsync(input: IntegrationTestingInput): Promise {
+ await this.queryGraphQLAsync<{ info: UnraidSystemInfo }>(
+ `
+ query {
+ info {
+ os { platform }
+ }
+ }
+ `,
+ input.fetchAsync,
+ );
+
+ return { success: true };
+ }
+
+ public async getSystemInfoAsync(): Promise {
+ const systemInfo = await this.getSystemInformationAsync();
+
+ const cpuUtilization = systemInfo.metrics.cpu.cpus.reduce((acc, val) => acc + val.percentTotal, 0);
+ const cpuCount = systemInfo.info.cpu.cores;
+
+ // We use "info" object instead of the stats since this is the exact amount the kernel sees, which is what Unraid displays.
+ const totalMemory = systemInfo.info.memory.layout.reduce((acc, layout) => layout.size + acc, 0);
+ const usedMemory = totalMemory * (systemInfo.metrics.memory.percentTotal / 100);
+ const uptime = dayjs(systemInfo.info.os.uptime);
+
+ return {
+ version: systemInfo.info.os.release,
+ cpuModelName: systemInfo.info.cpu.brand,
+ cpuUtilization: cpuUtilization / cpuCount,
+ memUsedInBytes: usedMemory,
+ memAvailableInBytes: totalMemory - usedMemory,
+ uptime: dayjs().diff(uptime, "seconds"),
+ network: null, // Not implemented, see https://github.com/unraid/api/issues/1602
+ loadAverage: null,
+ rebootRequired: false,
+ availablePkgUpdates: 0,
+ cpuTemp: undefined, // Not implemented, see https://github.com/unraid/api/issues/1597
+ fileSystem: systemInfo.array.disks.map((disk) => ({
+ deviceName: disk.name,
+ used: humanFileSize(disk.fsUsed * 1024), // API is in KiB (kibibytes), covert to bytes
+ available: `${disk.size * 1024}`, // API is in KiB (kibibytes), covert to bytes
+ percentage: (disk.fsUsed / disk.size) * 100, // The units are the same, therefore the actual unit is irrelevant
+ })),
+ smart: systemInfo.array.disks.map((disk) => ({
+ deviceName: disk.name,
+ temperature: disk.temp,
+ overallStatus: disk.status,
+ })),
+ };
+ }
+
+ private async getSystemInformationAsync(): Promise {
+ logger.debug("Retrieving system information", {
+ url: this.url("/graphql"),
+ });
+
+ const query = `
+ query {
+ metrics {
+ cpu {
+ percentTotal
+ cpus {
+ percentTotal
+ }
+ },
+ memory {
+ available
+ used
+ free
+ total
+ swapFree
+ swapTotal
+ swapUsed
+ percentTotal
+ }
+ }
+ array {
+ state
+ capacity {
+ disks {
+ free
+ total
+ used
+ }
+ }
+ disks {
+ name
+ size
+ fsFree
+ fsUsed
+ status
+ temp
+ }
+ }
+ info {
+ devices {
+ network {
+ speed
+ dhcp
+ model
+ model
+ }
+ }
+ os {
+ platform,
+ distro,
+ release,
+ uptime
+ },
+ cpu {
+ manufacturer,
+ brand,
+ cores,
+ threads
+ },
+ memory {
+ layout {
+ size
+ }
+ }
+ }
+ }
+ `;
+
+ const response = await this.queryGraphQLAsync(query);
+ const result = await unraidSystemInfoSchema.parseAsync(response);
+
+ logger.debug("Retrieved system information", {
+ url: this.url("/graphql"),
+ });
+
+ return result;
+ }
+
+ private async queryGraphQLAsync(
+ query: string,
+ fetchAsync: typeof undiciFetch = fetchWithTrustedCertificatesAsync,
+ ): Promise {
+ const url = this.url("/graphql");
+ const apiKey = this.getSecretValue("apiKey");
+
+ logger.debug("Sending GraphQL query", {
+ url: url.toString(),
+ });
+
+ const response = await fetchAsync(url, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ "x-api-key": apiKey,
+ },
+ body: JSON.stringify({ query }),
+ });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ const json = (await response.json()) as { data: T; errors?: { message: string }[] };
+
+ if (json.errors) {
+ throw new Error(`GraphQL errors: ${json.errors.map((error) => error.message).join(", ")}`);
+ }
+
+ return json.data;
+ }
+}
diff --git a/packages/integrations/src/unraid/unraid-types.ts b/packages/integrations/src/unraid/unraid-types.ts
new file mode 100644
index 000000000..84f258f38
--- /dev/null
+++ b/packages/integrations/src/unraid/unraid-types.ts
@@ -0,0 +1,73 @@
+import z from "zod";
+
+export const unraidSystemInfoSchema = z.object({
+ metrics: z.object({
+ cpu: z.object({
+ percentTotal: z.number(),
+ cpus: z.array(
+ z.object({
+ percentTotal: z.number(),
+ }),
+ ),
+ }),
+ memory: z.object({
+ available: z.number(),
+ used: z.number(),
+ free: z.number(),
+ total: z.number().min(0),
+ percentTotal: z.number().min(0).max(100),
+ }),
+ }),
+ array: z.object({
+ state: z.string(),
+ capacity: z.object({
+ disks: z.object({
+ free: z.coerce.number(),
+ total: z.coerce.number(),
+ used: z.coerce.number(),
+ }),
+ }),
+ disks: z.array(
+ z.object({
+ name: z.string(),
+ size: z.number(),
+ fsFree: z.number(),
+ fsUsed: z.number(),
+ status: z.string(),
+ temp: z.number(),
+ }),
+ ),
+ }),
+ info: z.object({
+ devices: z.object({
+ network: z.array(
+ z.object({
+ speed: z.number(),
+ dhcp: z.boolean(),
+ model: z.string(),
+ }),
+ ),
+ }),
+ os: z.object({
+ platform: z.string(),
+ distro: z.string(),
+ release: z.string(),
+ uptime: z.coerce.date(),
+ }),
+ cpu: z.object({
+ manufacturer: z.string(),
+ brand: z.string(),
+ cores: z.number(),
+ threads: z.number(),
+ }),
+ memory: z.object({
+ layout: z.array(
+ z.object({
+ size: z.number(),
+ }),
+ ),
+ }),
+ }),
+});
+
+export type UnraidSystemInfo = z.infer;
diff --git a/packages/widgets/src/system-resources/chart/memory-chart.tsx b/packages/widgets/src/system-resources/chart/memory-chart.tsx
index b0c6d14c1..ac265db8a 100644
--- a/packages/widgets/src/system-resources/chart/memory-chart.tsx
+++ b/packages/widgets/src/system-resources/chart/memory-chart.tsx
@@ -47,7 +47,7 @@ export const SystemResourceMemoryChart = ({
return (
- {humanFileSize(value)} / {humanFileSize(totalCapacityInBytes)} (
+ {humanFileSize(Math.round(value))} / {humanFileSize(totalCapacityInBytes)} (
{Math.round((value / totalCapacityInBytes) * 100)}%)
diff --git a/packages/widgets/src/system-resources/component.tsx b/packages/widgets/src/system-resources/component.tsx
index 623ed8aa2..46237a27c 100644
--- a/packages/widgets/src/system-resources/component.tsx
+++ b/packages/widgets/src/system-resources/component.tsx
@@ -22,6 +22,7 @@ export default function SystemResources({ integrationIds, options }: WidgetCompo
});
const memoryCapacityInBytes =
(data[0]?.healthInfo.memAvailableInBytes ?? 0) + (data[0]?.healthInfo.memUsedInBytes ?? 0);
+
const [items, setItems] = useState<{ cpu: number; memory: number; network: { up: number; down: number } | null }[]>(
data.map((item) => ({
cpu: item.healthInfo.cpuUtilization,
diff --git a/packages/widgets/src/system-resources/index.ts b/packages/widgets/src/system-resources/index.ts
index 4e0fe27fa..d89d6952f 100644
--- a/packages/widgets/src/system-resources/index.ts
+++ b/packages/widgets/src/system-resources/index.ts
@@ -14,7 +14,7 @@ const labelDisplayModeOptions = {
export const { definition, componentLoader } = createWidgetDefinition("systemResources", {
icon: IconGraphFilled,
- supportedIntegrations: ["dashDot", "openmediavault", "truenas"],
+ supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid"],
createOptions() {
return optionsBuilder.from((factory) => ({
hasShadow: factory.switch({ defaultValue: true }),
From fad478c549cdbc616f921d9b444bff48b59e77a5 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:56:25 +0100
Subject: [PATCH 13/31] fix(deps): update dependency @xterm/xterm to v6 (#4757)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
apps/nextjs/package.json | 2 +-
pnpm-lock.yaml | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 6c6baacec..359eae811 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -65,7 +65,7 @@
"@trpc/server": "^11.8.1",
"@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "0.11.0",
- "@xterm/xterm": "^5.5.0",
+ "@xterm/xterm": "^6.0.0",
"babel-plugin-react-compiler": "^1.0.0",
"chroma-js": "^3.2.0",
"clsx": "^2.1.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 334737d82..381295a01 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -255,13 +255,13 @@ importers:
version: 11.8.1(typescript@5.9.3)
'@xterm/addon-canvas':
specifier: ^0.7.0
- version: 0.7.0(@xterm/xterm@5.5.0)
+ version: 0.7.0(@xterm/xterm@6.0.0)
'@xterm/addon-fit':
specifier: 0.11.0
version: 0.11.0
'@xterm/xterm':
- specifier: ^5.5.0
- version: 5.5.0
+ specifier: ^6.0.0
+ version: 6.0.0
babel-plugin-react-compiler:
specifier: ^1.0.0
version: 1.0.0
@@ -5349,8 +5349,8 @@ packages:
'@xterm/addon-fit@0.11.0':
resolution: {integrity: sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==}
- '@xterm/xterm@5.5.0':
- resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==}
+ '@xterm/xterm@6.0.0':
+ resolution: {integrity: sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==}
'@xtuc/ieee754@1.2.0':
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
@@ -14528,13 +14528,13 @@ snapshots:
'@xstate/fsm@1.6.5': {}
- '@xterm/addon-canvas@0.7.0(@xterm/xterm@5.5.0)':
+ '@xterm/addon-canvas@0.7.0(@xterm/xterm@6.0.0)':
dependencies:
- '@xterm/xterm': 5.5.0
+ '@xterm/xterm': 6.0.0
'@xterm/addon-fit@0.11.0': {}
- '@xterm/xterm@5.5.0': {}
+ '@xterm/xterm@6.0.0': {}
'@xtuc/ieee754@1.2.0': {}
From 9dd00370ffc4fc9a0affdab43c134c6415040cb6 Mon Sep 17 00:00:00 2001
From: "homarr-update-contributors[bot]"
<210161987+homarr-update-contributors[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:58:13 +0100
Subject: [PATCH 14/31] chore: update integrations list readme (#4784)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
---
docs/README.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/docs/README.md b/docs/README.md
index bc258e332..127ef95f8 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -314,6 +314,13 @@
Unifi
Controller
+
+
+
+
+
+ Unraid
+
|
From 15b4dfed0f34787bef2ae543a9cc6972e3fd48cb Mon Sep 17 00:00:00 2001
From: Releases Homarr
<175486441+homarr-releases[bot]@users.noreply.github.com>
Date: Fri, 2 Jan 2026 19:14:39 +0000
Subject: [PATCH 15/31] chore(release): 1.49.0 [skip ci]
---
CHANGELOG.md | 23 +++++++++++++++++++++++
package.json | 2 +-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9fe820a01..f5212155c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,26 @@
+## [1.49.0](https://github.com/homarr-labs/homarr/compare/v1.48.0...v1.49.0) (2026-01-02)
+
+### Features
+
+* unraid integration ([#4439](https://github.com/homarr-labs/homarr/issues/4439)) ([9b0dd6d](https://github.com/homarr-labs/homarr/commit/9b0dd6d6cebda4a541c8859506d89e9e9f782fa4))
+
+### Bug Fixes
+
+* add orphaned status for containers with invalid stats ([#4441](https://github.com/homarr-labs/homarr/issues/4441)) ([f04f537](https://github.com/homarr-labs/homarr/commit/f04f53759b6890d5d2dd683a9bf124d8ff12780b))
+* **deps:** update dependency @xterm/addon-fit to v0.11.0 ([#4756](https://github.com/homarr-labs/homarr/issues/4756)) ([1c727e5](https://github.com/homarr-labs/homarr/commit/1c727e59af4041e5e41da854633ccd3c030c1d18))
+* **deps:** update dependency @xterm/xterm to v6 ([#4757](https://github.com/homarr-labs/homarr/issues/4757)) ([fad478c](https://github.com/homarr-labs/homarr/commit/fad478c549cdbc616f921d9b444bff48b59e77a5))
+* **deps:** update dependency isomorphic-dompurify to ^2.35.0 ([#4779](https://github.com/homarr-labs/homarr/issues/4779)) ([236fa35](https://github.com/homarr-labs/homarr/commit/236fa35f7e0943be33bba153e7030ce4e3bb204e))
+* **deps:** update dependency jotai to ^2.16.1 ([#4772](https://github.com/homarr-labs/homarr/issues/4772)) ([d002700](https://github.com/homarr-labs/homarr/commit/d00270046a041a10c1c540cfa79c1eee477f3303))
+* **deps:** update dependency ldapts to v8.0.31 ([#4755](https://github.com/homarr-labs/homarr/issues/4755)) ([8b09693](https://github.com/homarr-labs/homarr/commit/8b096939e4e1da8e98791a8e05f108a136fe2810))
+* **deps:** update dependency ldapts to v8.0.32 ([#4762](https://github.com/homarr-labs/homarr/issues/4762)) ([49afb82](https://github.com/homarr-labs/homarr/commit/49afb8244615f67af0586aaacf77a509231ac6dc))
+* **deps:** update dependency ldapts to v8.0.34 ([#4765](https://github.com/homarr-labs/homarr/issues/4765)) ([809bf55](https://github.com/homarr-labs/homarr/commit/809bf559fe1b96df9a903dc790d138cad7368adb))
+* **deps:** update dependency ldapts to v8.0.35 ([#4768](https://github.com/homarr-labs/homarr/issues/4768)) ([e574dd7](https://github.com/homarr-labs/homarr/commit/e574dd70f1421e9254a289a0f02fd0b4d43e26ad))
+* **deps:** update dependency typescript-eslint to ^8.50.1 ([#4758](https://github.com/homarr-labs/homarr/issues/4758)) ([adaa803](https://github.com/homarr-labs/homarr/commit/adaa8039dd545109246ccd9fa15570739f755f62))
+* **deps:** update nextjs monorepo to v16.1.1 ([#4759](https://github.com/homarr-labs/homarr/issues/4759)) ([7712ab4](https://github.com/homarr-labs/homarr/commit/7712ab410b5094e5d84df75461e07efdfccc285b))
+* **deps:** update tanstack-query monorepo ([#4782](https://github.com/homarr-labs/homarr/issues/4782)) ([1e5d38f](https://github.com/homarr-labs/homarr/commit/1e5d38fd3ca4c68fa4c61b02757a3cff39839fdb))
+* **deps:** update testcontainers-node monorepo to ^11.11.0 ([#4781](https://github.com/homarr-labs/homarr/issues/4781)) ([e40a116](https://github.com/homarr-labs/homarr/commit/e40a11608cb21a75e6910028abf97e14b5275f56))
+* **deps:** update turbo monorepo to ^2.7.2 ([#4764](https://github.com/homarr-labs/homarr/issues/4764)) ([9191430](https://github.com/homarr-labs/homarr/commit/919143022969350f6ee7be2f53be2fe09a89bba3))
+
## [1.48.0](https://github.com/homarr-labs/homarr/compare/v1.47.0...v1.48.0) (2025-12-26)
### Features
diff --git a/package.json b/package.json
index 2d33d70e7..793b10a54 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "homarr",
- "version": "1.48.0",
+ "version": "1.49.0",
"private": true,
"scripts": {
"build": "cross-env CI=true turbo build",
From 4904f5c270a9dd8775879dcc0c098e06bdfc3041 Mon Sep 17 00:00:00 2001
From: Meier Lukas
Date: Fri, 2 Jan 2026 22:45:23 +0100
Subject: [PATCH 16/31] chore: update bug_report template versions
---
.github/ISSUE_TEMPLATE/bug_report.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 6f6e55b05..326582ddc 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -33,6 +33,9 @@ body:
options:
# The below comment is used to insert a new version with on-release.yml
#NEXT_VERSION#
+ - 1.49.0
+ - 1.48.0
+ - 1.47.0
- 1.46.0
- 1.45.3
- 1.45.2
From b4ac3fc3460ebbea176be48469289166406f5a2c Mon Sep 17 00:00:00 2001
From: Meier Lukas
Date: Fri, 2 Jan 2026 22:46:00 +0100
Subject: [PATCH 17/31] chore: update docs sitemap
---
packages/definitions/src/docs/homarr-docs-sitemap.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts
index c1b1e3dc1..4439c5dfe 100644
--- a/packages/definitions/src/docs/homarr-docs-sitemap.ts
+++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts
@@ -188,6 +188,7 @@ export type HomarrDocumentationPath =
| "/docs/integrations/transmission"
| "/docs/integrations/truenas"
| "/docs/integrations/unifi-controller"
+ | "/docs/integrations/unraid"
| "/docs/management/api"
| "/docs/management/apps"
| "/docs/management/boards"
From 1b70973084c9e9ebed34e8d7d9690a9e5530f60f Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 01:50:19 +0000
Subject: [PATCH 18/31] fix(deps): update dependency react-error-boundary to
^6.0.1 (#4791)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
apps/nextjs/package.json | 2 +-
pnpm-lock.yaml | 283 ++-------------------------------------
2 files changed, 9 insertions(+), 276 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 359eae811..6d5538697 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -81,7 +81,7 @@
"prismjs": "^1.30.0",
"react": "19.2.3",
"react-dom": "19.2.3",
- "react-error-boundary": "^6.0.0",
+ "react-error-boundary": "^6.0.1",
"react-simple-code-editor": "^0.14.1",
"sass": "^1.97.1",
"superjson": "2.2.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 381295a01..311d994ca 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -308,8 +308,8 @@ importers:
specifier: 19.2.3
version: 19.2.3(react@19.2.3)
react-error-boundary:
- specifier: ^6.0.0
- version: 6.0.0(react@19.2.3)
+ specifier: ^6.0.1
+ version: 6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-simple-code-editor:
specifier: ^0.14.1
version: 0.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -2817,12 +2817,6 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.27.1':
- resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
'@esbuild/aix-ppc64@0.27.2':
resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==}
engines: {node: '>=18'}
@@ -2835,12 +2829,6 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.27.1':
- resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
'@esbuild/android-arm64@0.27.2':
resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==}
engines: {node: '>=18'}
@@ -2853,12 +2841,6 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.27.1':
- resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
'@esbuild/android-arm@0.27.2':
resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==}
engines: {node: '>=18'}
@@ -2871,12 +2853,6 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.27.1':
- resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
'@esbuild/android-x64@0.27.2':
resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==}
engines: {node: '>=18'}
@@ -2889,12 +2865,6 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.27.1':
- resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
'@esbuild/darwin-arm64@0.27.2':
resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==}
engines: {node: '>=18'}
@@ -2907,12 +2877,6 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.27.1':
- resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
'@esbuild/darwin-x64@0.27.2':
resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==}
engines: {node: '>=18'}
@@ -2925,12 +2889,6 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.27.1':
- resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
'@esbuild/freebsd-arm64@0.27.2':
resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==}
engines: {node: '>=18'}
@@ -2943,12 +2901,6 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.27.1':
- resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
'@esbuild/freebsd-x64@0.27.2':
resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==}
engines: {node: '>=18'}
@@ -2961,12 +2913,6 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.27.1':
- resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
'@esbuild/linux-arm64@0.27.2':
resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==}
engines: {node: '>=18'}
@@ -2979,12 +2925,6 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.27.1':
- resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
'@esbuild/linux-arm@0.27.2':
resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==}
engines: {node: '>=18'}
@@ -2997,12 +2937,6 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.27.1':
- resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
'@esbuild/linux-ia32@0.27.2':
resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==}
engines: {node: '>=18'}
@@ -3015,12 +2949,6 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.27.1':
- resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
'@esbuild/linux-loong64@0.27.2':
resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==}
engines: {node: '>=18'}
@@ -3033,12 +2961,6 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.27.1':
- resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
'@esbuild/linux-mips64el@0.27.2':
resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==}
engines: {node: '>=18'}
@@ -3051,12 +2973,6 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.27.1':
- resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
'@esbuild/linux-ppc64@0.27.2':
resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==}
engines: {node: '>=18'}
@@ -3069,12 +2985,6 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.27.1':
- resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
'@esbuild/linux-riscv64@0.27.2':
resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==}
engines: {node: '>=18'}
@@ -3087,12 +2997,6 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.27.1':
- resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
'@esbuild/linux-s390x@0.27.2':
resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==}
engines: {node: '>=18'}
@@ -3105,12 +3009,6 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.27.1':
- resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
'@esbuild/linux-x64@0.27.2':
resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==}
engines: {node: '>=18'}
@@ -3123,12 +3021,6 @@ packages:
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-arm64@0.27.1':
- resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
'@esbuild/netbsd-arm64@0.27.2':
resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==}
engines: {node: '>=18'}
@@ -3141,12 +3033,6 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.27.1':
- resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
'@esbuild/netbsd-x64@0.27.2':
resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==}
engines: {node: '>=18'}
@@ -3159,12 +3045,6 @@ packages:
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-arm64@0.27.1':
- resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
'@esbuild/openbsd-arm64@0.27.2':
resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==}
engines: {node: '>=18'}
@@ -3177,12 +3057,6 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.27.1':
- resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
'@esbuild/openbsd-x64@0.27.2':
resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==}
engines: {node: '>=18'}
@@ -3195,12 +3069,6 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@esbuild/openharmony-arm64@0.27.1':
- resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openharmony]
-
'@esbuild/openharmony-arm64@0.27.2':
resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==}
engines: {node: '>=18'}
@@ -3213,12 +3081,6 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.27.1':
- resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
'@esbuild/sunos-x64@0.27.2':
resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==}
engines: {node: '>=18'}
@@ -3231,12 +3093,6 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.27.1':
- resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
'@esbuild/win32-arm64@0.27.2':
resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==}
engines: {node: '>=18'}
@@ -3249,12 +3105,6 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.27.1':
- resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
'@esbuild/win32-ia32@0.27.2':
resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==}
engines: {node: '>=18'}
@@ -3267,12 +3117,6 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.27.1':
- resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
'@esbuild/win32-x64@0.27.2':
resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==}
engines: {node: '>=18'}
@@ -6724,11 +6568,6 @@ packages:
engines: {node: '>=18'}
hasBin: true
- esbuild@0.27.1:
- resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==}
- engines: {node: '>=18'}
- hasBin: true
-
esbuild@0.27.2:
resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
engines: {node: '>=18'}
@@ -9402,10 +9241,11 @@ packages:
peerDependencies:
react: '>= 16.8 || 18.0.0'
- react-error-boundary@6.0.0:
- resolution: {integrity: sha512-gdlJjD7NWr0IfkPlaREN2d9uUZUlksrfOx7SX62VRerwXbMY6ftGCIZua1VG1aXFNOimhISsTq+Owp725b9SiA==}
+ react-error-boundary@6.0.1:
+ resolution: {integrity: sha512-zArgQpjJUN1ZLMEKWtifxQweW3yfvwL5j2nh3Pesze1qG6r5oCDMy/TA97bUF01wy4xCeeL4/pd8GHmvEsP3Bg==}
peerDependencies:
- react: '>=16.13.1'
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
react-immutable-proptypes@2.2.0:
resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==}
@@ -11838,234 +11678,156 @@ snapshots:
'@esbuild/aix-ppc64@0.25.12':
optional: true
- '@esbuild/aix-ppc64@0.27.1':
- optional: true
-
'@esbuild/aix-ppc64@0.27.2':
optional: true
'@esbuild/android-arm64@0.25.12':
optional: true
- '@esbuild/android-arm64@0.27.1':
- optional: true
-
'@esbuild/android-arm64@0.27.2':
optional: true
'@esbuild/android-arm@0.25.12':
optional: true
- '@esbuild/android-arm@0.27.1':
- optional: true
-
'@esbuild/android-arm@0.27.2':
optional: true
'@esbuild/android-x64@0.25.12':
optional: true
- '@esbuild/android-x64@0.27.1':
- optional: true
-
'@esbuild/android-x64@0.27.2':
optional: true
'@esbuild/darwin-arm64@0.25.12':
optional: true
- '@esbuild/darwin-arm64@0.27.1':
- optional: true
-
'@esbuild/darwin-arm64@0.27.2':
optional: true
'@esbuild/darwin-x64@0.25.12':
optional: true
- '@esbuild/darwin-x64@0.27.1':
- optional: true
-
'@esbuild/darwin-x64@0.27.2':
optional: true
'@esbuild/freebsd-arm64@0.25.12':
optional: true
- '@esbuild/freebsd-arm64@0.27.1':
- optional: true
-
'@esbuild/freebsd-arm64@0.27.2':
optional: true
'@esbuild/freebsd-x64@0.25.12':
optional: true
- '@esbuild/freebsd-x64@0.27.1':
- optional: true
-
'@esbuild/freebsd-x64@0.27.2':
optional: true
'@esbuild/linux-arm64@0.25.12':
optional: true
- '@esbuild/linux-arm64@0.27.1':
- optional: true
-
'@esbuild/linux-arm64@0.27.2':
optional: true
'@esbuild/linux-arm@0.25.12':
optional: true
- '@esbuild/linux-arm@0.27.1':
- optional: true
-
'@esbuild/linux-arm@0.27.2':
optional: true
'@esbuild/linux-ia32@0.25.12':
optional: true
- '@esbuild/linux-ia32@0.27.1':
- optional: true
-
'@esbuild/linux-ia32@0.27.2':
optional: true
'@esbuild/linux-loong64@0.25.12':
optional: true
- '@esbuild/linux-loong64@0.27.1':
- optional: true
-
'@esbuild/linux-loong64@0.27.2':
optional: true
'@esbuild/linux-mips64el@0.25.12':
optional: true
- '@esbuild/linux-mips64el@0.27.1':
- optional: true
-
'@esbuild/linux-mips64el@0.27.2':
optional: true
'@esbuild/linux-ppc64@0.25.12':
optional: true
- '@esbuild/linux-ppc64@0.27.1':
- optional: true
-
'@esbuild/linux-ppc64@0.27.2':
optional: true
'@esbuild/linux-riscv64@0.25.12':
optional: true
- '@esbuild/linux-riscv64@0.27.1':
- optional: true
-
'@esbuild/linux-riscv64@0.27.2':
optional: true
'@esbuild/linux-s390x@0.25.12':
optional: true
- '@esbuild/linux-s390x@0.27.1':
- optional: true
-
'@esbuild/linux-s390x@0.27.2':
optional: true
'@esbuild/linux-x64@0.25.12':
optional: true
- '@esbuild/linux-x64@0.27.1':
- optional: true
-
'@esbuild/linux-x64@0.27.2':
optional: true
'@esbuild/netbsd-arm64@0.25.12':
optional: true
- '@esbuild/netbsd-arm64@0.27.1':
- optional: true
-
'@esbuild/netbsd-arm64@0.27.2':
optional: true
'@esbuild/netbsd-x64@0.25.12':
optional: true
- '@esbuild/netbsd-x64@0.27.1':
- optional: true
-
'@esbuild/netbsd-x64@0.27.2':
optional: true
'@esbuild/openbsd-arm64@0.25.12':
optional: true
- '@esbuild/openbsd-arm64@0.27.1':
- optional: true
-
'@esbuild/openbsd-arm64@0.27.2':
optional: true
'@esbuild/openbsd-x64@0.25.12':
optional: true
- '@esbuild/openbsd-x64@0.27.1':
- optional: true
-
'@esbuild/openbsd-x64@0.27.2':
optional: true
'@esbuild/openharmony-arm64@0.25.12':
optional: true
- '@esbuild/openharmony-arm64@0.27.1':
- optional: true
-
'@esbuild/openharmony-arm64@0.27.2':
optional: true
'@esbuild/sunos-x64@0.25.12':
optional: true
- '@esbuild/sunos-x64@0.27.1':
- optional: true
-
'@esbuild/sunos-x64@0.27.2':
optional: true
'@esbuild/win32-arm64@0.25.12':
optional: true
- '@esbuild/win32-arm64@0.27.1':
- optional: true
-
'@esbuild/win32-arm64@0.27.2':
optional: true
'@esbuild/win32-ia32@0.25.12':
optional: true
- '@esbuild/win32-ia32@0.27.1':
- optional: true
-
'@esbuild/win32-ia32@0.27.2':
optional: true
'@esbuild/win32-x64@0.25.12':
optional: true
- '@esbuild/win32-x64@0.27.1':
- optional: true
-
'@esbuild/win32-x64@0.27.2':
optional: true
@@ -16073,35 +15835,6 @@ snapshots:
'@esbuild/win32-ia32': 0.25.12
'@esbuild/win32-x64': 0.25.12
- esbuild@0.27.1:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.27.1
- '@esbuild/android-arm': 0.27.1
- '@esbuild/android-arm64': 0.27.1
- '@esbuild/android-x64': 0.27.1
- '@esbuild/darwin-arm64': 0.27.1
- '@esbuild/darwin-x64': 0.27.1
- '@esbuild/freebsd-arm64': 0.27.1
- '@esbuild/freebsd-x64': 0.27.1
- '@esbuild/linux-arm': 0.27.1
- '@esbuild/linux-arm64': 0.27.1
- '@esbuild/linux-ia32': 0.27.1
- '@esbuild/linux-loong64': 0.27.1
- '@esbuild/linux-mips64el': 0.27.1
- '@esbuild/linux-ppc64': 0.27.1
- '@esbuild/linux-riscv64': 0.27.1
- '@esbuild/linux-s390x': 0.27.1
- '@esbuild/linux-x64': 0.27.1
- '@esbuild/netbsd-arm64': 0.27.1
- '@esbuild/netbsd-x64': 0.27.1
- '@esbuild/openbsd-arm64': 0.27.1
- '@esbuild/openbsd-x64': 0.27.1
- '@esbuild/openharmony-arm64': 0.27.1
- '@esbuild/sunos-x64': 0.27.1
- '@esbuild/win32-arm64': 0.27.1
- '@esbuild/win32-ia32': 0.27.1
- '@esbuild/win32-x64': 0.27.1
-
esbuild@0.27.2:
optionalDependencies:
'@esbuild/aix-ppc64': 0.27.2
@@ -19122,10 +18855,10 @@ snapshots:
prop-types: 15.8.1
react: 19.2.3
- react-error-boundary@6.0.0(react@19.2.3):
+ react-error-boundary@6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- '@babel/runtime': 7.28.4
react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
react-immutable-proptypes@2.2.0(immutable@3.8.2):
dependencies:
From 1842e5fff5c072c8da45a01be860e63d12d5062a Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 03:30:32 +0000
Subject: [PATCH 19/31] fix(deps): update dependency ldapts to v8.0.36 (#4790)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
packages/auth/package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/packages/auth/package.json b/packages/auth/package.json
index 2a55e62ee..cc93d1477 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -32,7 +32,7 @@
"@homarr/validation": "workspace:^0.1.0",
"bcrypt": "^6.0.0",
"cookies": "^0.9.1",
- "ldapts": "8.0.35",
+ "ldapts": "8.0.36",
"next": "16.1.1",
"next-auth": "5.0.0-beta.30",
"react": "19.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 311d994ca..e6b18a959 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -715,8 +715,8 @@ importers:
specifier: ^0.9.1
version: 0.9.1
ldapts:
- specifier: 8.0.35
- version: 8.0.35
+ specifier: 8.0.36
+ version: 8.0.36
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -7893,8 +7893,8 @@ packages:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
- ldapts@8.0.35:
- resolution: {integrity: sha512-trh0IoMW7FR+7fqTJWbmiFrcOowHmkXwK9J3Rhwo4vSjOWc4bTcwJVTXjPnilkJc/WrM2rNac4jy11XxO7eBHw==}
+ ldapts@8.0.36:
+ resolution: {integrity: sha512-PGWfAjAukRQV0Kcv3yiw0MMIIchD0wHbI4c4oCXVDBES1rEU01tnaH8YWfoRfGYBEla+xjrlz7xd/pes2aiiHQ==}
engines: {node: '>=20'}
levn@0.4.1:
@@ -17343,7 +17343,7 @@ snapshots:
dependencies:
readable-stream: 2.3.8
- ldapts@8.0.35:
+ ldapts@8.0.36:
dependencies:
'@types/asn1': 0.2.4
asn1: 0.2.6
From 7d3322576c3ed1b9917873bf707d77d2a4eef1a8 Mon Sep 17 00:00:00 2001
From: Meier Lukas
Date: Sat, 3 Jan 2026 13:44:01 +0100
Subject: [PATCH 20/31] fix(db): connection issue do to missing host and name
of db when connecting with host (#4786)
---
packages/core/src/infrastructure/db/drivers/mysql.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/packages/core/src/infrastructure/db/drivers/mysql.ts b/packages/core/src/infrastructure/db/drivers/mysql.ts
index d34c4f51b..306180f20 100644
--- a/packages/core/src/infrastructure/db/drivers/mysql.ts
+++ b/packages/core/src/infrastructure/db/drivers/mysql.ts
@@ -26,7 +26,9 @@ const createMysqlDbConnection = () => {
return mysql.createPool({
...defaultOptions,
+ host: dbEnv.HOST,
port: dbEnv.PORT,
+ database: dbEnv.NAME,
user: dbEnv.USER,
password: dbEnv.PASSWORD,
});
From 60f9d4e6e69df2190171e5d8e263b2030447ab2e Mon Sep 17 00:00:00 2001
From: Meier Lukas
Date: Sat, 3 Jan 2026 13:44:24 +0100
Subject: [PATCH 21/31] fix(unraid): temperature of disks can be null (#4788)
---
packages/integrations/src/unraid/unraid-integration.ts | 2 +-
packages/integrations/src/unraid/unraid-types.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/integrations/src/unraid/unraid-integration.ts b/packages/integrations/src/unraid/unraid-integration.ts
index 4ae42cf7b..db4025ee2 100644
--- a/packages/integrations/src/unraid/unraid-integration.ts
+++ b/packages/integrations/src/unraid/unraid-integration.ts
@@ -65,7 +65,7 @@ export class UnraidIntegration extends Integration implements ISystemHealthMonit
})),
smart: systemInfo.array.disks.map((disk) => ({
deviceName: disk.name,
- temperature: disk.temp,
+ temperature: disk.temp ?? null,
overallStatus: disk.status,
})),
};
diff --git a/packages/integrations/src/unraid/unraid-types.ts b/packages/integrations/src/unraid/unraid-types.ts
index 84f258f38..326d2ee6a 100644
--- a/packages/integrations/src/unraid/unraid-types.ts
+++ b/packages/integrations/src/unraid/unraid-types.ts
@@ -34,7 +34,7 @@ export const unraidSystemInfoSchema = z.object({
fsFree: z.number(),
fsUsed: z.number(),
status: z.string(),
- temp: z.number(),
+ temp: z.number().nullish(),
}),
),
}),
From 0270dae3d670e938c10197e4d161d8af67775e49 Mon Sep 17 00:00:00 2001
From: Releases Homarr
<175486441+homarr-releases[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 13:06:04 +0000
Subject: [PATCH 22/31] chore(release): 1.49.1 [skip ci]
---
CHANGELOG.md | 9 +++++++++
package.json | 2 +-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f5212155c..672962501 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## [1.49.1](https://github.com/homarr-labs/homarr/compare/v1.49.0...v1.49.1) (2026-01-03)
+
+### Bug Fixes
+
+* **db:** connection issue do to missing host and name of db when connecting with host ([#4786](https://github.com/homarr-labs/homarr/issues/4786)) ([7d33225](https://github.com/homarr-labs/homarr/commit/7d3322576c3ed1b9917873bf707d77d2a4eef1a8))
+* **deps:** update dependency ldapts to v8.0.36 ([#4790](https://github.com/homarr-labs/homarr/issues/4790)) ([1842e5f](https://github.com/homarr-labs/homarr/commit/1842e5fff5c072c8da45a01be860e63d12d5062a))
+* **deps:** update dependency react-error-boundary to ^6.0.1 ([#4791](https://github.com/homarr-labs/homarr/issues/4791)) ([1b70973](https://github.com/homarr-labs/homarr/commit/1b70973084c9e9ebed34e8d7d9690a9e5530f60f))
+* **unraid:** temperature of disks can be null ([#4788](https://github.com/homarr-labs/homarr/issues/4788)) ([60f9d4e](https://github.com/homarr-labs/homarr/commit/60f9d4e6e69df2190171e5d8e263b2030447ab2e))
+
## [1.49.0](https://github.com/homarr-labs/homarr/compare/v1.48.0...v1.49.0) (2026-01-02)
### Features
diff --git a/package.json b/package.json
index 793b10a54..921928ba5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "homarr",
- "version": "1.49.0",
+ "version": "1.49.1",
"private": true,
"scripts": {
"build": "cross-env CI=true turbo build",
From c13e3a1d0a1265398c758380f6323d2f47aea1c1 Mon Sep 17 00:00:00 2001
From: Meier Lukas
Date: Sat, 3 Jan 2026 21:22:57 +0100
Subject: [PATCH 23/31] chore: adjust codeowners for renovate managed files to
no owner instead of homarr-labs/none (#4792)
---
CODEOWNERS | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/CODEOWNERS b/CODEOWNERS
index 59516a4fa..ed482fd41 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -2,8 +2,8 @@
* @homarr-labs/maintainers
# Exempt Renovate‑managed files (no owners)
-package.json @homarr-labs/none
-package-lock.json @homarr-labs/none
-pnpm-lock.yaml @homarr-labs/none
-Dockerfile @homarr-labs/none
-docker-compose.yml @homarr-labs/none
+package.json
+package-lock.json
+pnpm-lock.yaml
+Dockerfile
+docker-compose.yml
From 35e0198b5df2a315ea2efb584752c5af062f960d Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 21:49:56 +0100
Subject: [PATCH 24/31] fix(deps): update dependency @tabler/icons-react to
^3.36.0 (#4707)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas
---
apps/nextjs/package.json | 2 +-
apps/nextjs/src/components/access/context.tsx | 3 +-
apps/nextjs/src/components/no-results.tsx | 3 +-
packages/modals-collection/package.json | 2 +-
packages/notifications/package.json | 2 +-
packages/spotlight/package.json | 2 +-
.../src/modes/command/global-group.tsx | 2 +-
.../modes/home/home-search-engine-group.tsx | 2 +-
packages/ui/index.ts | 1 +
packages/ui/package.json | 2 +-
packages/widgets/package.json | 2 +-
packages/widgets/src/errors/base.ts | 3 +-
.../src/media-transcoding/component.tsx | 2 +-
pnpm-lock.yaml | 50 +++++++++----------
14 files changed, 40 insertions(+), 38 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 6d5538697..95a9e2a23 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -55,7 +55,7 @@
"@mantine/modals": "^8.3.10",
"@mantine/tiptap": "^8.3.10",
"@million/lint": "1.0.14",
- "@tabler/icons-react": "^3.35.0",
+ "@tabler/icons-react": "^3.36.0",
"@tanstack/react-query": "^5.90.14",
"@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-query-next-experimental": "^5.91.0",
diff --git a/apps/nextjs/src/components/access/context.tsx b/apps/nextjs/src/components/access/context.tsx
index 259c59a42..cd5aa4ab0 100644
--- a/apps/nextjs/src/components/access/context.tsx
+++ b/apps/nextjs/src/components/access/context.tsx
@@ -1,5 +1,6 @@
import { createContext, useContext } from "react";
-import type { TablerIcon } from "@tabler/icons-react";
+
+import type { TablerIcon } from "@homarr/ui";
const AccessContext = createContext<{
permissions: readonly string[];
diff --git a/apps/nextjs/src/components/no-results.tsx b/apps/nextjs/src/components/no-results.tsx
index c25724297..db492c2e1 100644
--- a/apps/nextjs/src/components/no-results.tsx
+++ b/apps/nextjs/src/components/no-results.tsx
@@ -1,5 +1,6 @@
import { Anchor, Card, Stack, Text } from "@mantine/core";
-import type { TablerIcon } from "@tabler/icons-react";
+
+import type { TablerIcon } from "@homarr/ui";
interface NoResultsProps {
icon: TablerIcon;
diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json
index 560047d94..b740f42cf 100644
--- a/packages/modals-collection/package.json
+++ b/packages/modals-collection/package.json
@@ -34,7 +34,7 @@
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.3.10",
- "@tabler/icons-react": "^3.35.0",
+ "@tabler/icons-react": "^3.36.0",
"dayjs": "^1.11.19",
"next": "16.1.1",
"react": "19.2.3",
diff --git a/packages/notifications/package.json b/packages/notifications/package.json
index 368645e8b..2deecd3c4 100644
--- a/packages/notifications/package.json
+++ b/packages/notifications/package.json
@@ -25,7 +25,7 @@
"dependencies": {
"@homarr/ui": "workspace:^0.1.0",
"@mantine/notifications": "^8.3.10",
- "@tabler/icons-react": "^3.35.0"
+ "@tabler/icons-react": "^3.36.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json
index 64abe447f..6227293c0 100644
--- a/packages/spotlight/package.json
+++ b/packages/spotlight/package.json
@@ -36,7 +36,7 @@
"@mantine/core": "^8.3.10",
"@mantine/hooks": "^8.3.10",
"@mantine/spotlight": "^8.3.10",
- "@tabler/icons-react": "^3.35.0",
+ "@tabler/icons-react": "^3.36.0",
"jotai": "^2.16.1",
"next": "16.1.1",
"react": "19.2.3",
diff --git a/packages/spotlight/src/modes/command/global-group.tsx b/packages/spotlight/src/modes/command/global-group.tsx
index 4b13c6b0f..7aaaa6a2e 100644
--- a/packages/spotlight/src/modes/command/global-group.tsx
+++ b/packages/spotlight/src/modes/command/global-group.tsx
@@ -1,5 +1,4 @@
import { Group, Text, useMantineColorScheme } from "@mantine/core";
-import type { TablerIcon } from "@tabler/icons-react";
import {
IconBox,
IconCategoryPlus,
@@ -17,6 +16,7 @@ import { useSession } from "@homarr/auth/client";
import { useModalAction } from "@homarr/modals";
import { AddBoardModal, AddGroupModal, ImportBoardModal, InviteCreateModal } from "@homarr/modals-collection";
import { useScopedI18n } from "@homarr/translation/client";
+import type { TablerIcon } from "@homarr/ui";
import { createGroup } from "../../lib/group";
import type { inferSearchInteractionDefinition, SearchInteraction } from "../../lib/interaction";
diff --git a/packages/spotlight/src/modes/home/home-search-engine-group.tsx b/packages/spotlight/src/modes/home/home-search-engine-group.tsx
index 75c4ac94b..09fa49fbf 100644
--- a/packages/spotlight/src/modes/home/home-search-engine-group.tsx
+++ b/packages/spotlight/src/modes/home/home-search-engine-group.tsx
@@ -1,5 +1,4 @@
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";
@@ -9,6 +8,7 @@ import { useSession } from "@homarr/auth/client";
import { useSettings } from "@homarr/settings";
import type { TranslationFunction } from "@homarr/translation";
import { useI18n } from "@homarr/translation/client";
+import type { TablerIcon } from "@homarr/ui";
import { createGroup } from "../../lib/group";
import type { inferSearchInteractionDefinition, SearchInteraction } from "../../lib/interaction";
diff --git a/packages/ui/index.ts b/packages/ui/index.ts
index 42b81d757..0933ebe7d 100644
--- a/packages/ui/index.ts
+++ b/packages/ui/index.ts
@@ -3,4 +3,5 @@ import type { Icon123, IconProps } from "@tabler/icons-react";
export * from "./src";
export type TablerIcon = typeof Icon123;
+
export type TablerIconProps = IconProps;
diff --git a/packages/ui/package.json b/packages/ui/package.json
index e921db31b..0aad28842 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -32,7 +32,7 @@
"@mantine/core": "^8.3.10",
"@mantine/dates": "^8.3.10",
"@mantine/hooks": "^8.3.10",
- "@tabler/icons-react": "^3.35.0",
+ "@tabler/icons-react": "^3.36.0",
"mantine-react-table": "2.0.0-beta.9",
"next": "16.1.1",
"react": "19.2.3",
diff --git a/packages/widgets/package.json b/packages/widgets/package.json
index 85556e121..e2cb773ca 100644
--- a/packages/widgets/package.json
+++ b/packages/widgets/package.json
@@ -51,7 +51,7 @@
"@mantine/charts": "^8.3.10",
"@mantine/core": "^8.3.10",
"@mantine/hooks": "^8.3.10",
- "@tabler/icons-react": "^3.35.0",
+ "@tabler/icons-react": "^3.36.0",
"@tiptap/extension-color": "3.14.0",
"@tiptap/extension-highlight": "3.14.0",
"@tiptap/extension-image": "3.14.0",
diff --git a/packages/widgets/src/errors/base.ts b/packages/widgets/src/errors/base.ts
index 0f16a82eb..35f158bec 100644
--- a/packages/widgets/src/errors/base.ts
+++ b/packages/widgets/src/errors/base.ts
@@ -1,6 +1,5 @@
-import type { TablerIcon } from "@tabler/icons-react";
-
import type { stringOrTranslation } from "@homarr/translation";
+import type { TablerIcon } from "@homarr/ui";
export abstract class ErrorBoundaryError extends Error {
public abstract getErrorBoundaryData(): {
diff --git a/packages/widgets/src/media-transcoding/component.tsx b/packages/widgets/src/media-transcoding/component.tsx
index 33a838f30..c577c9401 100644
--- a/packages/widgets/src/media-transcoding/component.tsx
+++ b/packages/widgets/src/media-transcoding/component.tsx
@@ -2,11 +2,11 @@
import { useState } from "react";
import { Center, Divider, Group, Pagination, SegmentedControl, Stack, Text } from "@mantine/core";
-import type { TablerIcon } from "@tabler/icons-react";
import { IconClipboardList, IconCpu2, IconReportAnalytics } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
import { useI18n } from "@homarr/translation/client";
+import type { TablerIcon } from "@homarr/ui";
import { views } from ".";
import type { WidgetComponentProps } from "../definition";
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e6b18a959..db6aa9e02 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -230,8 +230,8 @@ importers:
specifier: 1.0.14
version: 1.0.14(webpack-sources@3.3.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
'@tanstack/react-query':
specifier: ^5.90.14
version: 5.90.16(react@19.2.3)
@@ -291,7 +291,7 @@ importers:
version: 2.16.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.3)
mantine-react-table:
specifier: 2.0.0-beta.9
- version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.26.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -1582,8 +1582,8 @@ importers:
specifier: ^8.3.10
version: 8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
dayjs:
specifier: ^1.11.19
version: 1.11.19
@@ -1625,8 +1625,8 @@ importers:
specifier: ^8.3.10
version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
@@ -1978,8 +1978,8 @@ importers:
specifier: ^8.3.10
version: 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
jotai:
specifier: ^2.16.1
version: 2.16.1(@babel/core@7.28.5)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.3)
@@ -2028,7 +2028,7 @@ importers:
version: 4.3.1
mantine-react-table:
specifier: 2.0.0-beta.9
- version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -2082,11 +2082,11 @@ importers:
specifier: ^8.3.10
version: 8.3.10(react@19.2.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
mantine-react-table:
specifier: 2.0.0-beta.9
- version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -2231,8 +2231,8 @@ importers:
specifier: ^8.3.10
version: 8.3.10(react@19.2.3)
'@tabler/icons-react':
- specifier: ^3.35.0
- version: 3.35.0(react@19.2.3)
+ specifier: ^3.36.0
+ version: 3.36.0(react@19.2.3)
'@tiptap/extension-color':
specifier: 3.14.0
version: 3.14.0(@tiptap/extension-text-style@3.14.0(@tiptap/core@3.14.0(@tiptap/pm@3.14.0)))
@@ -2292,7 +2292,7 @@ importers:
version: 1.3.0(@mantine/form@8.3.10(react@19.2.3))(zod@4.2.1)
mantine-react-table:
specifier: 2.0.0-beta.9
- version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -4400,13 +4400,13 @@ packages:
zod:
optional: true
- '@tabler/icons-react@3.35.0':
- resolution: {integrity: sha512-XG7t2DYf3DyHT5jxFNp5xyLVbL4hMJYJhiSdHADzAjLRYfL7AnjlRfiHDHeXxkb2N103rEIvTsBRazxXtAUz2g==}
+ '@tabler/icons-react@3.36.0':
+ resolution: {integrity: sha512-sSZ00bEjTdTTskVFykq294RJq+9cFatwy4uYa78HcYBCXU1kSD1DIp5yoFsQXmybkIOKCjp18OnhAYk553UIfQ==}
peerDependencies:
react: '>= 16'
- '@tabler/icons@3.35.0':
- resolution: {integrity: sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==}
+ '@tabler/icons@3.36.0':
+ resolution: {integrity: sha512-z9OfTEG6QbaQWM9KBOxxUdpgvMUn0atageXyiaSc2gmYm51ORO8Ua7eUcjlks+Dc0YMK4rrodAFdK9SfjJ4ZcA==}
'@tanstack/match-sorter-utils@8.19.4':
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
@@ -13339,12 +13339,12 @@ snapshots:
typescript: 5.9.3
zod: 4.2.1
- '@tabler/icons-react@3.35.0(react@19.2.3)':
+ '@tabler/icons-react@3.36.0(react@19.2.3)':
dependencies:
- '@tabler/icons': 3.35.0
+ '@tabler/icons': 3.36.0
react: 19.2.3
- '@tabler/icons@3.35.0': {}
+ '@tabler/icons@3.36.0': {}
'@tanstack/match-sorter-utils@8.19.4':
dependencies:
@@ -17506,12 +17506,12 @@ snapshots:
'@mantine/form': 8.3.10(react@19.2.3)
zod: 4.2.1
- mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.35.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(@tabler/icons-react@3.36.0(react@19.2.3))(clsx@2.1.1)(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@mantine/core': 8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@mantine/dates': 8.3.10(@mantine/core@8.3.10(@mantine/hooks@8.3.10(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.10(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@mantine/hooks': 8.3.10(react@19.2.3)
- '@tabler/icons-react': 3.35.0(react@19.2.3)
+ '@tabler/icons-react': 3.36.0(react@19.2.3)
'@tanstack/match-sorter-utils': 8.19.4
'@tanstack/react-table': 8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-virtual': 3.11.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
From f0a2551fdf5b5e02ece789d473411ad3edcfb093 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 23:17:05 +0100
Subject: [PATCH 25/31] fix(deps): update dependency typescript-eslint to
^8.51.0 (#4795)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas
---
packages/api/src/router/widgets/notebook.ts | 2 +-
.../src/truenas/truenas-integration.ts | 2 +-
pnpm-lock.yaml | 152 +++++++++---------
tooling/eslint/package.json | 2 +-
4 files changed, 79 insertions(+), 79 deletions(-)
diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts
index 2f7229601..de89059d4 100644
--- a/packages/api/src/router/widgets/notebook.ts
+++ b/packages/api/src/router/widgets/notebook.ts
@@ -24,7 +24,7 @@ export const notebookRouter = createTRPCRouter({
where: eq(items.id, input.itemId),
});
- if (!item || item.boardId !== input.boardId) {
+ if (item?.boardId !== input.boardId) {
throw new TRPCError({
code: "NOT_FOUND",
message: "Specified item was not found",
diff --git a/packages/integrations/src/truenas/truenas-integration.ts b/packages/integrations/src/truenas/truenas-integration.ts
index 206f033a0..8b0a79b89 100644
--- a/packages/integrations/src/truenas/truenas-integration.ts
+++ b/packages/integrations/src/truenas/truenas-integration.ts
@@ -261,7 +261,7 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni
*/
private async requestAsync(method: string, params: unknown[] = [], webSocketOverride?: WebSocket) {
let webSocket = webSocketOverride ?? this.webSocket;
- if (!webSocket || webSocket.readyState !== WebSocket.OPEN) {
+ if (webSocket?.readyState !== WebSocket.OPEN) {
logger.debug("Connecting to websocket", {
url: this.wsUrl(),
});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index db6aa9e02..3c19196c9 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2347,7 +2347,7 @@ importers:
version: 2.7.2(eslint@9.39.2)(turbo@2.7.2)
eslint-plugin-import:
specifier: ^2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)
+ version: 2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)
eslint-plugin-jsx-a11y:
specifier: ^6.10.2
version: 6.10.2(eslint@9.39.2)
@@ -2358,8 +2358,8 @@ importers:
specifier: ^6.1.1
version: 6.1.1(eslint@9.39.2)
typescript-eslint:
- specifier: ^8.50.1
- version: 8.50.1(eslint@9.39.2)(typescript@5.9.3)
+ specifier: ^8.51.0
+ version: 8.51.0(eslint@9.39.2)(typescript@5.9.3)
devDependencies:
'@homarr/prettier-config':
specifier: workspace:^0.1.0
@@ -5002,63 +5002,63 @@ packages:
'@types/xml2js@0.4.14':
resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==}
- '@typescript-eslint/eslint-plugin@8.50.1':
- resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==}
+ '@typescript-eslint/eslint-plugin@8.51.0':
+ resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.50.1
+ '@typescript-eslint/parser': ^8.51.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.50.1':
- resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==}
+ '@typescript-eslint/parser@8.51.0':
+ resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.50.1':
- resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==}
+ '@typescript-eslint/project-service@8.51.0':
+ resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.50.1':
- resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==}
+ '@typescript-eslint/scope-manager@8.51.0':
+ resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.50.1':
- resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==}
+ '@typescript-eslint/tsconfig-utils@8.51.0':
+ resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.50.1':
- resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==}
+ '@typescript-eslint/type-utils@8.51.0':
+ resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.50.1':
- resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==}
+ '@typescript-eslint/types@8.51.0':
+ resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.50.1':
- resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==}
+ '@typescript-eslint/typescript-estree@8.51.0':
+ resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.50.1':
- resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==}
+ '@typescript-eslint/utils@8.51.0':
+ resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.50.1':
- resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==}
+ '@typescript-eslint/visitor-keys@8.51.0':
+ resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@umami/node@0.4.0':
@@ -10309,8 +10309,8 @@ packages:
zod: ^4.0.0
zod-openapi: ^5.0.1
- ts-api-utils@2.1.0:
- resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
+ ts-api-utils@2.3.0:
+ resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==}
engines: {node: '>=18.12'}
peerDependencies:
typescript: '>=4.8.4'
@@ -10490,8 +10490,8 @@ packages:
types-ramda@0.30.1:
resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==}
- typescript-eslint@8.50.1:
- resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==}
+ typescript-eslint@8.51.0:
+ resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -14008,95 +14008,95 @@ snapshots:
dependencies:
'@types/node': 24.10.4
- '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.50.1
- '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
- '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.50.1
+ '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.51.0
+ '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.51.0
eslint: 9.39.2
ignore: 7.0.4
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.9.3)
+ ts-api-utils: 2.3.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.50.1
- '@typescript-eslint/types': 8.50.1
- '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.50.1
+ '@typescript-eslint/scope-manager': 8.51.0
+ '@typescript-eslint/types': 8.51.0
+ '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.51.0
debug: 4.4.3
eslint: 9.39.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/types': 8.50.1
+ '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.51.0
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.50.1':
+ '@typescript-eslint/scope-manager@8.51.0':
dependencies:
- '@typescript-eslint/types': 8.50.1
- '@typescript-eslint/visitor-keys': 8.50.1
+ '@typescript-eslint/types': 8.51.0
+ '@typescript-eslint/visitor-keys': 8.51.0
- '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.50.1
- '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/types': 8.51.0
+ '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
debug: 4.4.3
eslint: 9.39.2
- ts-api-utils: 2.1.0(typescript@5.9.3)
+ ts-api-utils: 2.3.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.50.1': {}
+ '@typescript-eslint/types@8.51.0': {}
- '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/types': 8.50.1
- '@typescript-eslint/visitor-keys': 8.50.1
+ '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.51.0
+ '@typescript-eslint/visitor-keys': 8.51.0
debug: 4.4.3
minimatch: 9.0.5
semver: 7.7.3
tinyglobby: 0.2.15
- ts-api-utils: 2.1.0(typescript@5.9.3)
+ ts-api-utils: 2.3.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2)
- '@typescript-eslint/scope-manager': 8.50.1
- '@typescript-eslint/types': 8.50.1
- '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.51.0
+ '@typescript-eslint/types': 8.51.0
+ '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
eslint: 9.39.2
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.50.1':
+ '@typescript-eslint/visitor-keys@8.51.0':
dependencies:
- '@typescript-eslint/types': 8.50.1
+ '@typescript-eslint/types': 8.51.0
eslint-visitor-keys: 4.2.1
'@umami/node@0.4.0': {}
@@ -15900,17 +15900,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
eslint: 9.39.2
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -15921,7 +15921,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.2
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -15933,7 +15933,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -20213,7 +20213,7 @@ snapshots:
optionalDependencies:
'@rollup/rollup-linux-x64-gnu': 4.6.1
- ts-api-utils@2.1.0(typescript@5.9.3):
+ ts-api-utils@2.3.0(typescript@5.9.3):
dependencies:
typescript: 5.9.3
@@ -20418,12 +20418,12 @@ snapshots:
dependencies:
ts-toolbelt: 9.6.0
- typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3):
+ typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)
- '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3)
- '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3)
eslint: 9.39.2
typescript: 5.9.3
transitivePeerDependencies:
diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json
index c795b706d..3214ec298 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.5",
"eslint-plugin-react-hooks": "^6.1.1",
- "typescript-eslint": "^8.50.1"
+ "typescript-eslint": "^8.51.0"
},
"devDependencies": {
"@homarr/prettier-config": "workspace:^0.1.0",
From ea848bdd0bc1268675d00213bb86dc1d1b298162 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Sat, 3 Jan 2026 22:27:38 +0000
Subject: [PATCH 26/31] fix(deps): update dependency @tanstack/react-query to
^5.90.15 (#4794)
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/cron-job-api/package.json | 2 +-
pnpm-lock.yaml | 6 +++---
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 95a9e2a23..ca81348be 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -56,7 +56,7 @@
"@mantine/tiptap": "^8.3.10",
"@million/lint": "1.0.14",
"@tabler/icons-react": "^3.36.0",
- "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query": "^5.90.15",
"@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-query-next-experimental": "^5.91.0",
"@trpc/client": "^11.8.1",
diff --git a/packages/api/package.json b/packages/api/package.json
index 97bc07cad..9aadc343c 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -41,7 +41,7 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.4.0",
- "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query": "^5.90.15",
"@trpc/client": "^11.8.1",
"@trpc/react-query": "^11.8.1",
"@trpc/server": "^11.8.1",
diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json
index 959d1986c..41f05ee23 100644
--- a/packages/cron-job-api/package.json
+++ b/packages/cron-job-api/package.json
@@ -28,7 +28,7 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/core": "workspace:^0.1.0",
"@homarr/cron-jobs": "workspace:^0.1.0",
- "@tanstack/react-query": "^5.90.14",
+ "@tanstack/react-query": "^5.90.15",
"@trpc/client": "^11.8.1",
"@trpc/server": "^11.8.1",
"@trpc/tanstack-react-query": "^11.8.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3c19196c9..d11b4dc2a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -233,7 +233,7 @@ importers:
specifier: ^3.36.0
version: 3.36.0(react@19.2.3)
'@tanstack/react-query':
- specifier: ^5.90.14
+ specifier: ^5.90.15
version: 5.90.16(react@19.2.3)
'@tanstack/react-query-devtools':
specifier: ^5.91.2
@@ -630,7 +630,7 @@ importers:
specifier: ^1.4.0
version: 1.4.0
'@tanstack/react-query':
- specifier: ^5.90.14
+ specifier: ^5.90.15
version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
@@ -942,7 +942,7 @@ importers:
specifier: workspace:^0.1.0
version: link:../cron-jobs
'@tanstack/react-query':
- specifier: ^5.90.14
+ specifier: ^5.90.15
version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
From 96e2f4fcca52c7acf8360bb055120daccccc3b55 Mon Sep 17 00:00:00 2001
From: "homarr-crowdin[bot]"
<190541745+homarr-crowdin[bot]@users.noreply.github.com>
Date: Sun, 4 Jan 2026 01:02:35 +0000
Subject: [PATCH 27/31] 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 | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json
index e51894d33..20e845336 100644
--- a/packages/translation/src/lang/cn.json
+++ b/packages/translation/src/lang/cn.json
@@ -1941,19 +1941,19 @@
"description": "您的容器状态 (这个小部件只能用管理员权限添加)",
"option": {
"enableRowSorting": {
- "label": ""
+ "label": "启用项目排序"
},
"defaultSort": {
- "label": "",
+ "label": "默认排序列",
"option": {
- "name": "",
- "state": "",
- "cpuUsage": "",
- "memoryUsage": ""
+ "name": "名称",
+ "state": "状态",
+ "cpuUsage": "CPU 利用率",
+ "memoryUsage": "内存占用率"
}
},
"descendingDefaultSort": {
- "label": ""
+ "label": "倒序"
}
},
"error": {
@@ -2248,7 +2248,7 @@
"unknown": "未知",
"pending": "等待处理",
"processing": "处理中",
- "requested": "",
+ "requested": "已请求",
"partiallyAvailable": "部分",
"available": "可用",
"blacklisted": "已列入黑名单",
From 6e572e3fc577113b06a7c8caf49959c5e2b0aac5 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 15:53:40 +0000
Subject: [PATCH 28/31] chore(deps): update pnpm to v10.27.0 (#4802)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
deployments/prebuilt-debian/package.json | 4 ++--
package.json | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json
index 1d5739653..b9e0930b8 100644
--- a/deployments/prebuilt-debian/package.json
+++ b/deployments/prebuilt-debian/package.json
@@ -4,10 +4,10 @@
"dependencies": {
"better-sqlite3": "^12.5.0"
},
- "packageManager": "pnpm@10.26.2",
+ "packageManager": "pnpm@10.27.0",
"engines": {
"node": ">=24.12.0",
- "pnpm": ">=10.26.2"
+ "pnpm": ">=10.27.0"
},
"pnpm": {
"onlyBuiltDependencies": [
diff --git a/package.json b/package.json
index 921928ba5..a0f012140 100644
--- a/package.json
+++ b/package.json
@@ -59,10 +59,10 @@
"vite-tsconfig-paths": "^6.0.3",
"vitest": "^4.0.16"
},
- "packageManager": "pnpm@10.26.2",
+ "packageManager": "pnpm@10.27.0",
"engines": {
"node": ">=24.12.0",
- "pnpm": ">=10.26.2"
+ "pnpm": ">=10.27.0"
},
"pnpm": {
"onlyBuiltDependencies": [
From 413e846133f13a800f509273b8b87cf677f0024d Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 16:36:01 +0000
Subject: [PATCH 29/31] fix(deps): update dependency @tanstack/react-query to
^5.90.16 (#4799)
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/cron-job-api/package.json | 2 +-
pnpm-lock.yaml | 6 +++---
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index ca81348be..5ee38c589 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -56,7 +56,7 @@
"@mantine/tiptap": "^8.3.10",
"@million/lint": "1.0.14",
"@tabler/icons-react": "^3.36.0",
- "@tanstack/react-query": "^5.90.15",
+ "@tanstack/react-query": "^5.90.16",
"@tanstack/react-query-devtools": "^5.91.2",
"@tanstack/react-query-next-experimental": "^5.91.0",
"@trpc/client": "^11.8.1",
diff --git a/packages/api/package.json b/packages/api/package.json
index 9aadc343c..a1543085c 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -41,7 +41,7 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.4.0",
- "@tanstack/react-query": "^5.90.15",
+ "@tanstack/react-query": "^5.90.16",
"@trpc/client": "^11.8.1",
"@trpc/react-query": "^11.8.1",
"@trpc/server": "^11.8.1",
diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json
index 41f05ee23..bc02db26b 100644
--- a/packages/cron-job-api/package.json
+++ b/packages/cron-job-api/package.json
@@ -28,7 +28,7 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/core": "workspace:^0.1.0",
"@homarr/cron-jobs": "workspace:^0.1.0",
- "@tanstack/react-query": "^5.90.15",
+ "@tanstack/react-query": "^5.90.16",
"@trpc/client": "^11.8.1",
"@trpc/server": "^11.8.1",
"@trpc/tanstack-react-query": "^11.8.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d11b4dc2a..683968e44 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -233,7 +233,7 @@ importers:
specifier: ^3.36.0
version: 3.36.0(react@19.2.3)
'@tanstack/react-query':
- specifier: ^5.90.15
+ specifier: ^5.90.16
version: 5.90.16(react@19.2.3)
'@tanstack/react-query-devtools':
specifier: ^5.91.2
@@ -630,7 +630,7 @@ importers:
specifier: ^1.4.0
version: 1.4.0
'@tanstack/react-query':
- specifier: ^5.90.15
+ specifier: ^5.90.16
version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
@@ -942,7 +942,7 @@ importers:
specifier: workspace:^0.1.0
version: link:../cron-jobs
'@tanstack/react-query':
- specifier: ^5.90.15
+ specifier: ^5.90.16
version: 5.90.16(react@19.2.3)
'@trpc/client':
specifier: ^11.8.1
From c8ecf5f0a13b1c74f24cebced76a60728eb2d543 Mon Sep 17 00:00:00 2001
From: "homarr-renovate[bot]"
<158783068+homarr-renovate[bot]@users.noreply.github.com>
Date: Mon, 5 Jan 2026 17:31:37 +0000
Subject: [PATCH 30/31] fix(deps): update dependency ldapts to v8.1.0 (#4804)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
---
packages/auth/package.json | 2 +-
pnpm-lock.yaml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/packages/auth/package.json b/packages/auth/package.json
index cc93d1477..1ba1e31d8 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -32,7 +32,7 @@
"@homarr/validation": "workspace:^0.1.0",
"bcrypt": "^6.0.0",
"cookies": "^0.9.1",
- "ldapts": "8.0.36",
+ "ldapts": "8.1.0",
"next": "16.1.1",
"next-auth": "5.0.0-beta.30",
"react": "19.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 683968e44..668c2d98c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -715,8 +715,8 @@ importers:
specifier: ^0.9.1
version: 0.9.1
ldapts:
- specifier: 8.0.36
- version: 8.0.36
+ specifier: 8.1.0
+ version: 8.1.0
next:
specifier: 16.1.1
version: 16.1.1(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.97.1)
@@ -7893,8 +7893,8 @@ packages:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
- ldapts@8.0.36:
- resolution: {integrity: sha512-PGWfAjAukRQV0Kcv3yiw0MMIIchD0wHbI4c4oCXVDBES1rEU01tnaH8YWfoRfGYBEla+xjrlz7xd/pes2aiiHQ==}
+ ldapts@8.1.0:
+ resolution: {integrity: sha512-m3QzVVTzZeiEc/r1Nw4udwQVsX9dG98igIt8PPC+++0Cy9HIqF5iZWiwLEpKw70PZ7HGeEQSIQuqTPB5op0+bw==}
engines: {node: '>=20'}
levn@0.4.1:
@@ -17343,7 +17343,7 @@ snapshots:
dependencies:
readable-stream: 2.3.8
- ldapts@8.0.36:
+ ldapts@8.1.0:
dependencies:
'@types/asn1': 0.2.4
asn1: 0.2.6
From 0dc61a88b8d12c61fd436adf0693c9fa5087a8c0 Mon Sep 17 00:00:00 2001
From: Matti Airas
Date: Mon, 5 Jan 2026 19:43:17 +0200
Subject: [PATCH 31/31] feat(auth): extend API key authentication to tRPC
endpoints (#4732)
Co-authored-by: Claude Opus 4.5
---
apps/nextjs/src/app/api/[...trpc]/route.ts | 80 ++---------
apps/nextjs/src/app/api/trpc/[trpc]/route.ts | 15 +-
packages/api/src/open-api.ts | 4 +-
packages/auth/api-key/constants.ts | 1 +
packages/auth/api-key/get-api-key-session.ts | 76 ++++++++++
packages/auth/api-key/index.ts | 2 +
.../api-key/test/get-api-key-session.spec.ts | 133 ++++++++++++++++++
packages/auth/package.json | 1 +
.../common/src/{user-agent.ts => request.ts} | 4 +
packages/common/src/server.ts | 2 +-
10 files changed, 246 insertions(+), 72 deletions(-)
create mode 100644 packages/auth/api-key/constants.ts
create mode 100644 packages/auth/api-key/get-api-key-session.ts
create mode 100644 packages/auth/api-key/index.ts
create mode 100644 packages/auth/api-key/test/get-api-key-session.spec.ts
rename packages/common/src/{user-agent.ts => request.ts} (79%)
diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts
index fa5ced6fc..2980900a8 100644
--- a/apps/nextjs/src/app/api/[...trpc]/route.ts
+++ b/apps/nextjs/src/app/api/[...trpc]/route.ts
@@ -3,21 +3,24 @@ import { userAgent } from "next/server";
import { createOpenApiFetchHandler } from "trpc-to-openapi";
import { appRouter, createTRPCContext } from "@homarr/api";
-import type { Session } from "@homarr/auth";
-import { hashPasswordAsync } from "@homarr/auth";
-import { createSessionAsync } from "@homarr/auth/server";
+import { API_KEY_HEADER_NAME, getSessionFromApiKeyAsync } from "@homarr/auth/api-key";
+import { ipAddressFromHeaders } from "@homarr/common/server";
import { createLogger } from "@homarr/core/infrastructure/logs";
import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error";
-import { db, eq } from "@homarr/db";
-import { apiKeys } from "@homarr/db/schema";
+import { db } from "@homarr/db";
const logger = createLogger({ module: "trpcOpenApiRoute" });
const handlerAsync = async (req: NextRequest) => {
- const apiKeyHeaderValue = req.headers.get("ApiKey");
- const ipAddress = req.headers.get("x-forwarded-for");
+ const apiKeyHeaderValue = req.headers.get(API_KEY_HEADER_NAME);
+ const ipAddress = ipAddressFromHeaders(req.headers);
const { ua } = userAgent(req);
- const session: Session | null = await getSessionOrDefaultFromHeadersAsync(apiKeyHeaderValue, ipAddress, ua);
+
+ logger.info(
+ `Creating OpenAPI fetch handler for user ${apiKeyHeaderValue ? "with an api key" : "without an api key"}`,
+ );
+
+ const session = await getSessionFromApiKeyAsync(db, apiKeyHeaderValue, ipAddress, ua);
// Fallback to JSON if no content type is set
if (!req.headers.has("Content-Type")) {
@@ -35,67 +38,6 @@ const handlerAsync = async (req: NextRequest) => {
});
};
-const getSessionOrDefaultFromHeadersAsync = async (
- apiKeyHeaderValue: string | null,
- ipAdress: string | null,
- userAgent: string,
-): Promise => {
- logger.info(
- `Creating OpenAPI fetch handler for user ${apiKeyHeaderValue ? "with an api key" : "without an api key"}`,
- );
-
- if (apiKeyHeaderValue === null) {
- return null;
- }
-
- const [apiKeyId, apiKey] = apiKeyHeaderValue.split(".");
-
- if (!apiKeyId || !apiKey) {
- logger.warn("An attempt to authenticate over API has failed due to invalid API key format", {
- ipAdress,
- userAgent,
- });
- return null;
- }
-
- const apiKeyFromDb = await db.query.apiKeys.findFirst({
- where: eq(apiKeys.id, apiKeyId),
- columns: {
- id: true,
- apiKey: true,
- salt: true,
- },
- with: {
- user: {
- columns: {
- id: true,
- name: true,
- email: true,
- emailVerified: true,
- },
- },
- },
- });
-
- if (!apiKeyFromDb) {
- logger.warn("An attempt to authenticate over API has failed", { ipAdress, userAgent });
- return null;
- }
-
- const hashedApiKey = await hashPasswordAsync(apiKey, apiKeyFromDb.salt);
-
- if (apiKeyFromDb.apiKey !== hashedApiKey) {
- logger.warn("An attempt to authenticate over API has failed", { ipAdress, userAgent });
- return null;
- }
-
- logger.info("Read session from API request and found user", {
- name: apiKeyFromDb.user.name,
- id: apiKeyFromDb.user.id,
- });
- return await createSessionAsync(db, apiKeyFromDb.user);
-};
-
export {
handlerAsync as DELETE,
handlerAsync as GET,
diff --git a/apps/nextjs/src/app/api/trpc/[trpc]/route.ts b/apps/nextjs/src/app/api/trpc/[trpc]/route.ts
index 65ebb353d..8ac6c166d 100644
--- a/apps/nextjs/src/app/api/trpc/[trpc]/route.ts
+++ b/apps/nextjs/src/app/api/trpc/[trpc]/route.ts
@@ -1,10 +1,14 @@
+import { userAgent } from "next/server";
import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
import { appRouter, createTRPCContext } from "@homarr/api";
import { trpcPath } from "@homarr/api/shared";
+import { API_KEY_HEADER_NAME, getSessionFromApiKeyAsync } from "@homarr/auth/api-key";
import { auth } from "@homarr/auth/next";
+import { ipAddressFromHeaders } from "@homarr/common/server";
import { createLogger } from "@homarr/core/infrastructure/logs";
import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error";
+import { db } from "@homarr/db";
const logger = createLogger({ module: "trpcRoute" });
@@ -28,11 +32,20 @@ export function OPTIONS() {
}
const handler = auth(async (req) => {
+ // Try API key auth first, fall back to session cookie
+ const apiKeyHeader = req.headers.get(API_KEY_HEADER_NAME);
+ const ipAddress = ipAddressFromHeaders(req.headers);
+
+ const { ua } = userAgent(req);
+
+ const apiKeySession = await getSessionFromApiKeyAsync(db, apiKeyHeader, ipAddress, ua);
+ const session = apiKeySession ?? req.auth;
+
const response = await fetchRequestHandler({
endpoint: trpcPath,
router: appRouter,
req,
- createContext: () => createTRPCContext({ session: req.auth, headers: req.headers }),
+ createContext: () => createTRPCContext({ session, headers: req.headers }),
onError({ error, path, type }) {
logger.error(new ErrorWithMetadata("tRPC Error occured", { path, type }, { cause: error }));
},
diff --git a/packages/api/src/open-api.ts b/packages/api/src/open-api.ts
index 5620df23a..b4827871c 100644
--- a/packages/api/src/open-api.ts
+++ b/packages/api/src/open-api.ts
@@ -1,5 +1,7 @@
import { generateOpenApiDocument } from "trpc-to-openapi";
+import { API_KEY_HEADER_NAME } from "@homarr/auth/api-key";
+
import { appRouter } from "./root";
export const openApiDocument = (base: string) =>
@@ -11,7 +13,7 @@ export const openApiDocument = (base: string) =>
securitySchemes: {
apikey: {
type: "apiKey",
- name: "ApiKey",
+ name: API_KEY_HEADER_NAME,
description: "API key which can be obtained in the Homarr administration dashboard",
in: "header",
},
diff --git a/packages/auth/api-key/constants.ts b/packages/auth/api-key/constants.ts
new file mode 100644
index 000000000..591d43410
--- /dev/null
+++ b/packages/auth/api-key/constants.ts
@@ -0,0 +1 @@
+export const API_KEY_HEADER_NAME = "ApiKey";
diff --git a/packages/auth/api-key/get-api-key-session.ts b/packages/auth/api-key/get-api-key-session.ts
new file mode 100644
index 000000000..6fbaec972
--- /dev/null
+++ b/packages/auth/api-key/get-api-key-session.ts
@@ -0,0 +1,76 @@
+import type { Session } from "next-auth";
+
+import { createLogger } from "@homarr/core/infrastructure/logs";
+import type { Database } from "@homarr/db";
+import { eq } from "@homarr/db";
+import { apiKeys } from "@homarr/db/schema";
+
+import { hashPasswordAsync } from "../security";
+import { createSessionAsync } from "../server";
+
+const logger = createLogger({ module: "apiKeyAuth" });
+
+/**
+ * Validate an API key from the request header and return a session if valid.
+ *
+ * @param db - The database instance
+ * @param apiKeyHeaderValue - The value of the ApiKey header (format: "id.token")
+ * @param ipAddress - The IP address of the request (for logging)
+ * @param userAgent - The user agent of the request (for logging)
+ * @returns A session if the API key is valid, null otherwise
+ */
+export const getSessionFromApiKeyAsync = async (
+ db: Database,
+ apiKeyHeaderValue: string | null,
+ ipAddress: string | null,
+ userAgent: string,
+): Promise => {
+ if (apiKeyHeaderValue === null) {
+ return null;
+ }
+
+ const [apiKeyId, apiKey] = apiKeyHeaderValue.split(".");
+
+ if (!apiKeyId || !apiKey) {
+ logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_INVALID_FORMAT" });
+ return null;
+ }
+
+ const apiKeyFromDb = await db.query.apiKeys.findFirst({
+ where: eq(apiKeys.id, apiKeyId),
+ columns: {
+ id: true,
+ apiKey: true,
+ salt: true,
+ },
+ with: {
+ user: {
+ columns: {
+ id: true,
+ name: true,
+ email: true,
+ emailVerified: true,
+ },
+ },
+ },
+ });
+
+ if (!apiKeyFromDb) {
+ logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_NOT_FOUND" });
+ return null;
+ }
+
+ const hashedApiKey = await hashPasswordAsync(apiKey, apiKeyFromDb.salt);
+
+ if (apiKeyFromDb.apiKey !== hashedApiKey) {
+ logger.warn("Failed to authenticate with api-key", { ipAddress, userAgent, reason: "API_KEY_MISMATCH" });
+ return null;
+ }
+
+ logger.info("Successfully authenticated with api-key", {
+ name: apiKeyFromDb.user.name,
+ id: apiKeyFromDb.user.id,
+ });
+
+ return await createSessionAsync(db, apiKeyFromDb.user);
+};
diff --git a/packages/auth/api-key/index.ts b/packages/auth/api-key/index.ts
new file mode 100644
index 000000000..979243dd4
--- /dev/null
+++ b/packages/auth/api-key/index.ts
@@ -0,0 +1,2 @@
+export { getSessionFromApiKeyAsync } from "./get-api-key-session";
+export { API_KEY_HEADER_NAME } from "./constants";
diff --git a/packages/auth/api-key/test/get-api-key-session.spec.ts b/packages/auth/api-key/test/get-api-key-session.spec.ts
new file mode 100644
index 000000000..5040ea441
--- /dev/null
+++ b/packages/auth/api-key/test/get-api-key-session.spec.ts
@@ -0,0 +1,133 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { describe, expect, test, vi } from "vitest";
+
+import { createId } from "@homarr/common";
+import { apiKeys, users } from "@homarr/db/schema";
+import { createDb } from "@homarr/db/test";
+
+import { createSaltAsync, hashPasswordAsync } from "../../security";
+import { getSessionFromApiKeyAsync } from "../get-api-key-session";
+
+// Mock the logger to avoid console output during tests
+vi.mock("@homarr/core/infrastructure/logs", () => ({
+ createLogger: () => ({
+ warn: vi.fn(),
+ info: vi.fn(),
+ }),
+}));
+
+const defaultUserId = createId();
+const defaultUsername = "testuser";
+const defaultApiKeyId = createId();
+const defaultIpAddress = "127.0.0.1";
+const defaultUserAgent = "test-agent";
+const defaultLogParams = [defaultIpAddress, defaultUserAgent] as const;
+
+describe("getSessionFromApiKeyAsync", () => {
+ test("should return null when api key header is null", async () => {
+ // Arrange
+ const { db } = await setupAsync();
+ const apiKey = null;
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, apiKey, ...defaultLogParams);
+
+ // Assert
+ expect(result).toBeNull();
+ });
+
+ test.each([
+ ["invalidformat", "no dot"],
+ ["keyid.", "missing token"],
+ [".token", "missing id"],
+ ])("should return null when api key format is invalid key=%s reason=%s", async (apiKey) => {
+ // Arrange
+ const { db } = await setupAsync();
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, apiKey, ...defaultLogParams);
+
+ // Assert
+ expect(result).toBeNull();
+ });
+
+ test("should return null when api key is not found in database", async () => {
+ // Arrange
+ const { db } = await setupAsync();
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, "nonexistent.token", ...defaultLogParams);
+
+ // Assert
+ expect(result).toBeNull();
+ });
+
+ test("should return null when api key token does not match", async () => {
+ // Arrange
+ const { db } = await setupAsync({ token: "correcttoken" });
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.wrongtoken`, ...defaultLogParams);
+
+ // Assert
+ expect(result).toBeNull();
+ });
+
+ test("should return session when api key is valid", async () => {
+ // Arrange
+ const token = "validtesttoken123";
+ const { db } = await setupAsync({ token });
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.${token}`, ...defaultLogParams);
+
+ // Assert
+ expect(result).not.toBeNull();
+ expect(result!.user.id).toEqual(defaultUserId);
+ expect(result!.user.name).toEqual(defaultUsername);
+ });
+
+ test("should work with null ip address", async () => {
+ // Arrange
+ const token = "validtesttoken456";
+ const { db } = await setupAsync({ token });
+
+ // Act
+ const result = await getSessionFromApiKeyAsync(db, `${defaultApiKeyId}.${token}`, null, defaultUserAgent);
+
+ // Assert
+ expect(result).not.toBeNull();
+ expect(result!.user.id).toEqual(defaultUserId);
+ });
+});
+
+interface SetupOptions {
+ /**
+ * If provided, inserts an API key into the database for testing.
+ */
+ token?: string;
+}
+
+const setupAsync = async (options?: SetupOptions) => {
+ const db = createDb();
+
+ await db.insert(users).values({
+ id: defaultUserId,
+ name: defaultUsername,
+ email: "test@example.com",
+ });
+
+ if (options?.token) {
+ const salt = await createSaltAsync();
+ await db.insert(apiKeys).values({
+ id: defaultApiKeyId,
+ apiKey: await hashPasswordAsync(options.token, salt),
+ salt,
+ userId: defaultUserId,
+ });
+ }
+
+ return {
+ db,
+ };
+};
diff --git a/packages/auth/package.json b/packages/auth/package.json
index 1ba1e31d8..aaac1811b 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -8,6 +8,7 @@
".": "./index.ts",
"./next": "./next.ts",
"./security": "./security.ts",
+ "./api-key": "./api-key/index.ts",
"./client": "./client.ts",
"./server": "./server.ts",
"./shared": "./shared.ts",
diff --git a/packages/common/src/user-agent.ts b/packages/common/src/request.ts
similarity index 79%
rename from packages/common/src/user-agent.ts
rename to packages/common/src/request.ts
index b4a90dfb3..f90d91945 100644
--- a/packages/common/src/user-agent.ts
+++ b/packages/common/src/request.ts
@@ -9,3 +9,7 @@ export const userAgent = (headers: Headers) => {
};
export type DeviceType = "console" | "mobile" | "tablet" | "smarttv" | "wearable" | "embedded" | undefined;
+
+export const ipAddressFromHeaders = (headers: Headers): string | null => {
+ return headers.get("x-forwarded-for");
+};
diff --git a/packages/common/src/server.ts b/packages/common/src/server.ts
index fd23f7404..d6e62d5b9 100644
--- a/packages/common/src/server.ts
+++ b/packages/common/src/server.ts
@@ -1,4 +1,4 @@
export * from "./security";
export * from "./encryption";
-export * from "./user-agent";
+export * from "./request";
export * from "./errors";