From e9020e68ecf9e33df983108e7ab239776874413c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 17:26:06 +0000 Subject: [PATCH 01/34] fix(deps): update dependency typescript-eslint to ^8.53.0 (#4863) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 140 ++++++++++++++++++------------------ tooling/eslint/package.json | 2 +- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2012de5bb..8ebbf49be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2353,7 +2353,7 @@ importers: version: 2.7.3(eslint@9.39.2)(turbo@2.7.3) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.53.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) @@ -2364,8 +2364,8 @@ importers: specifier: ^6.1.1 version: 6.1.1(eslint@9.39.2) typescript-eslint: - specifier: ^8.52.0 - version: 8.52.0(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.53.0 + version: 8.53.0(eslint@9.39.2)(typescript@5.9.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -5018,63 +5018,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.52.0': - resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} + '@typescript-eslint/eslint-plugin@8.53.0': + resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.52.0 + '@typescript-eslint/parser': ^8.53.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.52.0': - resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} + '@typescript-eslint/parser@8.53.0': + resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} 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.52.0': - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + '@typescript-eslint/project-service@8.53.0': + resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.52.0': - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + '@typescript-eslint/scope-manager@8.53.0': + resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.52.0': - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + '@typescript-eslint/tsconfig-utils@8.53.0': + resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.52.0': - resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} + '@typescript-eslint/type-utils@8.53.0': + resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} 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.52.0': - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + '@typescript-eslint/types@8.53.0': + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.52.0': - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + '@typescript-eslint/typescript-estree@8.53.0': + resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.52.0': - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + '@typescript-eslint/utils@8.53.0': + resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} 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.52.0': - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + '@typescript-eslint/visitor-keys@8.53.0': + resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -10508,8 +10508,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.52.0: - resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} + typescript-eslint@8.53.0: + resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -14031,14 +14031,14 @@ snapshots: dependencies: '@types/node': 24.10.7 - '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 @@ -14047,41 +14047,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.52.0': + '@typescript-eslint/scope-manager@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 - '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -14089,14 +14089,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.52.0': {} + '@typescript-eslint/types@8.53.0': {} - '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 + '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/visitor-keys': 8.53.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -14106,20 +14106,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.53.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.53.0 + '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.52.0': + '@typescript-eslint/visitor-keys@8.53.0': dependencies: - '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/types': 8.53.0 eslint-visitor-keys: 4.2.1 '@umami/node@0.4.0': {} @@ -15925,17 +15925,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.52.0(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.53.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.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.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.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15946,7 +15946,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.52.0(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.53.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 @@ -15958,7 +15958,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -20437,12 +20437,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.52.0(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.53.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.52.0(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.53.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.53.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 bc0d23173..33aed94b4 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.52.0" + "typescript-eslint": "^8.53.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", From f096476fc26fcdd549fa3a1a5f4fbeb430d3476e Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 18:39:50 +0000 Subject: [PATCH 02/34] chore(deps): update babel monorepo to >=7.28.6 (#4864) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 99 ++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 78 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index c54a71202..484aed3ce 100644 --- a/package.json +++ b/package.json @@ -77,8 +77,8 @@ "tree-sitter-json" ], "overrides": { - "@babel/helpers@<7.26.10": ">=7.28.4", - "@babel/runtime@<7.26.10": ">=7.28.4", + "@babel/helpers@<7.26.10": ">=7.28.6", + "@babel/runtime@<7.26.10": ">=7.28.6", "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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ebbf49be..54ea98d12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,8 +5,8 @@ settings: excludeLinksFromLockfile: false overrides: - '@babel/helpers@<7.26.10': '>=7.28.4' - '@babel/runtime@<7.26.10': '>=7.28.4' + '@babel/helpers@<7.26.10': '>=7.28.6' + '@babel/runtime@<7.26.10': '>=7.28.6' 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' @@ -288,7 +288,7 @@ importers: 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.8)(react@19.2.3) + version: 2.16.1(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) mantine-react-table: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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) @@ -1979,7 +1979,7 @@ importers: version: 3.36.1(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.8)(react@19.2.3) + version: 2.16.1(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(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.2) @@ -2486,6 +2486,10 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.2': resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} @@ -2586,6 +2590,10 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.26.2': resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} @@ -2606,6 +2614,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -2626,6 +2639,10 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} @@ -2634,6 +2651,10 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.9': resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} @@ -2666,6 +2687,10 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + '@balena/dockerignore@1.0.2': resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} @@ -11246,6 +11271,12 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.28.6': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.26.2': {} '@babel/compat-data@7.27.5': {} @@ -11257,7 +11288,7 @@ snapshots: '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) - '@babel/helpers': 7.28.4 + '@babel/helpers': 7.28.6 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 @@ -11414,6 +11445,11 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + '@babel/parser@7.26.2': dependencies: '@babel/types': 7.28.5 @@ -11430,6 +11466,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: '@babel/core': 7.28.5 @@ -11446,6 +11486,8 @@ snapshots: '@babel/runtime@7.28.4': {} + '@babel/runtime@7.28.6': {} + '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 @@ -11458,6 +11500,12 @@ snapshots: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@babel/traverse@7.25.9': dependencies: '@babel/code-frame': 7.26.2 @@ -11526,6 +11574,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@balena/dockerignore@1.0.2': {} '@bcoe/v8-coverage@1.0.2': {} @@ -14128,7 +14181,7 @@ snapshots: '@videojs/http-streaming@3.17.2(video.js@8.23.4)': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 aes-decrypter: 4.0.2 global: 4.4.0 @@ -14139,18 +14192,18 @@ snapshots: '@videojs/vhs-utils@4.0.0': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 url-toolkit: 2.2.5 '@videojs/vhs-utils@4.1.1': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 '@videojs/xhr@2.7.0': dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 is-function: 1.0.2 @@ -14356,7 +14409,7 @@ snapshots: aes-decrypter@4.0.2: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 global: 4.4.0 pkcs7: 1.0.4 @@ -15437,7 +15490,7 @@ snapshots: dom-helpers@5.2.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 csstype: 3.2.3 dom-walk@0.1.2: {} @@ -17233,17 +17286,17 @@ snapshots: jose@6.0.8: {} - jotai@2.16.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.2.8)(react@19.2.3): + jotai@2.16.1(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): optionalDependencies: '@babel/core': 7.26.0 - '@babel/template': 7.27.2 + '@babel/template': 7.28.6 '@types/react': 19.2.8 react: 19.2.3 - jotai@2.16.1(@babel/core@7.28.5)(@babel/template@7.27.2)(@types/react@19.2.8)(react@19.2.3): + jotai@2.16.1(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): optionalDependencies: '@babel/core': 7.28.5 - '@babel/template': 7.27.2 + '@babel/template': 7.28.6 '@types/react': 19.2.8 react: 19.2.3 @@ -17497,7 +17550,7 @@ snapshots: m3u8-parser@7.2.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.1.1 global: 4.4.0 @@ -17867,7 +17920,7 @@ snapshots: mpd-parser@1.3.1: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/vhs-utils': 4.0.0 '@xmldom/xmldom': 0.8.10 global: 4.4.0 @@ -17882,7 +17935,7 @@ snapshots: mux.js@7.1.0: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 global: 4.4.0 mysql2@3.16.0: @@ -18510,7 +18563,7 @@ snapshots: pkcs7@1.0.4: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 pkg-conf@2.1.0: dependencies: @@ -18990,7 +19043,7 @@ snapshots: react-textarea-autosize@8.5.9(@types/react@19.2.8)(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 react: 19.2.3 use-composed-ref: 1.3.0(react@19.2.3) use-latest: 1.2.1(@types/react@19.2.8)(react@19.2.3) @@ -18999,7 +19052,7 @@ snapshots: react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -20625,7 +20678,7 @@ snapshots: use-deep-compare-effect@1.8.1(react@19.2.3): dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 dequal: 2.0.3 react: 19.2.3 @@ -20709,7 +20762,7 @@ snapshots: video.js@8.23.4: dependencies: - '@babel/runtime': 7.28.4 + '@babel/runtime': 7.28.6 '@videojs/http-streaming': 3.17.2(video.js@8.23.4) '@videojs/vhs-utils': 4.1.1 '@videojs/xhr': 2.7.0 From 31c68f43d52c9dc1b625b591cac0d8b025249467 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 18:40:14 +0000 Subject: [PATCH 03/34] chore(deps): update vitest monorepo to ^4.0.17 (#4862) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 6 +- pnpm-lock.yaml | 193 ++++++++++++++++++------------------------------- 2 files changed, 75 insertions(+), 124 deletions(-) diff --git a/package.json b/package.json index 484aed3ce..2903c5f14 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ "@testcontainers/redis": "^11.11.0", "@turbo/gen": "^2.7.3", "@vitejs/plugin-react": "^5.1.2", - "@vitest/coverage-v8": "^4.0.16", - "@vitest/ui": "^4.0.16", + "@vitest/coverage-v8": "^4.0.17", + "@vitest/ui": "^4.0.17", "conventional-changelog-conventionalcommits": "^9.1.0", "cross-env": "^10.1.0", "jsdom": "^27.4.0", @@ -57,7 +57,7 @@ "turbo": "^2.7.3", "typescript": "^5.9.3", "vite-tsconfig-paths": "^6.0.4", - "vitest": "^4.0.16" + "vitest": "^4.0.17" }, "packageManager": "pnpm@10.28.0", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54ea98d12..77387e2f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,11 +68,11 @@ importers: specifier: ^5.1.2 version: 5.1.2(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/coverage-v8': - specifier: ^4.0.16 - version: 4.0.16(vitest@4.0.16) + specifier: ^4.0.17 + version: 4.0.17(vitest@4.0.17) '@vitest/ui': - specifier: ^4.0.16 - version: 4.0.16(vitest@4.0.16) + specifier: ^4.0.17 + version: 4.0.17(vitest@4.0.17) conventional-changelog-conventionalcommits: specifier: ^9.1.0 version: 9.1.0 @@ -104,8 +104,8 @@ importers: specifier: ^6.0.4 version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(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.7)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + specifier: ^4.0.17 + version: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: @@ -3536,15 +3536,9 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} @@ -5131,20 +5125,20 @@ packages: peerDependencies: vite: '>=7.3.1' - '@vitest/coverage-v8@4.0.16': - resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} + '@vitest/coverage-v8@4.0.17': + resolution: {integrity: sha512-/6zU2FLGg0jsd+ePZcwHRy3+WpNTBBhDY56P4JTRqUN/Dp6CvOEa9HrikcQ4KfV2b2kAHUFB4dl1SuocWXSFEw==} peerDependencies: - '@vitest/browser': 4.0.16 - vitest: 4.0.16 + '@vitest/browser': 4.0.17 + vitest: 4.0.17 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.0.16': - resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} + '@vitest/expect@4.0.17': + resolution: {integrity: sha512-mEoqP3RqhKlbmUmntNDDCJeTDavDR+fVYkSOw8qRwJFaW/0/5zA9zFeTrHqNtcmwh6j26yMmwx2PqUDPzt5ZAQ==} - '@vitest/mocker@4.0.16': - resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} + '@vitest/mocker@4.0.17': + resolution: {integrity: sha512-+ZtQhLA3lDh1tI2wxe3yMsGzbp7uuJSWBM1iTIKCbppWTSBN09PUC+L+fyNlQApQoR+Ps8twt2pbSSXg2fQVEQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -5154,25 +5148,25 @@ packages: vite: optional: true - '@vitest/pretty-format@4.0.16': - resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} + '@vitest/pretty-format@4.0.17': + resolution: {integrity: sha512-Ah3VAYmjcEdHg6+MwFE17qyLqBHZ+ni2ScKCiW2XrlSBV4H3Z7vYfPfz7CWQ33gyu76oc0Ai36+kgLU3rfF4nw==} - '@vitest/runner@4.0.16': - resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} + '@vitest/runner@4.0.17': + resolution: {integrity: sha512-JmuQyf8aMWoo/LmNFppdpkfRVHJcsgzkbCA+/Bk7VfNH7RE6Ut2qxegeyx2j3ojtJtKIbIGy3h+KxGfYfk28YQ==} - '@vitest/snapshot@4.0.16': - resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} + '@vitest/snapshot@4.0.17': + resolution: {integrity: sha512-npPelD7oyL+YQM2gbIYvlavlMVWUfNNGZPcu0aEUQXt7FXTuqhmgiYupPnAanhKvyP6Srs2pIbWo30K0RbDtRQ==} - '@vitest/spy@4.0.16': - resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} + '@vitest/spy@4.0.17': + resolution: {integrity: sha512-I1bQo8QaP6tZlTomQNWKJE6ym4SHf3oLS7ceNjozxxgzavRAgZDc06T7kD8gb9bXKEgcLNt00Z+kZO6KaJ62Ew==} - '@vitest/ui@4.0.16': - resolution: {integrity: sha512-rkoPH+RqWopVxDnCBE/ysIdfQ2A7j1eDmW8tCxxrR9nnFBa9jKf86VgsSAzxBd1x+ny0GC4JgiD3SNfRHv3pOg==} + '@vitest/ui@4.0.17': + resolution: {integrity: sha512-hRDjg6dlDz7JlZAvjbiCdAJ3SDG+NH8tjZe21vjxfvT2ssYAn72SRXMge3dKKABm3bIJ3C+3wdunIdur8PHEAw==} peerDependencies: - vitest: 4.0.16 + vitest: 4.0.17 - '@vitest/utils@4.0.16': - resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} + '@vitest/utils@4.0.17': + resolution: {integrity: sha512-RG6iy+IzQpa9SB8HAFHJ9Y+pTzI+h8553MrciN9eC6TFBErqrQaTas4vG+MVj8S4uKk8uTT2p0vgZPnTdxd96w==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -5474,8 +5468,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.8: - resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} + ast-v8-to-istanbul@0.3.10: + resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} @@ -6889,14 +6883,6 @@ packages: fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -7776,10 +7762,6 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} @@ -10239,10 +10221,6 @@ packages: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -10848,18 +10826,18 @@ packages: yaml: optional: true - vitest@4.0.16: - resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} + vitest@4.0.17: + resolution: {integrity: sha512-FQMeF0DJdWY0iOnbv466n/0BudNdKj1l5jYgl5JVTwjSsZSlqyXFt/9+1sEyhR6CLowbZpV7O1sCHrzBhucKKg==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.16 - '@vitest/browser-preview': 4.0.16 - '@vitest/browser-webdriverio': 4.0.16 - '@vitest/ui': 4.0.16 + '@vitest/browser-playwright': 4.0.17 + '@vitest/browser-preview': 4.0.17 + '@vitest/browser-webdriverio': 4.0.17 + '@vitest/ui': 4.0.17 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -11200,7 +11178,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/ni@0.21.12': {} @@ -11346,7 +11324,7 @@ snapshots: '@babel/parser': 7.28.5 '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 '@babel/generator@7.28.3': @@ -12228,8 +12206,8 @@ snapshots: '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -12251,7 +12229,7 @@ snapshots: '@jridgewell/remapping@2.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} @@ -12262,19 +12240,12 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.31': dependencies: @@ -14219,71 +14190,68 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.16(vitest@4.0.16)': + '@vitest/coverage-v8@4.0.17(vitest@4.0.17)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.16 - ast-v8-to-istanbul: 0.3.8 + '@vitest/utils': 4.0.17 + ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 magicast: 0.5.1 obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.7)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) - transitivePeerDependencies: - - supports-color + vitest: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) - '@vitest/expect@4.0.16': + '@vitest/expect@4.0.17': dependencies: '@standard-schema/spec': 1.0.0 '@types/chai': 5.2.2 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.16(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: - '@vitest/spy': 4.0.16 + '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) - '@vitest/pretty-format@4.0.16': + '@vitest/pretty-format@4.0.17': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.16': + '@vitest/runner@4.0.17': dependencies: - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 pathe: 2.0.3 - '@vitest/snapshot@4.0.16': + '@vitest/snapshot@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.0.16': {} + '@vitest/spy@4.0.17': {} - '@vitest/ui@4.0.16(vitest@4.0.16)': + '@vitest/ui@4.0.17(vitest@4.0.17)': dependencies: - '@vitest/utils': 4.0.16 + '@vitest/utils': 4.0.17 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.16(@types/node@24.10.7)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(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': + '@vitest/utils@4.0.17': dependencies: - '@vitest/pretty-format': 4.0.16 + '@vitest/pretty-format': 4.0.17 tinyrainbow: 3.0.3 '@webassemblyjs/ast@1.14.1': @@ -14655,7 +14623,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.8: + ast-v8-to-istanbul@0.3.10: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -16311,10 +16279,6 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.4.4(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -17248,14 +17212,6 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 @@ -18593,7 +18549,7 @@ snapshots: postcss-js: 4.0.1(postcss@8.5.6) postcss-simple-vars: 7.0.1(postcss@8.5.6) sugarss: 5.0.0(postcss@8.5.6) - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 postcss-nested@7.0.2(postcss@8.5.6): dependencies: @@ -20176,11 +20132,6 @@ snapshots: tinyexec@1.0.2: {} - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.4(picomatch@4.0.3) - picomatch: 4.0.3 - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -20814,15 +20765,15 @@ snapshots: tsx: 4.20.5 yaml: 2.5.1 - vitest@4.0.16(@types/node@24.10.7)(@vitest/ui@4.0.16)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(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.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) - '@vitest/pretty-format': 4.0.16 - '@vitest/runner': 4.0.16 - '@vitest/snapshot': 4.0.16 - '@vitest/spy': 4.0.16 - '@vitest/utils': 4.0.16 + '@vitest/expect': 4.0.17 + '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + '@vitest/pretty-format': 4.0.17 + '@vitest/runner': 4.0.17 + '@vitest/snapshot': 4.0.17 + '@vitest/spy': 4.0.17 + '@vitest/utils': 4.0.17 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 @@ -20838,7 +20789,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.7 - '@vitest/ui': 4.0.16(vitest@4.0.16) + '@vitest/ui': 4.0.17(vitest@4.0.17) jsdom: 27.4.0(postcss@8.5.6) transitivePeerDependencies: - jiti From 0c38e2f290fc6dcb9608b338ee38409afb3beabe Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sat, 17 Jan 2026 18:41:01 +0000 Subject: [PATCH 04/34] fix(deps): update turbo monorepo to ^2.7.4 (#4861) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 98 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 2903c5f14..f7d3edfd2 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@semantic-release/npm": "^13.1.3", "@semantic-release/release-notes-generator": "^14.1.0", "@testcontainers/redis": "^11.11.0", - "@turbo/gen": "^2.7.3", + "@turbo/gen": "^2.7.4", "@vitejs/plugin-react": "^5.1.2", "@vitest/coverage-v8": "^4.0.17", "@vitest/ui": "^4.0.17", @@ -54,7 +54,7 @@ "prettier": "^3.7.4", "semantic-release": "^25.0.2", "testcontainers": "^11.11.0", - "turbo": "^2.7.3", + "turbo": "^2.7.4", "typescript": "^5.9.3", "vite-tsconfig-paths": "^6.0.4", "vitest": "^4.0.17" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77387e2f9..e03cdd21b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 '@turbo/gen': - specifier: ^2.7.3 - version: 2.7.3(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) + specifier: ^2.7.4 + version: 2.7.4(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.1.2 version: 5.1.2(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) @@ -95,8 +95,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 turbo: - specifier: ^2.7.3 - version: 2.7.3 + specifier: ^2.7.4 + version: 2.7.4 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2349,8 +2349,8 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) eslint-config-turbo: - specifier: ^2.7.3 - version: 2.7.3(eslint@9.39.2)(turbo@2.7.3) + specifier: ^2.7.4 + version: 2.7.4(eslint@9.39.2)(turbo@2.7.4) eslint-plugin-import: specifier: ^2.32.0 version: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) @@ -4784,12 +4784,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.7.3': - resolution: {integrity: sha512-lvjv1/fwUewFqew/qdNM//6cC32EIjEAJ2rCx5blL4+BVX16ubHroEGUJRNQegW0hpglTztdJW6DdS3hIuqoCA==} + '@turbo/gen@2.7.4': + resolution: {integrity: sha512-izrkJuawtMU/Pp1457+wJ8W+DDAEu3hiYKPdJyKzYtFHMhuTL8UMLsNQ2fyjRzsJWiG4493oI2UAdniZmB7nPg==} hasBin: true - '@turbo/workspaces@2.7.3': - resolution: {integrity: sha512-opYsHNZo3qhGJ+qxLSEhNcnf+e8beha/bfinwUH857NFL7oYHsOpVtNJIiwcJYKjZjJO4XtxTLsvAo3CQ5/R5A==} + '@turbo/workspaces@2.7.4': + resolution: {integrity: sha512-1jAzZzi2MkmSKHMm7SSjaADg4jPjy6tRqAZBqETdyQqFlIvfrM1uquaqaK9BPgBW3QeJlj1hIh+Eu58Xsocu9w==} hasBin: true '@types/adm-zip@0.5.7': @@ -6642,8 +6642,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.7.3: - resolution: {integrity: sha512-1ik3XQLJoE9d9ljhw60wTQf7rlwnz8tc6vnhSL7/Ciep2+qPMJpNg+mapcmGhirfDSceVNI8r9pv+HyvrBXhpQ==} + eslint-config-turbo@2.7.4: + resolution: {integrity: sha512-HhIqaGxIxZ8IxOqH30zvOr8kMmLGiOiDaOrFJwER9R++9L1OztVVsbs695Vti60XkYG6aa5F1TIBsYA5TP3hEw==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6700,8 +6700,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.7.3: - resolution: {integrity: sha512-q7kYzJCyvceSLVwHgmn3ZBhqpUihQHxC7LEddq5a1eLe5P+/Ob4TnJrdocP38qO1n9MCuO+cJSUTGUtZb1X3bQ==} + eslint-plugin-turbo@2.7.4: + resolution: {integrity: sha512-kye4pyGpZMJLgykeRDYTK2kpzHFw7kWlaio66Y4dL/9IMa7cIXirvvHVryV8D7ni3eOsHZYYQ9k0nADKNnecjQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -10400,38 +10400,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.7.3: - resolution: {integrity: sha512-aZHhvRiRHXbJw1EcEAq4aws1hsVVUZ9DPuSFaq9VVFAKCup7niIEwc22glxb7240yYEr1vLafdQ2U294Vcwz+w==} + turbo-darwin-64@2.7.4: + resolution: {integrity: sha512-xDR30ltfkSsRfGzABBckvl1nz1cZ3ssTujvdj+TPwOweeDRvZ0e06t5DS0rmRBvyKpgGs42K/EK6Mn2qLlFY9A==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.7.3: - resolution: {integrity: sha512-CkVrHSq+Bnhl9sX2LQgqQYVfLTWC2gvI74C4758OmU0djfrssDKU9d4YQF0AYXXhIIRZipSXfxClQziIMD+EAg==} + turbo-darwin-arm64@2.7.4: + resolution: {integrity: sha512-P7sjqXtOL/+nYWPvcDGWhi8wf8M8mZHHB8XEzw2VX7VJrS8IGHyJHGD1AYfDvhAEcr7pnk3gGifz3/xyhI655w==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.7.3: - resolution: {integrity: sha512-GqDsCNnzzr89kMaLGpRALyigUklzgxIrSy2pHZVXyifgczvYPnLglex78Aj3T2gu+T3trPPH2iJ+pWucVOCC2Q==} + turbo-linux-64@2.7.4: + resolution: {integrity: sha512-GofFOxRO/IhG8BcPyMSSB3Y2+oKQotsaYbHxL9yD6JPb20/o35eo+zUSyazOtilAwDHnak5dorAJFoFU8MIg2A==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.7.3: - resolution: {integrity: sha512-NdCDTfIcIo3dWjsiaAHlxu5gW61Ed/8maah1IAF/9E3EtX0aAHNiBMbuYLZaR4vRJ7BeVkYB6xKWRtdFLZ0y3g==} + turbo-linux-arm64@2.7.4: + resolution: {integrity: sha512-+RQKgNjksVPxYAyAgmDV7w/1qj++qca+nSNTAOKGOfJiDtSvRKoci89oftJ6anGs00uamLKVEQ712TI/tfNAIw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.7.3: - resolution: {integrity: sha512-7bVvO987daXGSJVYBoG8R4Q+csT1pKIgLJYZevXRQ0Hqw0Vv4mKme/TOjYXs9Qb1xMKh51Tb3bXKDbd8/4G08g==} + turbo-windows-64@2.7.4: + resolution: {integrity: sha512-rfak1+g+ON3czs1mDYsCS4X74ZmK6gOgRQTXjDICtzvR4o61paqtgAYtNPofcVsMWeF4wvCajSeoAkkeAnQ1kg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.7.3: - resolution: {integrity: sha512-nTodweTbPmkvwMu/a55XvjMsPtuyUSC+sV7f/SR57K36rB2I0YG21qNETN+00LOTUW9B3omd8XkiXJkt4kx/cw==} + turbo-windows-arm64@2.7.4: + resolution: {integrity: sha512-1ZgBNjNRbDu/fPeqXuX9i26x3CJ/Y1gcwUpQ+Vp7kN9Un6RZ9kzs164f/knrjcu5E+szCRexVjRSJay1k5jApA==} cpu: [arm64] os: [win32] - turbo@2.7.3: - resolution: {integrity: sha512-+HjKlP4OfYk+qzvWNETA3cUO5UuK6b5MSc2UJOKyvBceKucQoQGb2g7HlC2H1GHdkfKrk4YF1VPvROkhVZDDLQ==} + turbo@2.7.4: + resolution: {integrity: sha512-bkO4AddmDishzJB2ze7aYYPaejMoJVfS0XnaR6RCdXFOY8JGJfQE+l9fKiV7uDPa5Ut44gmOWJL3894CIMeH9g==} hasBin: true tweetnacl@0.14.5: @@ -13742,9 +13742,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.7.3(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3)': + '@turbo/gen@2.7.4(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3)': dependencies: - '@turbo/workspaces': 2.7.3 + '@turbo/workspaces': 2.7.4 commander: 10.0.0 fs-extra: 10.1.0 inquirer: 8.2.4 @@ -13762,7 +13762,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.7.3': + '@turbo/workspaces@2.7.4': dependencies: commander: 10.0.0 execa: 5.1.1 @@ -15932,11 +15932,11 @@ snapshots: dependencies: eslint: 9.39.2 - eslint-config-turbo@2.7.3(eslint@9.39.2)(turbo@2.7.3): + eslint-config-turbo@2.7.4(eslint@9.39.2)(turbo@2.7.4): dependencies: eslint: 9.39.2 - eslint-plugin-turbo: 2.7.3(eslint@9.39.2)(turbo@2.7.3) - turbo: 2.7.3 + eslint-plugin-turbo: 2.7.4(eslint@9.39.2)(turbo@2.7.4) + turbo: 2.7.4 eslint-import-resolver-node@0.3.9: dependencies: @@ -16036,11 +16036,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.7.3(eslint@9.39.2)(turbo@2.7.3): + eslint-plugin-turbo@2.7.4(eslint@9.39.2)(turbo@2.7.4): dependencies: dotenv: 16.0.3 eslint: 9.39.2 - turbo: 2.7.3 + turbo: 2.7.4 eslint-scope@5.1.1: dependencies: @@ -20312,32 +20312,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.7.3: + turbo-darwin-64@2.7.4: optional: true - turbo-darwin-arm64@2.7.3: + turbo-darwin-arm64@2.7.4: optional: true - turbo-linux-64@2.7.3: + turbo-linux-64@2.7.4: optional: true - turbo-linux-arm64@2.7.3: + turbo-linux-arm64@2.7.4: optional: true - turbo-windows-64@2.7.3: + turbo-windows-64@2.7.4: optional: true - turbo-windows-arm64@2.7.3: + turbo-windows-arm64@2.7.4: optional: true - turbo@2.7.3: + turbo@2.7.4: optionalDependencies: - turbo-darwin-64: 2.7.3 - turbo-darwin-arm64: 2.7.3 - turbo-linux-64: 2.7.3 - turbo-linux-arm64: 2.7.3 - turbo-windows-64: 2.7.3 - turbo-windows-arm64: 2.7.3 + turbo-darwin-64: 2.7.4 + turbo-darwin-arm64: 2.7.4 + turbo-linux-64: 2.7.4 + turbo-linux-arm64: 2.7.4 + turbo-windows-64: 2.7.4 + turbo-windows-arm64: 2.7.4 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 33aed94b4..f663a9d0f 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -19,7 +19,7 @@ "dependencies": { "@next/eslint-plugin-next": "16.1.1", "eslint-config-prettier": "^10.1.8", - "eslint-config-turbo": "^2.7.3", + "eslint-config-turbo": "^2.7.4", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", From fbad058712029ec8b1997072e28fd59d5ab1e21d Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:02:11 +0000 Subject: [PATCH 05/34] 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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index e0f6cb24d..38605430d 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -3295,10 +3295,10 @@ } }, "user": { - "title": "", + "title": "用户", "enableGravatar": { - "label": "", - "description": "" + "label": "启用Gravatar", + "description": "未设置自定义头像时,若用户有邮箱,则自动采用其 Libravatar/Gravatar 头像" } }, "search": { From 939996f41e7d49cc4876d81af82ad9ffd1e6dfa5 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 07:28:16 +0000 Subject: [PATCH 06/34] chore(deps): update dependency prettier-plugin-packagejson to ^2.5.21 (#4866) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 59 +++++++++++++---------------------- tooling/prettier/package.json | 2 +- 2 files changed, 23 insertions(+), 38 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e03cdd21b..edf52c20b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2395,8 +2395,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript prettier-plugin-packagejson: - specifier: ^2.5.20 - version: 2.5.20(prettier@3.7.4) + specifier: ^2.5.21 + version: 2.5.21(prettier@3.7.4) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -3961,10 +3961,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -9059,8 +9055,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@2.5.20: - resolution: {integrity: sha512-G8cowPh+QmJJECTZlrPDKWkVVcwrFjF2rGcw546w3N8blLoc4szSs8UUPfFVxHUNLUjiru71Ah83g1lZkeK9Bw==} + prettier-plugin-packagejson@2.5.21: + resolution: {integrity: sha512-d9ivsysb1SeRaKDhjf6Hi7jBGnP4TVsh7DeVi8N5HtHJ5vwD7YHcQIuy6jRkr2qGW/VKbrEVDWVMODuqcZuz8Q==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: @@ -10122,10 +10118,6 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} - engines: {node: ^14.18.0 || >=16.0.0} - tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} @@ -11337,8 +11329,8 @@ snapshots: '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 @@ -11364,14 +11356,14 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 transitivePeerDependencies: - supports-color @@ -11421,7 +11413,7 @@ snapshots: '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/helpers@7.28.6': dependencies: @@ -11442,7 +11434,7 @@ snapshots: '@babel/parser@7.28.5': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/parser@7.28.6': dependencies: @@ -11475,8 +11467,8 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@babel/template@7.28.6': dependencies: @@ -11513,9 +11505,9 @@ snapshots: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11525,9 +11517,9 @@ snapshots: '@babel/code-frame': 7.27.1 '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@babel/template': 7.27.2 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -12397,7 +12389,7 @@ snapshots: dependencies: '@antfu/ni': 0.21.12 '@axiomhq/js': 1.0.0-rc.3 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@babel/types': 7.26.0 '@clack/prompts': 0.7.0 ast-types: 0.14.2 @@ -12722,8 +12714,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.2.9': {} - '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -13792,16 +13782,16 @@ snapshots: '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@types/bcrypt@6.0.0': dependencies: @@ -18618,10 +18608,9 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.20(prettier@3.7.4): + prettier-plugin-packagejson@2.5.21(prettier@3.7.4): dependencies: sort-package-json: 3.5.0 - synckit: 0.11.11 optionalDependencies: prettier: 3.7.4 @@ -20006,10 +19995,6 @@ snapshots: symbol-tree@3.2.4: {} - synckit@0.11.11: - dependencies: - '@pkgr/core': 0.2.9 - tabbable@6.2.0: {} tagged-tag@1.0.0: {} diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index d91d3eb62..36217ca5f 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", - "prettier-plugin-packagejson": "^2.5.20", + "prettier-plugin-packagejson": "^2.5.21", "typescript": "^5.9.3" } } From 2e58acc3bd5da474bfe0636a58b43759947ef2d2 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 15:09:24 +0000 Subject: [PATCH 07/34] fix(deps): update dependency jotai to ^2.16.2 (#4869) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/spotlight/package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index c23a033d8..2013e5482 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -74,7 +74,7 @@ "flag-icons": "^7.5.0", "glob": "^13.0.0", "isomorphic-dompurify": "^2.35.0", - "jotai": "^2.16.1", + "jotai": "^2.16.2", "mantine-react-table": "2.0.0-beta.9", "next": "16.1.1", "postcss-preset-mantine": "^1.18.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index af0540de5..78a60f807 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -37,7 +37,7 @@ "@mantine/hooks": "^8.3.12", "@mantine/spotlight": "^8.3.12", "@tabler/icons-react": "^3.36.1", - "jotai": "^2.16.1", + "jotai": "^2.16.2", "next": "16.1.1", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index edf52c20b..2bccbbde5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,8 +287,8 @@ importers: 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.28.6)(@types/react@19.2.8)(react@19.2.3) + specifier: ^2.16.2 + version: 2.16.2(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) mantine-react-table: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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) @@ -1978,8 +1978,8 @@ importers: specifier: ^3.36.1 version: 3.36.1(react@19.2.3) jotai: - specifier: ^2.16.1 - version: 2.16.1(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) + specifier: ^2.16.2 + version: 2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(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.2) @@ -7780,8 +7780,8 @@ packages: jose@6.0.8: resolution: {integrity: sha512-EyUPtOKyTYq+iMOszO42eobQllaIjJnwkZ2U93aJzNyPibCy7CEvT9UQnaCVB51IAd49gbNdCew1c0LcLTCB2g==} - jotai@2.16.1: - resolution: {integrity: sha512-vrHcAbo3P7Br37C8Bv6JshMtlKMPqqmx0DDREtTjT4nf3QChDrYdbH+4ik/9V0cXA57dK28RkJ5dctYvavcIlg==} + jotai@2.16.2: + resolution: {integrity: sha512-DH0lBiTXvewsxtqqwjDW6Hg9JPTDnq9LcOsXSFWCAUEt+qj5ohl9iRVX9zQXPPHKLXCdH+5mGvM28fsXMl17/g==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -17232,14 +17232,14 @@ snapshots: jose@6.0.8: {} - jotai@2.16.1(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): + jotai@2.16.2(@babel/core@7.26.0)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): optionalDependencies: '@babel/core': 7.26.0 '@babel/template': 7.28.6 '@types/react': 19.2.8 react: 19.2.3 - jotai@2.16.1(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): + jotai@2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3): optionalDependencies: '@babel/core': 7.28.5 '@babel/template': 7.28.6 From fa64b2c525660f019668f8ff7b00c11ecb03ecf2 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:14:02 +0100 Subject: [PATCH 08/34] chore(deps): update dependency @types/dockerode to v4 (#4867) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/docker/package.json | 2 +- pnpm-lock.yaml | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/docker/package.json b/packages/docker/package.json index bd7bc1727..090fc092d 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/dockerode": "^3.3.47", + "@types/dockerode": "^4.0.0", "eslint": "^9.39.2", "typescript": "^5.9.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2bccbbde5..b5b62db4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1252,8 +1252,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/dockerode': - specifier: ^3.3.47 - version: 3.3.47 + specifier: ^4.0.0 + version: 4.0.0 eslint: specifier: ^9.39.2 version: 9.39.2 @@ -4881,6 +4881,9 @@ packages: '@types/dockerode@3.3.47': resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} + '@types/dockerode@4.0.0': + resolution: {integrity: sha512-NBm/UIL1KYWivh9ihJELK4Jv0dzOQCleS0OT5JklErra8mZ/t0UQpHfTkMmPrAqtra7OyFius1EFLVs0DhiHQA==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -13876,6 +13879,12 @@ snapshots: '@types/node': 24.10.7 '@types/ssh2': 1.15.1 + '@types/dockerode@4.0.0': + dependencies: + '@types/docker-modem': 3.0.6 + '@types/node': 24.10.7 + '@types/ssh2': 1.15.1 + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 From 9d4fb9eb462a0297618c70f619618f94d8857e1f Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:07:31 +0100 Subject: [PATCH 09/34] fix(deps): update dependency better-sqlite3 to ^12.6.0 (#4853) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- deployments/prebuilt-debian/package.json | 2 +- deployments/prebuilt-debian/pnpm-lock.yaml | 10 ++++---- packages/core/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 28 +++++++++++----------- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json index 6fcca1cbd..353adfbcc 100644 --- a/deployments/prebuilt-debian/package.json +++ b/deployments/prebuilt-debian/package.json @@ -2,7 +2,7 @@ "name": "homarr-prebuilt-debian", "private": true, "dependencies": { - "better-sqlite3": "^12.5.0" + "better-sqlite3": "^12.6.0" }, "packageManager": "pnpm@10.28.0", "engines": { diff --git a/deployments/prebuilt-debian/pnpm-lock.yaml b/deployments/prebuilt-debian/pnpm-lock.yaml index 1868baaa2..19f0fc6a4 100644 --- a/deployments/prebuilt-debian/pnpm-lock.yaml +++ b/deployments/prebuilt-debian/pnpm-lock.yaml @@ -9,16 +9,16 @@ importers: .: dependencies: better-sqlite3: - specifier: ^12.5.0 - version: 12.5.0 + specifier: ^12.6.0 + version: 12.6.2 packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - better-sqlite3@12.5.0: - resolution: {integrity: sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==} + better-sqlite3@12.6.2: + resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bindings@1.5.0: @@ -147,7 +147,7 @@ snapshots: base64-js@1.5.1: {} - better-sqlite3@12.5.0: + better-sqlite3@12.6.2: dependencies: bindings: 1.5.0 prebuild-install: 7.1.3 diff --git a/packages/core/package.json b/packages/core/package.json index 6d727881e..3e3398a96 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,7 +38,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@t3-oss/env-nextjs": "^0.13.10", - "better-sqlite3": "^12.5.0", + "better-sqlite3": "^12.6.0", "dns-caching": "^0.2.9", "drizzle-orm": "^0.45.1", "ioredis": "5.9.1", diff --git a/packages/db/package.json b/packages/db/package.json index c959fd117..c1770e960 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -51,7 +51,7 @@ "@paralleldrive/cuid2": "^3.1.0", "@testcontainers/mysql": "^11.11.0", "@testcontainers/postgresql": "^11.11.0", - "better-sqlite3": "^12.5.0", + "better-sqlite3": "^12.6.0", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", "drizzle-orm": "^0.45.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b5b62db4a..7c9e6ba91 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -881,14 +881,14 @@ importers: specifier: ^0.13.10 version: 0.13.10(arktype@2.1.20)(typescript@5.9.3)(zod@4.2.1) better-sqlite3: - specifier: ^12.5.0 - version: 12.5.0 + specifier: ^12.6.0 + version: 12.6.0 dns-caching: specifier: ^0.2.9 version: 0.2.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) ioredis: specifier: 5.9.1 version: 5.9.1 @@ -1141,8 +1141,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 better-sqlite3: - specifier: ^12.5.0 - version: 12.5.0 + specifier: ^12.6.0 + version: 12.6.0 dotenv: specifier: ^17.2.3 version: 17.2.3 @@ -1151,10 +1151,10 @@ importers: version: 0.31.8 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1) + version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1) mysql2: specifier: 3.16.0 version: 3.16.0 @@ -5593,8 +5593,8 @@ packages: before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} - better-sqlite3@12.5.0: - resolution: {integrity: sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==} + better-sqlite3@12.6.0: + resolution: {integrity: sha512-FXI191x+D6UPWSze5IzZjhz+i9MK9nsuHsmTX9bXVl52k06AfZ2xql0lrgIUuzsMsJ7Vgl5kIptvDgBLIV3ZSQ==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bidi-js@1.0.3: @@ -14735,7 +14735,7 @@ snapshots: before-after-hook@4.0.0: {} - better-sqlite3@12.5.0: + better-sqlite3@12.6.0: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -15506,19 +15506,19 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3): + drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.16.0 - better-sqlite3: 12.5.0 + better-sqlite3: 12.6.0 gel: 2.0.0 mysql2: 3.16.0 pg: 8.16.3 - drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1): + drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1): dependencies: - drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) zod: 4.2.1 dunder-proto@1.0.1: From 624bd55b117b2b9f9109aecdeabf1515c567656e Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 06:48:02 +0000 Subject: [PATCH 10/34] fix(deps): update dependency @tanstack/react-query to ^5.90.17 (#4873) 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 | 62 +++++++++++++++--------------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 2013e5482..0b1f473a9 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -56,7 +56,7 @@ "@mantine/tiptap": "^8.3.12", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.36.1", - "@tanstack/react-query": "^5.90.16", + "@tanstack/react-query": "^5.90.17", "@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 a1543085c..79674c2a9 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.16", + "@tanstack/react-query": "^5.90.17", "@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 3859d20d1..6a0c68d07 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.16", + "@tanstack/react-query": "^5.90.17", "@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 7c9e6ba91..289d262fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -233,23 +233,23 @@ importers: specifier: ^3.36.1 version: 3.36.1(react@19.2.3) '@tanstack/react-query': - specifier: ^5.90.16 - version: 5.90.16(react@19.2.3) + specifier: ^5.90.17 + version: 5.90.17(react@19.2.3) '@tanstack/react-query-devtools': specifier: ^5.91.2 - version: 5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3) + version: 5.91.2(@tanstack/react-query@5.90.17(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.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.2))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.17(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.2))(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.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.2))(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.17(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.17(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.2))(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.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) + version: 11.8.1(@tanstack/react-query@5.90.17(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.16 - version: 5.90.16(react@19.2.3) + specifier: ^5.90.17 + version: 5.90.17(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.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) + version: 11.8.1(@tanstack/react-query@5.90.17(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.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) + version: 11.8.1(@tanstack/react-query@5.90.17(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.16 - version: 5.90.16(react@19.2.3) + specifier: ^5.90.17 + version: 5.90.17(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.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) + version: 11.8.1(@tanstack/react-query@5.90.17(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 @@ -4443,8 +4443,8 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.90.16': - resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==} + '@tanstack/query-core@5.90.17': + resolution: {integrity: sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ==} '@tanstack/query-devtools@5.92.0': resolution: {integrity: sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==} @@ -4462,8 +4462,8 @@ packages: next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query@5.90.16': - resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==} + '@tanstack/react-query@5.90.17': + resolution: {integrity: sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ==} peerDependencies: react: ^18 || ^19 @@ -13392,25 +13392,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.90.16': {} + '@tanstack/query-core@5.90.17': {} '@tanstack/query-devtools@5.92.0': {} - '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.16(react@19.2.3))(react@19.2.3)': + '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.17(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/query-devtools': 5.92.0 - '@tanstack/react-query': 5.90.16(react@19.2.3) + '@tanstack/react-query': 5.90.17(react@19.2.3) 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.2))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.17(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.2))(react@19.2.3)': dependencies: - '@tanstack/react-query': 5.90.16(react@19.2.3) + '@tanstack/react-query': 5.90.17(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.2) react: 19.2.3 - '@tanstack/react-query@5.90.16(react@19.2.3)': + '@tanstack/react-query@5.90.17(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.90.16 + '@tanstack/query-core': 5.90.17 react: 19.2.3 '@tanstack/react-table@8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': @@ -13691,7 +13691,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.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.2))(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.17(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.17(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.2))(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) @@ -13700,12 +13700,12 @@ snapshots: react-dom: 19.2.3(react@19.2.3) typescript: 5.9.3 optionalDependencies: - '@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) + '@tanstack/react-query': 5.90.17(react@19.2.3) + '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.17(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)': + '@trpc/react-query@11.8.1(@tanstack/react-query@5.90.17(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.16(react@19.2.3) + '@tanstack/react-query': 5.90.17(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 @@ -13716,9 +13716,9 @@ snapshots: dependencies: 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)': + '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.17(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.16(react@19.2.3) + '@tanstack/react-query': 5.90.17(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 From b923891fac4cd61c5a1a8505d5bcfb737255196f Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 18:41:55 +0000 Subject: [PATCH 11/34] fix(deps): update dependency pg to ^8.17.0 (#4874) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 61 +++++++++++++++++++++----------------- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 3e3398a96..a67bb3c1b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -43,7 +43,7 @@ "drizzle-orm": "^0.45.1", "ioredis": "5.9.1", "mysql2": "3.16.0", - "pg": "^8.16.3", + "pg": "^8.17.0", "superjson": "2.2.6", "winston": "3.19.0", "zod": "^4.2.1" diff --git a/packages/db/package.json b/packages/db/package.json index c1770e960..c850b4b04 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,7 +57,7 @@ "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", "mysql2": "3.16.0", - "pg": "^8.16.3", + "pg": "^8.17.0", "superjson": "2.2.6" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 289d262fe..30cb0f78d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -888,7 +888,7 @@ importers: version: 0.2.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) ioredis: specifier: 5.9.1 version: 5.9.1 @@ -896,8 +896,8 @@ importers: specifier: 3.16.0 version: 3.16.0 pg: - specifier: ^8.16.3 - version: 8.16.3 + specifier: ^8.17.0 + version: 8.17.1 superjson: specifier: 2.2.6 version: 2.2.6 @@ -1151,16 +1151,16 @@ importers: version: 0.31.8 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1) + version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1))(zod@4.2.1) mysql2: specifier: 3.16.0 version: 3.16.0 pg: - specifier: ^8.16.3 - version: 8.16.3 + specifier: ^8.17.0 + version: 8.17.1 superjson: specifier: 2.2.6 version: 2.2.6 @@ -8890,30 +8890,33 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pg-cloudflare@1.2.7: - resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} - pg-connection-string@2.9.1: - resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + pg-connection-string@2.10.0: + resolution: {integrity: sha512-ur/eoPKzDx2IjPaYyXS6Y8NSblxM7X64deV2ObV57vhjsWiwLvUD6meukAzogiOsu60GO8m/3Cb6FdJsWNjwXg==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.10.1: - resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + pg-pool@3.11.0: + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} peerDependencies: pg: '>=8.0' pg-protocol@1.10.3: resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} + pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.16.3: - resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + pg@8.17.1: + resolution: {integrity: sha512-EIR+jXdYNSMOrpRp7g6WgQr7SaZNZfS7IzZIO0oTNEeibq956JxeD15t3Jk3zZH0KH8DmOIx38qJfQenoE8bXQ==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -15506,7 +15509,7 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3): + drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 @@ -15514,11 +15517,11 @@ snapshots: better-sqlite3: 12.6.0 gel: 2.0.0 mysql2: 3.16.0 - pg: 8.16.3 + pg: 8.17.1 - drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3))(zod@4.2.1): + drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1))(zod@4.2.1): dependencies: - drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.16.3) + drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) zod: 4.2.1 dunder-proto@1.0.1: @@ -18445,19 +18448,21 @@ snapshots: pathe@2.0.3: {} - pg-cloudflare@1.2.7: + pg-cloudflare@1.3.0: optional: true - pg-connection-string@2.9.1: {} + pg-connection-string@2.10.0: {} pg-int8@1.0.1: {} - pg-pool@3.10.1(pg@8.16.3): + pg-pool@3.11.0(pg@8.17.1): dependencies: - pg: 8.16.3 + pg: 8.17.1 pg-protocol@1.10.3: {} + pg-protocol@1.11.0: {} + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -18466,15 +18471,15 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.16.3: + pg@8.17.1: dependencies: - pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.16.3) - pg-protocol: 1.10.3 + pg-connection-string: 2.10.0 + pg-pool: 3.11.0(pg@8.17.1) + pg-protocol: 1.11.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.7 + pg-cloudflare: 1.3.0 pgpass@1.0.5: dependencies: From 1623fbaaeb41b16e13dcd401a00f70711a283bf9 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Mon, 19 Jan 2026 22:37:05 +0100 Subject: [PATCH 12/34] perf(memory): lazy routers (#4868) --- packages/api/src/root.ts | 74 +++++++------------ .../kubernetes/router/kubernetes-router.ts | 29 +++----- packages/api/src/router/widgets/index.ts | 65 ++++++---------- 3 files changed, 60 insertions(+), 108 deletions(-) diff --git a/packages/api/src/root.ts b/packages/api/src/root.ts index 6efc10ca5..75fd51855 100644 --- a/packages/api/src/root.ts +++ b/packages/api/src/root.ts @@ -1,54 +1,32 @@ -import { apiKeysRouter } from "./router/apiKeys"; -import { appRouter as innerAppRouter } from "./router/app"; -import { boardRouter } from "./router/board"; -import { certificateRouter } from "./router/certificates/certificate-router"; -import { cronJobsRouter } from "./router/cron-jobs"; -import { dockerRouter } from "./router/docker/docker-router"; -import { groupRouter } from "./router/group"; -import { homeRouter } from "./router/home"; -import { iconsRouter } from "./router/icons"; -import { importRouter } from "./router/import/import-router"; -import { infoRouter } from "./router/info"; -import { integrationRouter } from "./router/integration/integration-router"; -import { inviteRouter } from "./router/invite"; -import { kubernetesRouter } from "./router/kubernetes/router/kubernetes-router"; -import { locationRouter } from "./router/location"; -import { logRouter } from "./router/log"; -import { mediaRouter } from "./router/medias/media-router"; -import { onboardRouter } from "./router/onboard/onboard-router"; -import { searchEngineRouter } from "./router/search-engine/search-engine-router"; -import { sectionRouter } from "./router/section/section-router"; -import { serverSettingsRouter } from "./router/serverSettings"; -import { updateCheckerRouter } from "./router/update-checker"; -import { userRouter } from "./router/user"; -import { widgetRouter } from "./router/widgets"; +import { lazy } from "@trpc/server"; + import { createTRPCRouter } from "./trpc"; export const appRouter = createTRPCRouter({ - user: userRouter, - group: groupRouter, - invite: inviteRouter, - integration: integrationRouter, - board: boardRouter, - section: sectionRouter, - app: innerAppRouter, - searchEngine: searchEngineRouter, - widget: widgetRouter, - location: locationRouter, - log: logRouter, - icon: iconsRouter, - import: importRouter, - onboard: onboardRouter, - home: homeRouter, - docker: dockerRouter, - kubernetes: kubernetesRouter, - serverSettings: serverSettingsRouter, - cronJobs: cronJobsRouter, - apiKeys: apiKeysRouter, - media: mediaRouter, - updateChecker: updateCheckerRouter, - certificates: certificateRouter, - info: infoRouter, + user: lazy(() => import("./router/user").then((mod) => mod.userRouter)), + group: lazy(() => import("./router/group").then((mod) => mod.groupRouter)), + invite: lazy(() => import("./router/invite").then((mod) => mod.inviteRouter)), + integration: lazy(() => import("./router/integration/integration-router").then((mod) => mod.integrationRouter)), + board: lazy(() => import("./router/board").then((mod) => mod.boardRouter)), + section: lazy(() => import("./router/section/section-router").then((mod) => mod.sectionRouter)), + app: lazy(() => import("./router/app").then((mod) => mod.appRouter)), + searchEngine: lazy(() => import("./router/search-engine/search-engine-router").then((mod) => mod.searchEngineRouter)), + widget: lazy(() => import("./router/widgets").then((mod) => mod.widgetRouter)), + location: lazy(() => import("./router/location").then((mod) => mod.locationRouter)), + log: lazy(() => import("./router/log").then((mod) => mod.logRouter)), + icon: lazy(() => import("./router/icons").then((mod) => mod.iconsRouter)), + import: lazy(() => import("./router/import/import-router").then((mod) => mod.importRouter)), + onboard: lazy(() => import("./router/onboard/onboard-router").then((mod) => mod.onboardRouter)), + home: lazy(() => import("./router/home").then((mod) => mod.homeRouter)), + docker: lazy(() => import("./router/docker/docker-router").then((mod) => mod.dockerRouter)), + kubernetes: lazy(() => import("./router/kubernetes/router/kubernetes-router").then((mod) => mod.kubernetesRouter)), + serverSettings: lazy(() => import("./router/serverSettings").then((mod) => mod.serverSettingsRouter)), + cronJobs: lazy(() => import("./router/cron-jobs").then((mod) => mod.cronJobsRouter)), + apiKeys: lazy(() => import("./router/apiKeys").then((mod) => mod.apiKeysRouter)), + media: lazy(() => import("./router/medias/media-router").then((mod) => mod.mediaRouter)), + updateChecker: lazy(() => import("./router/update-checker").then((mod) => mod.updateCheckerRouter)), + certificates: lazy(() => import("./router/certificates/certificate-router").then((mod) => mod.certificateRouter)), + info: lazy(() => import("./router/info").then((mod) => mod.infoRouter)), }); // export type definition of API diff --git a/packages/api/src/router/kubernetes/router/kubernetes-router.ts b/packages/api/src/router/kubernetes/router/kubernetes-router.ts index ad9667c69..57644c13d 100644 --- a/packages/api/src/router/kubernetes/router/kubernetes-router.ts +++ b/packages/api/src/router/kubernetes/router/kubernetes-router.ts @@ -1,22 +1,15 @@ +import { lazy } from "@trpc/server"; + import { createTRPCRouter } from "../../../trpc"; -import { clusterRouter } from "./cluster"; -import { configMapsRouter } from "./configMaps"; -import { ingressesRouter } from "./ingresses"; -import { namespacesRouter } from "./namespaces"; -import { nodesRouter } from "./nodes"; -import { podsRouter } from "./pods"; -import { secretsRouter } from "./secrets"; -import { servicesRouter } from "./services"; -import { volumesRouter } from "./volumes"; export const kubernetesRouter = createTRPCRouter({ - nodes: nodesRouter, - cluster: clusterRouter, - namespaces: namespacesRouter, - ingresses: ingressesRouter, - services: servicesRouter, - pods: podsRouter, - secrets: secretsRouter, - configMaps: configMapsRouter, - volumes: volumesRouter, + nodes: lazy(() => import("./nodes").then((mod) => mod.nodesRouter)), + cluster: lazy(() => import("./cluster").then((mod) => mod.clusterRouter)), + namespaces: lazy(() => import("./namespaces").then((mod) => mod.namespacesRouter)), + ingresses: lazy(() => import("./ingresses").then((mod) => mod.ingressesRouter)), + services: lazy(() => import("./services").then((mod) => mod.servicesRouter)), + pods: lazy(() => import("./pods").then((mod) => mod.podsRouter)), + secrets: lazy(() => import("./secrets").then((mod) => mod.secretsRouter)), + configMaps: lazy(() => import("./configMaps").then((mod) => mod.configMapsRouter)), + volumes: lazy(() => import("./volumes").then((mod) => mod.volumesRouter)), }); diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index 8175aaab3..cac890f97 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -1,46 +1,27 @@ +import { lazy } from "@trpc/server"; + import { createTRPCRouter } from "../../trpc"; -import { appRouter } from "./app"; -import { calendarRouter } from "./calendar"; -import { dnsHoleRouter } from "./dns-hole"; -import { downloadsRouter } from "./downloads"; -import { firewallRouter } from "./firewall"; -import { healthMonitoringRouter } from "./health-monitoring"; -import { indexerManagerRouter } from "./indexer-manager"; -import { mediaReleaseRouter } from "./media-release"; -import { mediaRequestsRouter } from "./media-requests"; -import { mediaServerRouter } from "./media-server"; -import { mediaTranscodingRouter } from "./media-transcoding"; -import { minecraftRouter } from "./minecraft"; -import { networkControllerRouter } from "./network-controller"; -import { notebookRouter } from "./notebook"; -import { notificationsRouter } from "./notifications"; -import { optionsRouter } from "./options"; -import { releasesRouter } from "./releases"; -import { rssFeedRouter } from "./rssFeed"; -import { smartHomeRouter } from "./smart-home"; -import { stockPriceRouter } from "./stocks"; -import { weatherRouter } from "./weather"; export const widgetRouter = createTRPCRouter({ - notebook: notebookRouter, - weather: weatherRouter, - app: appRouter, - dnsHole: dnsHoleRouter, - smartHome: smartHomeRouter, - stockPrice: stockPriceRouter, - mediaServer: mediaServerRouter, - mediaRelease: mediaReleaseRouter, - calendar: calendarRouter, - downloads: downloadsRouter, - mediaRequests: mediaRequestsRouter, - rssFeed: rssFeedRouter, - indexerManager: indexerManagerRouter, - healthMonitoring: healthMonitoringRouter, - mediaTranscoding: mediaTranscodingRouter, - minecraft: minecraftRouter, - options: optionsRouter, - releases: releasesRouter, - networkController: networkControllerRouter, - firewall: firewallRouter, - notifications: notificationsRouter, + notebook: lazy(() => import("./notebook").then((mod) => mod.notebookRouter)), + weather: lazy(() => import("./weather").then((mod) => mod.weatherRouter)), + app: lazy(() => import("./app").then((mod) => mod.appRouter)), + dnsHole: lazy(() => import("./dns-hole").then((mod) => mod.dnsHoleRouter)), + smartHome: lazy(() => import("./smart-home").then((mod) => mod.smartHomeRouter)), + stockPrice: lazy(() => import("./stocks").then((mod) => mod.stockPriceRouter)), + mediaServer: lazy(() => import("./media-server").then((mod) => mod.mediaServerRouter)), + mediaRelease: lazy(() => import("./media-release").then((mod) => mod.mediaReleaseRouter)), + calendar: lazy(() => import("./calendar").then((mod) => mod.calendarRouter)), + downloads: lazy(() => import("./downloads").then((mod) => mod.downloadsRouter)), + mediaRequests: lazy(() => import("./media-requests").then((mod) => mod.mediaRequestsRouter)), + rssFeed: lazy(() => import("./rssFeed").then((mod) => mod.rssFeedRouter)), + indexerManager: lazy(() => import("./indexer-manager").then((mod) => mod.indexerManagerRouter)), + healthMonitoring: lazy(() => import("./health-monitoring").then((mod) => mod.healthMonitoringRouter)), + mediaTranscoding: lazy(() => import("./media-transcoding").then((mod) => mod.mediaTranscodingRouter)), + minecraft: lazy(() => import("./minecraft").then((mod) => mod.minecraftRouter)), + options: lazy(() => import("./options").then((mod) => mod.optionsRouter)), + releases: lazy(() => import("./releases").then((mod) => mod.releasesRouter)), + networkController: lazy(() => import("./network-controller").then((mod) => mod.networkControllerRouter)), + firewall: lazy(() => import("./firewall").then((mod) => mod.firewallRouter)), + notifications: lazy(() => import("./notifications").then((mod) => mod.notificationsRouter)), }); From c6be8c5475722e5a6dbc886e5e7f24ef8a04c470 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 23:29:51 +0000 Subject: [PATCH 13/34] fix(deps): update nextjs monorepo to v16.1.2 (#4875) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/common/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/old-import/package.json | 2 +- packages/settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 176 ++++++++++++------------ tooling/eslint/package.json | 2 +- 13 files changed, 100 insertions(+), 100 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 0b1f473a9..2f093b3bb 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -76,7 +76,7 @@ "isomorphic-dompurify": "^2.35.0", "jotai": "^2.16.2", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.1", + "next": "16.1.2", "postcss-preset-mantine": "^1.18.0", "prismjs": "^1.30.0", "react": "19.2.3", diff --git a/packages/api/package.json b/packages/api/package.json index 79674c2a9..14e32244c 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -47,7 +47,7 @@ "@trpc/server": "^11.8.1", "@trpc/tanstack-react-query": "^11.8.1", "lodash.clonedeep": "^4.5.0", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "superjson": "2.2.6", diff --git a/packages/auth/package.json b/packages/auth/package.json index 63b0db014..786c17154 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -34,7 +34,7 @@ "bcrypt": "^6.0.0", "cookies": "^0.9.1", "ldapts": "8.1.3", - "next": "16.1.1", + "next": "16.1.2", "next-auth": "5.0.0-beta.30", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/common/package.json b/packages/common/package.json index 2ee751647..f12ef5950 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -29,7 +29,7 @@ "@homarr/core": "workspace:^0.1.0", "@paralleldrive/cuid2": "^3.1.0", "dayjs": "^1.11.19", - "next": "16.1.1", + "next": "16.1.2", "octokit": "^5.0.5", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 27e63230f..9a03d2cd1 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -36,7 +36,7 @@ "@mantine/core": "^8.3.12", "@tabler/icons-react": "^3.36.1", "dayjs": "^1.11.19", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "zod": "^4.2.1" diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 345a34326..c4fb5e679 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -40,7 +40,7 @@ "@mantine/core": "^8.3.12", "@mantine/hooks": "^8.3.12", "adm-zip": "0.5.16", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "superjson": "2.2.6", diff --git a/packages/settings/package.json b/packages/settings/package.json index fd50bc3a1..0722ae290 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -26,7 +26,7 @@ "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@mantine/dates": "^8.3.12", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3" }, diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 78a60f807..d180ce393 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -38,7 +38,7 @@ "@mantine/spotlight": "^8.3.12", "@tabler/icons-react": "^3.36.1", "jotai": "^2.16.2", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "use-deep-compare-effect": "^1.8.1" diff --git a/packages/translation/package.json b/packages/translation/package.json index e96a3e953..b6db42276 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,7 +32,7 @@ "dayjs": "^1.11.19", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.1", + "next": "16.1.2", "next-intl": "4.7.0", "react": "19.2.3", "react-dom": "19.2.3" diff --git a/packages/ui/package.json b/packages/ui/package.json index 9bfdbbfd4..17b7d2ce1 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -36,7 +36,7 @@ "@tabler/icons-react": "^3.36.1", "crypto-js": "^4.2.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "svgson": "^5.3.1" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 3bda2735e..d135b5ae4 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -72,7 +72,7 @@ "dayjs": "^1.11.19", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.1", + "next": "16.1.2", "react": "19.2.3", "react-dom": "19.2.3", "react-markdown": "^10.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30cb0f78d..e9d23cdb4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,13 +240,13 @@ importers: version: 5.91.2(@tanstack/react-query@5.90.17(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.17(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.2))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.17(react@19.2.3))(next@16.1.2(@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.2))(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.17(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.17(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.2))(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.17(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.17(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.2(@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.2))(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.17(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) @@ -293,8 +293,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) postcss-preset-mantine: specifier: ^1.18.0 version: 1.18.0(postcss@8.5.6) @@ -648,8 +648,8 @@ importers: specifier: ^4.5.0 version: 4.5.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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -718,11 +718,11 @@ importers: specifier: 8.1.3 version: 8.1.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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) next-auth: specifier: 5.0.0-beta.30 - version: 5.0.0-beta.30(next@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.2))(react@19.2.3) + version: 5.0.0-beta.30(next@16.1.2(@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.2))(react@19.2.3) react: specifier: 19.2.3 version: 19.2.3 @@ -838,8 +838,8 @@ importers: specifier: ^1.11.19 version: 1.11.19 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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) octokit: specifier: ^5.0.5 version: 5.0.5 @@ -1588,8 +1588,8 @@ importers: specifier: ^1.11.19 version: 1.11.19 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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1689,8 +1689,8 @@ importers: specifier: 0.5.16 version: 0.5.16 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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1908,8 +1908,8 @@ importers: specifier: ^8.3.12 version: 8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(react@19.2.3))(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1981,8 +1981,8 @@ importers: specifier: ^2.16.2 version: 2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2027,11 +2027,11 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) next-intl: specifier: 4.7.0 - version: 4.7.0(next@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.2))(react@19.2.3)(typescript@5.9.3) + version: 4.7.0(next@16.1.2(@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.2))(react@19.2.3)(typescript@5.9.3) react: specifier: 19.2.3 version: 19.2.3 @@ -2091,8 +2091,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2300,8 +2300,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2) + specifier: 16.1.2 + version: 16.1.2(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2343,8 +2343,8 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: 16.1.1 - version: 16.1.1 + specifier: 16.1.2 + version: 16.1.2 eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) @@ -3672,60 +3672,60 @@ packages: '@ndaidong/bellajs@12.0.1': resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==} - '@next/env@16.1.1': - resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==} + '@next/env@16.1.2': + resolution: {integrity: sha512-r6TpLovDTvWtzw11UubUQxEK6IduT8rSAHbGX68yeFpA/1Oq9R4ovi5nqMUMgPN0jr2SpfeyFRbTZg3Inuuv3g==} - '@next/eslint-plugin-next@16.1.1': - resolution: {integrity: sha512-Ovb/6TuLKbE1UiPcg0p39Ke3puyTCIKN9hGbNItmpQsp+WX3qrjO3WaMVSi6JHr9X1NrmthqIguVHodMJbh/dw==} + '@next/eslint-plugin-next@16.1.2': + resolution: {integrity: sha512-jjO5BKDxZEXt2VCAnAG/ldULnpxeXspjCo9AZErV3Lm5HmNj8r2rS+eUMIAAj6mXPAOiPqAMgVPGnkyhPyDx4g==} - '@next/swc-darwin-arm64@16.1.1': - resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==} + '@next/swc-darwin-arm64@16.1.2': + resolution: {integrity: sha512-0N2baysDpTXASTVxTV+DkBnD97bo9PatUj8sHlKA+oR9CyvReaPQchQyhCbH0Jm0mC/Oka5F52intN+lNOhSlA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.1': - resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==} + '@next/swc-darwin-x64@16.1.2': + resolution: {integrity: sha512-Q0wnSK0lmeC9ps+/w/bDsMSF3iWS45WEwF1bg8dvMH3CmKB2BV4346tVrjWxAkrZq20Ro6Of3R19IgrEJkXKyw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.1': - resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==} + '@next/swc-linux-arm64-gnu@16.1.2': + resolution: {integrity: sha512-4twW+h7ZatGKWq+2pUQ9SDiin6kfZE/mY+D8jOhSZ0NDzKhQfAPReXqwTDWVrNjvLzHzOcDL5kYjADHfXL/b/Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.1.1': - resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==} + '@next/swc-linux-arm64-musl@16.1.2': + resolution: {integrity: sha512-Sn6LxPIZcADe5AnqqMCfwBv6vRtDikhtrjwhu+19WM6jHZe31JDRcGuPZAlJrDk6aEbNBPUUAKmySJELkBOesg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.1.1': - resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==} + '@next/swc-linux-x64-gnu@16.1.2': + resolution: {integrity: sha512-nwzesEQBfQIOOnQ7JArzB08w9qwvBQ7nC1i8gb0tiEFH94apzQM3IRpY19MlE8RBHxc9ArG26t1DEg2aaLaqVQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.1.1': - resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==} + '@next/swc-linux-x64-musl@16.1.2': + resolution: {integrity: sha512-s60bLf16BDoICQHeKEm0lDgUNMsL1UpQCkRNZk08ZNnRpK0QUV+6TvVHuBcIA7oItzU0m7kVmXe8QjXngYxJVA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.1.1': - resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==} + '@next/swc-win32-arm64-msvc@16.1.2': + resolution: {integrity: sha512-Sq8k4SZd8Y8EokKdz304TvMO9HoiwGzo0CTacaiN1bBtbJSQ1BIwKzNFeFdxOe93SHn1YGnKXG6Mq3N+tVooyQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.1': - resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==} + '@next/swc-win32-x64-msvc@16.1.2': + resolution: {integrity: sha512-KQDBwspSaNX5/wwt6p7ed5oINJWIxcgpuqJdDNubAyq7dD+ZM76NuEjg8yUxNOl5R4NNgbMfqE/RyNrsbYmOKg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -8410,8 +8410,8 @@ packages: typescript: optional: true - next@16.1.1: - resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==} + next@16.1.2: + resolution: {integrity: sha512-SVSWX7wjUUDrIDVqhl4xm/jiOrvYGMG7NzVE/dGzzgs7r3dFGm4V19ia0xn3GDNtHCKM7C9h+5BoimnJBhmt9A==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -12446,34 +12446,34 @@ snapshots: '@ndaidong/bellajs@12.0.1': {} - '@next/env@16.1.1': {} + '@next/env@16.1.2': {} - '@next/eslint-plugin-next@16.1.1': + '@next/eslint-plugin-next@16.1.2': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@16.1.1': + '@next/swc-darwin-arm64@16.1.2': optional: true - '@next/swc-darwin-x64@16.1.1': + '@next/swc-darwin-x64@16.1.2': optional: true - '@next/swc-linux-arm64-gnu@16.1.1': + '@next/swc-linux-arm64-gnu@16.1.2': optional: true - '@next/swc-linux-arm64-musl@16.1.1': + '@next/swc-linux-arm64-musl@16.1.2': optional: true - '@next/swc-linux-x64-gnu@16.1.1': + '@next/swc-linux-x64-gnu@16.1.2': optional: true - '@next/swc-linux-x64-musl@16.1.1': + '@next/swc-linux-x64-musl@16.1.2': optional: true - '@next/swc-win32-arm64-msvc@16.1.1': + '@next/swc-win32-arm64-msvc@16.1.2': optional: true - '@next/swc-win32-x64-msvc@16.1.1': + '@next/swc-win32-x64-msvc@16.1.2': optional: true '@noble/hashes@2.0.1': {} @@ -13405,10 +13405,10 @@ snapshots: '@tanstack/react-query': 5.90.17(react@19.2.3) react: 19.2.3 - '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.17(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.2))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.17(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3)': dependencies: '@tanstack/react-query': 5.90.17(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.2) + next: 16.1.2(@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.2) react: 19.2.3 '@tanstack/react-query@5.90.17(react@19.2.3)': @@ -13694,11 +13694,11 @@ snapshots: '@trpc/server': 11.8.1(typescript@5.9.3) typescript: 5.9.3 - '@trpc/next@11.8.1(@tanstack/react-query@5.90.17(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.17(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.2))(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.17(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.17(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.2(@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.2))(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) - 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.2) + next: 16.1.2(@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.2) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) typescript: 5.9.3 @@ -17941,21 +17941,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.30(next@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.2))(react@19.2.3): + next-auth@5.0.0-beta.30(next@16.1.2(@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.2))(react@19.2.3): dependencies: '@auth/core': 0.41.0 - next: 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.2) + next: 16.1.2(@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.2) react: 19.2.3 next-intl-swc-plugin-extractor@4.7.0: {} - next-intl@4.7.0(next@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.2))(react@19.2.3)(typescript@5.9.3): + next-intl@4.7.0(next@16.1.2(@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.2))(react@19.2.3)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 '@parcel/watcher': 2.4.1 '@swc/core': 1.15.3 negotiator: 1.0.0 - next: 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.2) + next: 16.1.2(@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.2) next-intl-swc-plugin-extractor: 4.7.0 po-parser: 2.1.1 react: 19.2.3 @@ -17965,9 +17965,9 @@ snapshots: transitivePeerDependencies: - '@swc/helpers' - 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.2): + next@16.1.2(@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.2): dependencies: - '@next/env': 16.1.1 + '@next/env': 16.1.2 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 @@ -17976,14 +17976,14 @@ snapshots: react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.1 - '@next/swc-darwin-x64': 16.1.1 - '@next/swc-linux-arm64-gnu': 16.1.1 - '@next/swc-linux-arm64-musl': 16.1.1 - '@next/swc-linux-x64-gnu': 16.1.1 - '@next/swc-linux-x64-musl': 16.1.1 - '@next/swc-win32-arm64-msvc': 16.1.1 - '@next/swc-win32-x64-msvc': 16.1.1 + '@next/swc-darwin-arm64': 16.1.2 + '@next/swc-darwin-x64': 16.1.2 + '@next/swc-linux-arm64-gnu': 16.1.2 + '@next/swc-linux-arm64-musl': 16.1.2 + '@next/swc-linux-x64-gnu': 16.1.2 + '@next/swc-linux-x64-musl': 16.1.2 + '@next/swc-win32-arm64-msvc': 16.1.2 + '@next/swc-win32-x64-msvc': 16.1.2 babel-plugin-react-compiler: 1.0.0 sass: 1.97.2 sharp: 0.34.4 @@ -17991,9 +17991,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@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.2): + next@16.1.2(@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.2): dependencies: - '@next/env': 16.1.1 + '@next/env': 16.1.2 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 @@ -18002,14 +18002,14 @@ snapshots: react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.1 - '@next/swc-darwin-x64': 16.1.1 - '@next/swc-linux-arm64-gnu': 16.1.1 - '@next/swc-linux-arm64-musl': 16.1.1 - '@next/swc-linux-x64-gnu': 16.1.1 - '@next/swc-linux-x64-musl': 16.1.1 - '@next/swc-win32-arm64-msvc': 16.1.1 - '@next/swc-win32-x64-msvc': 16.1.1 + '@next/swc-darwin-arm64': 16.1.2 + '@next/swc-darwin-x64': 16.1.2 + '@next/swc-linux-arm64-gnu': 16.1.2 + '@next/swc-linux-arm64-musl': 16.1.2 + '@next/swc-linux-x64-gnu': 16.1.2 + '@next/swc-linux-x64-musl': 16.1.2 + '@next/swc-win32-arm64-msvc': 16.1.2 + '@next/swc-win32-x64-msvc': 16.1.2 babel-plugin-react-compiler: 1.0.0 sass: 1.97.2 sharp: 0.34.4 diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index f663a9d0f..497efe29d 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,7 +17,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "16.1.1", + "@next/eslint-plugin-next": "16.1.2", "eslint-config-prettier": "^10.1.8", "eslint-config-turbo": "^2.7.4", "eslint-plugin-import": "^2.32.0", From 3ade915d35540578a7f193baf99cbdbf89103b97 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 01:57:28 +0000 Subject: [PATCH 14/34] fix(deps): update dependency prettier to ^3.8.0 (#4876) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 64 +++++++++++++++++------------------ tooling/prettier/package.json | 2 +- 9 files changed, 40 insertions(+), 40 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 2f093b3bb..6fb23ce50 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -102,7 +102,7 @@ "concurrently": "^9.2.1", "eslint": "^9.39.2", "node-loader": "^2.1.0", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "typescript": "^5.9.3" } } diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 5e78458ef..44dfd25d3 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -51,7 +51,7 @@ "dotenv-cli": "^11.0.0", "esbuild": "^0.27.2", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/apps/websocket/package.json b/apps/websocket/package.json index 49f41e1b4..b5f789121 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -36,7 +36,7 @@ "@types/ws": "^8.18.1", "esbuild": "^0.27.2", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "typescript": "^5.9.3" } } diff --git a/package.json b/package.json index f7d3edfd2..6daa6bf38 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "cross-env": "^10.1.0", "jsdom": "^27.4.0", "json5": "^2.2.3", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "semantic-release": "^25.0.2", "testcontainers": "^11.11.0", "turbo": "^2.7.4", diff --git a/packages/api/package.json b/packages/api/package.json index 14e32244c..a4abbf253 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -59,7 +59,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "typescript": "^5.9.3" } } diff --git a/packages/auth/package.json b/packages/auth/package.json index 786c17154..e26fa18b3 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -47,7 +47,7 @@ "@types/bcrypt": "6.0.0", "@types/cookies": "0.9.2", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "typescript": "^5.9.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index c850b4b04..3be2baa26 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -69,7 +69,7 @@ "dotenv-cli": "^11.0.0", "esbuild": "^0.27.2", "eslint": "^9.39.2", - "prettier": "^3.7.4", + "prettier": "^3.8.0", "tsx": "4.20.4", "typescript": "^5.9.3" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9d23cdb4..c3e45b380 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,8 +86,8 @@ importers: specifier: ^2.2.3 version: 2.2.3 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 semantic-release: specifier: ^25.0.2 version: 25.0.2(typescript@5.9.3) @@ -366,8 +366,8 @@ importers: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0(@swc/core@1.15.3)) prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -463,8 +463,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 tsx: specifier: 4.20.4 version: 4.20.4 @@ -527,8 +527,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -679,8 +679,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -752,8 +752,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -1190,8 +1190,8 @@ importers: specifier: ^9.39.2 version: 9.39.2 prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 tsx: specifier: 4.20.4 version: 4.20.4 @@ -2386,17 +2386,17 @@ importers: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.7.0 - version: 4.7.0(prettier@3.7.4) + version: 4.7.0(prettier@3.8.0) prettier: - specifier: ^3.7.4 - version: 3.7.4 + specifier: ^3.8.0 + version: 3.8.0 devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 version: link:../typescript prettier-plugin-packagejson: specifier: ^2.5.21 - version: 2.5.21(prettier@3.7.4) + version: 2.5.21(prettier@3.8.0) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -9069,8 +9069,8 @@ packages: prettier: optional: true - prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + prettier@3.8.0: + resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} engines: {node: '>=14'} hasBin: true @@ -11319,8 +11319,8 @@ snapshots: '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.0.2 @@ -11428,7 +11428,7 @@ snapshots: '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 '@babel/parser@7.28.3': dependencies: @@ -11467,8 +11467,8 @@ snapshots: '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 '@babel/template@7.27.2': dependencies: @@ -11486,9 +11486,9 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/generator': 7.28.3 - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 '@babel/template': 7.25.9 - '@babel/types': 7.28.5 + '@babel/types': 7.28.6 debug: 4.4.3 globals: 11.12.0 transitivePeerDependencies: @@ -12081,13 +12081,13 @@ snapshots: '@humanwhocodes/retry@0.4.2': {} - '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.7.4)': + '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.8.0)': dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.3 '@babel/traverse': 7.28.3 '@babel/types': 7.28.2 - prettier: 3.7.4 + prettier: 3.8.0 semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -18622,13 +18622,13 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.21(prettier@3.7.4): + prettier-plugin-packagejson@2.5.21(prettier@3.8.0): dependencies: sort-package-json: 3.5.0 optionalDependencies: - prettier: 3.7.4 + prettier: 3.8.0 - prettier@3.7.4: {} + prettier@3.8.0: {} pretty-ms@8.0.0: dependencies: diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 36217ca5f..5a6eebc8c 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -11,7 +11,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.7.0", - "prettier": "^3.7.4" + "prettier": "^3.8.0" }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", From b9bc9dd38d22f03a0faa59a68056192c3f1519d4 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:55:34 +0000 Subject: [PATCH 15/34] fix(deps): update dependency fastify to ^5.7.0 (#4882) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 31 ++++++++++++------------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 44dfd25d3..9e8d95f09 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -39,7 +39,7 @@ "@homarr/widgets": "workspace:^0.1.0", "dayjs": "^1.11.19", "dotenv": "^17.2.3", - "fastify": "^5.6.2", + "fastify": "^5.7.0", "superjson": "2.2.6", "undici": "7.18.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3e45b380..6103bbed3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -432,8 +432,8 @@ importers: specifier: ^17.2.3 version: 17.2.3 fastify: - specifier: ^5.6.2 - version: 5.6.2 + specifier: ^5.7.0 + version: 5.7.1 superjson: specifier: 2.2.6 version: 2.2.6 @@ -3215,8 +3215,8 @@ packages: resolution: {integrity: sha512-eNeddvKK9rBxWSHj5zBo6ODihJqJtq+QzEQdVeadkOK48avmdela+c2JAfMcPEBMFaWcAYV4bUMhI9Tqi8mX2Q==} engines: {node: '>= 20'} - '@fastify/ajv-compiler@4.0.2': - resolution: {integrity: sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==} + '@fastify/ajv-compiler@4.0.5': + resolution: {integrity: sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==} '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} @@ -6873,8 +6873,8 @@ packages: peerDependencies: '@babel/types': ^7 - fastify@5.6.2: - resolution: {integrity: sha512-dPugdGnsvYkBlENLhCgX8yhyGCsCPrpA8lFWbTNU428l+YOnLgYHR69hzV8HWPC79n536EqzqQtvhtdaCE0dKg==} + fastify@5.7.1: + resolution: {integrity: sha512-ZW7S4fxlZhE+tYWVokFzjh+i56R+buYKNGhrVl6DtN8sxkyMEzpJnzvO8A/ZZrsg5w6X37u6I4EOQikYS5DXpA==} fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -9715,11 +9715,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -11942,7 +11937,7 @@ snapshots: transitivePeerDependencies: - encoding - '@fastify/ajv-compiler@4.0.2': + '@fastify/ajv-compiler@4.0.5': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) @@ -15114,7 +15109,7 @@ snapshots: conventional-commits-filter: 5.0.0 handlebars: 4.7.8 meow: 13.2.0 - semver: 7.7.2 + semver: 7.7.3 conventional-commits-filter@5.0.0: {} @@ -16255,9 +16250,9 @@ snapshots: dependencies: '@babel/types': 7.26.0 - fastify@5.6.2: + fastify@5.7.1: dependencies: - '@fastify/ajv-compiler': 4.0.2 + '@fastify/ajv-compiler': 4.0.5 '@fastify/error': 4.2.0 '@fastify/fast-json-stringify-compiler': 5.0.3 '@fastify/proxy-addr': 5.0.0 @@ -16270,7 +16265,7 @@ snapshots: process-warning: 5.0.0 rfdc: 1.4.1 secure-json-parse: 4.0.0 - semver: 7.7.2 + semver: 7.7.3 toad-cache: 3.7.0 fastq@1.17.1: @@ -19450,8 +19445,6 @@ snapshots: semver@7.6.3: {} - semver@7.7.1: {} - semver@7.7.2: {} semver@7.7.3: {} @@ -20590,7 +20583,7 @@ snapshots: pupa: 2.1.1 registry-auth-token: 5.0.2 registry-url: 5.1.0 - semver: 7.7.1 + semver: 7.7.3 semver-diff: 3.1.1 xdg-basedir: 4.0.0 transitivePeerDependencies: From fcd417198f4a1afc250455bf25594a32f61b1070 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:39:00 +0000 Subject: [PATCH 16/34] fix(deps): update dependency pg to ^8.17.1 (#4877) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index a67bb3c1b..842cb52e2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -43,7 +43,7 @@ "drizzle-orm": "^0.45.1", "ioredis": "5.9.1", "mysql2": "3.16.0", - "pg": "^8.17.0", + "pg": "^8.17.1", "superjson": "2.2.6", "winston": "3.19.0", "zod": "^4.2.1" diff --git a/packages/db/package.json b/packages/db/package.json index 3be2baa26..5dd8dde7d 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,7 +57,7 @@ "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", "mysql2": "3.16.0", - "pg": "^8.17.0", + "pg": "^8.17.1", "superjson": "2.2.6" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6103bbed3..0a6a97608 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -896,7 +896,7 @@ importers: specifier: 3.16.0 version: 3.16.0 pg: - specifier: ^8.17.0 + specifier: ^8.17.1 version: 8.17.1 superjson: specifier: 2.2.6 @@ -1159,7 +1159,7 @@ importers: specifier: 3.16.0 version: 3.16.0 pg: - specifier: ^8.17.0 + specifier: ^8.17.1 version: 8.17.1 superjson: specifier: 2.2.6 From e3ba1ee931b0e53fb94bf0e50fae81eecfade237 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 15:39:59 +0000 Subject: [PATCH 17/34] fix(deps): update dependency ioredis to v5.9.2 (#4881) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/redis/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 842cb52e2..967bb0f9a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -41,7 +41,7 @@ "better-sqlite3": "^12.6.0", "dns-caching": "^0.2.9", "drizzle-orm": "^0.45.1", - "ioredis": "5.9.1", + "ioredis": "5.9.2", "mysql2": "3.16.0", "pg": "^8.17.1", "superjson": "2.2.6", diff --git a/packages/redis/package.json b/packages/redis/package.json index bc8c47be0..c9fded548 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -26,7 +26,7 @@ "@homarr/core": "workspace:^", "@homarr/db": "workspace:^", "@homarr/definitions": "workspace:^", - "ioredis": "5.9.1", + "ioredis": "5.9.2", "superjson": "2.2.6" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a6a97608..6c518f53d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -890,8 +890,8 @@ importers: specifier: ^0.45.1 version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) ioredis: - specifier: 5.9.1 - version: 5.9.1 + specifier: 5.9.2 + version: 5.9.2 mysql2: specifier: 3.16.0 version: 3.16.0 @@ -1791,8 +1791,8 @@ importers: specifier: workspace:^ version: link:../definitions ioredis: - specifier: 5.9.1 - version: 5.9.1 + specifier: 5.9.2 + version: 5.9.2 superjson: specifier: 2.2.6 version: 2.2.6 @@ -7452,8 +7452,8 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ioredis@5.9.1: - resolution: {integrity: sha512-BXNqFQ66oOsR82g9ajFFsR8ZKrjVvYCLyeML9IvSMAsP56XH2VXBdZjmI11p65nXXJxTEt1hie3J2QeFJVgrtQ==} + ioredis@5.9.2: + resolution: {integrity: sha512-tAAg/72/VxOUW7RQSX1pIxJVucYKcjFjfvj60L57jrZpYCHC3XN0WCQ3sNYL4Gmvv+7GPvTAjc+KSdeNuE8oWQ==} engines: {node: '>=12.22.0'} ip-address@9.0.5: @@ -16909,7 +16909,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - ioredis@5.9.1: + ioredis@5.9.2: dependencies: '@ioredis/commands': 1.5.0 cluster-key-slot: 1.1.2 From 416e31fab6eac34a7dc860d2fb4f334b90c28796 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 00:58:31 +0000 Subject: [PATCH 18/34] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/pt.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 6ecb01fdb..a8464b673 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -530,7 +530,7 @@ "message": "" }, "error": { - "message": "" + "message": "Não é possível alterar a posição" } } } @@ -568,7 +568,7 @@ "notification": { "success": { "title": "", - "message": "" + "message": "O aplicativo foi salvo com sucesso" }, "error": { "title": "", @@ -684,7 +684,7 @@ }, "delete": { "title": "", - "message": "", + "message": "Tem certeza que deseja excluir a integração {name}?", "notification": { "success": { "title": "", From 02e722aa4531e816bb563628ebbb7e8b0cf93ce3 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 08:40:00 +0000 Subject: [PATCH 19/34] fix(deps): update dependency fastify to ^5.7.1 (#4887) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 9e8d95f09..76835a5f8 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -39,7 +39,7 @@ "@homarr/widgets": "workspace:^0.1.0", "dayjs": "^1.11.19", "dotenv": "^17.2.3", - "fastify": "^5.7.0", + "fastify": "^5.7.1", "superjson": "2.2.6", "undici": "7.18.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6c518f53d..0b6f076af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -432,7 +432,7 @@ importers: specifier: ^17.2.3 version: 17.2.3 fastify: - specifier: ^5.7.0 + specifier: ^5.7.1 version: 5.7.1 superjson: specifier: 2.2.6 From 40ee667832124075b0730a54a4b8019365ab8794 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 09:40:26 +0000 Subject: [PATCH 20/34] fix(deps): update dependency mysql2 to v3.16.1 (#4886) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 40 +++++++++++++++++++------------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 967bb0f9a..681db838f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,7 +42,7 @@ "dns-caching": "^0.2.9", "drizzle-orm": "^0.45.1", "ioredis": "5.9.2", - "mysql2": "3.16.0", + "mysql2": "3.16.1", "pg": "^8.17.1", "superjson": "2.2.6", "winston": "3.19.0", diff --git a/packages/db/package.json b/packages/db/package.json index 5dd8dde7d..9dcbcc2a5 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -56,7 +56,7 @@ "drizzle-kit": "^0.31.8", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", - "mysql2": "3.16.0", + "mysql2": "3.16.1", "pg": "^8.17.1", "superjson": "2.2.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b6f076af..5b99fea6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -888,13 +888,13 @@ importers: version: 0.2.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) ioredis: specifier: 5.9.2 version: 5.9.2 mysql2: - specifier: 3.16.0 - version: 3.16.0 + specifier: 3.16.1 + version: 3.16.1 pg: specifier: ^8.17.1 version: 8.17.1 @@ -1151,13 +1151,13 @@ importers: version: 0.31.8 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1))(zod@4.2.1) + version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1) mysql2: - specifier: 3.16.0 - version: 3.16.0 + specifier: 3.16.1 + version: 3.16.1 pg: specifier: ^8.17.1 version: 8.17.1 @@ -8329,16 +8329,16 @@ packages: engines: {node: '>=8', npm: '>=5'} hasBin: true - mysql2@3.16.0: - resolution: {integrity: sha512-AEGW7QLLSuSnjCS4pk3EIqOmogegmze9h8EyrndavUQnIUcfkVal/sK7QznE+a3bc6rzPbAiui9Jcb+96tPwYA==} + mysql2@3.16.1: + resolution: {integrity: sha512-b75qsDB3ieYEzMsT1uRGsztM/sy6vWPY40uPZlVVl8eefAotFCoS7jaDB5DxDNtlW5kdVGd9jptSpkvujNxI2A==} engines: {node: '>= 8.0'} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - named-placeholders@1.1.3: - resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} - engines: {node: '>=12.0.0'} + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} nan@2.20.0: resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} @@ -15504,19 +15504,19 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1): + drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.16.0 better-sqlite3: 12.6.0 gel: 2.0.0 - mysql2: 3.16.0 + mysql2: 3.16.1 pg: 8.17.1 - drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1))(zod@4.2.1): + drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1): dependencies: - drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.0)(pg@8.17.1) + drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) zod: 4.2.1 dunder-proto@1.0.1: @@ -17891,7 +17891,7 @@ snapshots: '@babel/runtime': 7.28.6 global: 4.4.0 - mysql2@3.16.0: + mysql2@3.16.1: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 @@ -17899,7 +17899,7 @@ snapshots: iconv-lite: 0.7.0 long: 5.2.3 lru.min: 1.1.0 - named-placeholders: 1.1.3 + named-placeholders: 1.1.6 seq-queue: 0.0.5 sqlstring: 2.3.3 @@ -17909,9 +17909,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - named-placeholders@1.1.3: + named-placeholders@1.1.6: dependencies: - lru-cache: 7.18.3 + lru.min: 1.1.0 nan@2.20.0: optional: true From c847f6004dc4c166969ee1248ec64b7d27ba8362 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 03:58:10 +0000 Subject: [PATCH 21/34] fix(deps): update turbo monorepo to ^2.7.5 (#4892) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- package.json | 4 +- pnpm-lock.yaml | 98 ++++++++++++++++++------------------- tooling/eslint/package.json | 2 +- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 6daa6bf38..7bb50353a 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "@semantic-release/npm": "^13.1.3", "@semantic-release/release-notes-generator": "^14.1.0", "@testcontainers/redis": "^11.11.0", - "@turbo/gen": "^2.7.4", + "@turbo/gen": "^2.7.5", "@vitejs/plugin-react": "^5.1.2", "@vitest/coverage-v8": "^4.0.17", "@vitest/ui": "^4.0.17", @@ -54,7 +54,7 @@ "prettier": "^3.8.0", "semantic-release": "^25.0.2", "testcontainers": "^11.11.0", - "turbo": "^2.7.4", + "turbo": "^2.7.5", "typescript": "^5.9.3", "vite-tsconfig-paths": "^6.0.4", "vitest": "^4.0.17" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b99fea6f..95274bd9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,8 +62,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 '@turbo/gen': - specifier: ^2.7.4 - version: 2.7.4(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) + specifier: ^2.7.5 + version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.1.2 version: 5.1.2(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) @@ -95,8 +95,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 turbo: - specifier: ^2.7.4 - version: 2.7.4 + specifier: ^2.7.5 + version: 2.7.5 typescript: specifier: ^5.9.3 version: 5.9.3 @@ -2349,8 +2349,8 @@ importers: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) eslint-config-turbo: - specifier: ^2.7.4 - version: 2.7.4(eslint@9.39.2)(turbo@2.7.4) + specifier: ^2.7.5 + version: 2.7.5(eslint@9.39.2)(turbo@2.7.5) eslint-plugin-import: specifier: ^2.32.0 version: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) @@ -4780,12 +4780,12 @@ packages: '@tsconfig/svelte@1.0.13': resolution: {integrity: sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==} - '@turbo/gen@2.7.4': - resolution: {integrity: sha512-izrkJuawtMU/Pp1457+wJ8W+DDAEu3hiYKPdJyKzYtFHMhuTL8UMLsNQ2fyjRzsJWiG4493oI2UAdniZmB7nPg==} + '@turbo/gen@2.7.5': + resolution: {integrity: sha512-KzQUYXifcdzPxJcl0r4dPXObd5r/FKGR5EA3LEYc3BBO3kxHT6XIJkoG4V4VpPYbXSOrwjJs8pURjReiEobYGQ==} hasBin: true - '@turbo/workspaces@2.7.4': - resolution: {integrity: sha512-1jAzZzi2MkmSKHMm7SSjaADg4jPjy6tRqAZBqETdyQqFlIvfrM1uquaqaK9BPgBW3QeJlj1hIh+Eu58Xsocu9w==} + '@turbo/workspaces@2.7.5': + resolution: {integrity: sha512-a14XS/dQH1387jFnzkPzIdL52JR9XA2ud8pfecl51zrjvh5GKevBPE37z7iFRqnt7g921pCWfn9i9hW5gPjo7Q==} hasBin: true '@types/adm-zip@0.5.7': @@ -6641,8 +6641,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.7.4: - resolution: {integrity: sha512-HhIqaGxIxZ8IxOqH30zvOr8kMmLGiOiDaOrFJwER9R++9L1OztVVsbs695Vti60XkYG6aa5F1TIBsYA5TP3hEw==} + eslint-config-turbo@2.7.5: + resolution: {integrity: sha512-LKgZM73MqmEEwo1nEqnX6aNQoZ7ASL93H3Zb8PG6bYE9kI4aM2CFnOFKJf6lTQPBV92N5pdaxz1bE47J2LUdFw==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -6699,8 +6699,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-turbo@2.7.4: - resolution: {integrity: sha512-kye4pyGpZMJLgykeRDYTK2kpzHFw7kWlaio66Y4dL/9IMa7cIXirvvHVryV8D7ni3eOsHZYYQ9k0nADKNnecjQ==} + eslint-plugin-turbo@2.7.5: + resolution: {integrity: sha512-dHUEEZyoUriaYqaqu6nlnkj0W+iDPYFhuMjLYGxn7p767kLCYTZgjR42urW56VLiRQUqDL+foOXufFM6+kXCEQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -10393,38 +10393,38 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.7.4: - resolution: {integrity: sha512-xDR30ltfkSsRfGzABBckvl1nz1cZ3ssTujvdj+TPwOweeDRvZ0e06t5DS0rmRBvyKpgGs42K/EK6Mn2qLlFY9A==} + turbo-darwin-64@2.7.5: + resolution: {integrity: sha512-nN3wfLLj4OES/7awYyyM7fkU8U8sAFxsXau2bYJwAWi6T09jd87DgHD8N31zXaJ7LcpyppHWPRI2Ov9MuZEwnQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.7.4: - resolution: {integrity: sha512-P7sjqXtOL/+nYWPvcDGWhi8wf8M8mZHHB8XEzw2VX7VJrS8IGHyJHGD1AYfDvhAEcr7pnk3gGifz3/xyhI655w==} + turbo-darwin-arm64@2.7.5: + resolution: {integrity: sha512-wCoDHMiTf3FgLAbZHDDx/unNNonSGhsF5AbbYODbxnpYyoKDpEYacUEPjZD895vDhNvYCH0Nnk24YsP4n/cD6g==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.7.4: - resolution: {integrity: sha512-GofFOxRO/IhG8BcPyMSSB3Y2+oKQotsaYbHxL9yD6JPb20/o35eo+zUSyazOtilAwDHnak5dorAJFoFU8MIg2A==} + turbo-linux-64@2.7.5: + resolution: {integrity: sha512-KKPvhOmJMmzWj/yjeO4LywkQ85vOJyhru7AZk/+c4B6OUh/odQ++SiIJBSbTG2lm1CuV5gV5vXZnf/2AMlu3Zg==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.7.4: - resolution: {integrity: sha512-+RQKgNjksVPxYAyAgmDV7w/1qj++qca+nSNTAOKGOfJiDtSvRKoci89oftJ6anGs00uamLKVEQ712TI/tfNAIw==} + turbo-linux-arm64@2.7.5: + resolution: {integrity: sha512-8PIva4L6BQhiPikUTds9lSFSHXVDAsEvV6QUlgwPsXrtXVQMVi6Sv9p+IxtlWQFvGkdYJUgX9GnK2rC030Xcmw==} cpu: [arm64] os: [linux] - turbo-windows-64@2.7.4: - resolution: {integrity: sha512-rfak1+g+ON3czs1mDYsCS4X74ZmK6gOgRQTXjDICtzvR4o61paqtgAYtNPofcVsMWeF4wvCajSeoAkkeAnQ1kg==} + turbo-windows-64@2.7.5: + resolution: {integrity: sha512-rupskv/mkIUgQXzX/wUiK00mKMorQcK8yzhGFha/D5lm05FEnLx8dsip6rWzMcVpvh+4GUMA56PgtnOgpel2AA==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.7.4: - resolution: {integrity: sha512-1ZgBNjNRbDu/fPeqXuX9i26x3CJ/Y1gcwUpQ+Vp7kN9Un6RZ9kzs164f/knrjcu5E+szCRexVjRSJay1k5jApA==} + turbo-windows-arm64@2.7.5: + resolution: {integrity: sha512-G377Gxn6P42RnCzfMyDvsqQV7j69kVHKlhz9J4RhtJOB5+DyY4yYh/w0oTIxZQ4JRMmhjwLu3w9zncMoQ6nNDw==} cpu: [arm64] os: [win32] - turbo@2.7.4: - resolution: {integrity: sha512-bkO4AddmDishzJB2ze7aYYPaejMoJVfS0XnaR6RCdXFOY8JGJfQE+l9fKiV7uDPa5Ut44gmOWJL3894CIMeH9g==} + turbo@2.7.5: + resolution: {integrity: sha512-7Imdmg37joOloTnj+DPrab9hIaQcDdJ5RwSzcauo/wMOSAgO+A/I/8b3hsGGs6PWQz70m/jkPgdqWsfNKtwwDQ==} hasBin: true tweetnacl@0.14.5: @@ -13733,9 +13733,9 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.7.4(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3)': + '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3)': dependencies: - '@turbo/workspaces': 2.7.4 + '@turbo/workspaces': 2.7.5 commander: 10.0.0 fs-extra: 10.1.0 inquirer: 8.2.4 @@ -13753,7 +13753,7 @@ snapshots: - supports-color - typescript - '@turbo/workspaces@2.7.4': + '@turbo/workspaces@2.7.5': dependencies: commander: 10.0.0 execa: 5.1.1 @@ -15929,11 +15929,11 @@ snapshots: dependencies: eslint: 9.39.2 - eslint-config-turbo@2.7.4(eslint@9.39.2)(turbo@2.7.4): + eslint-config-turbo@2.7.5(eslint@9.39.2)(turbo@2.7.5): dependencies: eslint: 9.39.2 - eslint-plugin-turbo: 2.7.4(eslint@9.39.2)(turbo@2.7.4) - turbo: 2.7.4 + eslint-plugin-turbo: 2.7.5(eslint@9.39.2)(turbo@2.7.5) + turbo: 2.7.5 eslint-import-resolver-node@0.3.9: dependencies: @@ -16033,11 +16033,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.7.4(eslint@9.39.2)(turbo@2.7.4): + eslint-plugin-turbo@2.7.5(eslint@9.39.2)(turbo@2.7.5): dependencies: dotenv: 16.0.3 eslint: 9.39.2 - turbo: 2.7.4 + turbo: 2.7.5 eslint-scope@5.1.1: dependencies: @@ -20304,32 +20304,32 @@ snapshots: tunnel@0.0.6: {} - turbo-darwin-64@2.7.4: + turbo-darwin-64@2.7.5: optional: true - turbo-darwin-arm64@2.7.4: + turbo-darwin-arm64@2.7.5: optional: true - turbo-linux-64@2.7.4: + turbo-linux-64@2.7.5: optional: true - turbo-linux-arm64@2.7.4: + turbo-linux-arm64@2.7.5: optional: true - turbo-windows-64@2.7.4: + turbo-windows-64@2.7.5: optional: true - turbo-windows-arm64@2.7.4: + turbo-windows-arm64@2.7.5: optional: true - turbo@2.7.4: + turbo@2.7.5: optionalDependencies: - turbo-darwin-64: 2.7.4 - turbo-darwin-arm64: 2.7.4 - turbo-linux-64: 2.7.4 - turbo-linux-arm64: 2.7.4 - turbo-windows-64: 2.7.4 - turbo-windows-arm64: 2.7.4 + turbo-darwin-64: 2.7.5 + turbo-darwin-arm64: 2.7.5 + turbo-linux-64: 2.7.5 + turbo-linux-arm64: 2.7.5 + turbo-windows-64: 2.7.5 + turbo-windows-arm64: 2.7.5 tweetnacl@0.14.5: {} diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 497efe29d..2c932fd60 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -19,7 +19,7 @@ "dependencies": { "@next/eslint-plugin-next": "16.1.2", "eslint-config-prettier": "^10.1.8", - "eslint-config-turbo": "^2.7.4", + "eslint-config-turbo": "^2.7.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", From e50ed15eb31b6631b2c047618995f7114df2466b Mon Sep 17 00:00:00 2001 From: "homarr-update-contributors[bot]" <210161987+homarr-update-contributors[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:40:06 +0000 Subject: [PATCH 22/34] chore: update contributors (#4895) Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com> --- static-data/translators.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static-data/translators.json b/static-data/translators.json index 893911cdb..60b178cfc 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":"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":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.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":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"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":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.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"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.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":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.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":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"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":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.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"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"}] \ No newline at end of file From fa84bd569fdf6c9aecfcb9b4d8fb20d14215160b Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:56:49 +0000 Subject: [PATCH 23/34] fix(deps): update dependency @tanstack/react-query to ^5.90.19 (#4888) 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 | 62 +++++++++++++++--------------- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 6fb23ce50..7659eb33c 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -56,7 +56,7 @@ "@mantine/tiptap": "^8.3.12", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.36.1", - "@tanstack/react-query": "^5.90.17", + "@tanstack/react-query": "^5.90.19", "@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 a4abbf253..083b57b2a 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.17", + "@tanstack/react-query": "^5.90.19", "@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 6a0c68d07..c5d427c55 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.17", + "@tanstack/react-query": "^5.90.19", "@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 95274bd9f..11e9cd369 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -233,23 +233,23 @@ importers: specifier: ^3.36.1 version: 3.36.1(react@19.2.3) '@tanstack/react-query': - specifier: ^5.90.17 - version: 5.90.17(react@19.2.3) + specifier: ^5.90.19 + version: 5.90.19(react@19.2.3) '@tanstack/react-query-devtools': specifier: ^5.91.2 - version: 5.91.2(@tanstack/react-query@5.90.17(react@19.2.3))(react@19.2.3) + version: 5.91.2(@tanstack/react-query@5.90.19(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.17(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.2(@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.2))(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.17(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.17(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.2(@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.2))(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.19(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.19(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.2(@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.2))(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.17(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.19(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.17 - version: 5.90.17(react@19.2.3) + specifier: ^5.90.19 + version: 5.90.19(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.17(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.19(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.17(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.19(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.17 - version: 5.90.17(react@19.2.3) + specifier: ^5.90.19 + version: 5.90.19(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.17(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.19(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 @@ -4443,8 +4443,8 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.90.17': - resolution: {integrity: sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ==} + '@tanstack/query-core@5.90.19': + resolution: {integrity: sha512-GLW5sjPVIvH491VV1ufddnfldyVB+teCnpPIvweEfkpRx7CfUmUGhoh9cdcUKBh/KwVxk22aNEDxeTsvmyB/WA==} '@tanstack/query-devtools@5.92.0': resolution: {integrity: sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ==} @@ -4462,8 +4462,8 @@ packages: next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query@5.90.17': - resolution: {integrity: sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ==} + '@tanstack/react-query@5.90.19': + resolution: {integrity: sha512-qTZRZ4QyTzQc+M0IzrbKHxSeISUmRB3RPGmao5bT+sI6ayxSRhn0FXEnT5Hg3as8SBFcRosrXXRFB+yAcxVxJQ==} peerDependencies: react: ^18 || ^19 @@ -13390,25 +13390,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.90.17': {} + '@tanstack/query-core@5.90.19': {} '@tanstack/query-devtools@5.92.0': {} - '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.17(react@19.2.3))(react@19.2.3)': + '@tanstack/react-query-devtools@5.91.2(@tanstack/react-query@5.90.19(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/query-devtools': 5.92.0 - '@tanstack/react-query': 5.90.17(react@19.2.3) + '@tanstack/react-query': 5.90.19(react@19.2.3) react: 19.2.3 - '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.17(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3)': dependencies: - '@tanstack/react-query': 5.90.17(react@19.2.3) + '@tanstack/react-query': 5.90.19(react@19.2.3) next: 16.1.2(@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.2) react: 19.2.3 - '@tanstack/react-query@5.90.17(react@19.2.3)': + '@tanstack/react-query@5.90.19(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.90.17 + '@tanstack/query-core': 5.90.19 react: 19.2.3 '@tanstack/react-table@8.20.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': @@ -13689,7 +13689,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.17(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.17(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.2(@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.2))(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.19(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.19(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.2(@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.2))(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) @@ -13698,12 +13698,12 @@ snapshots: react-dom: 19.2.3(react@19.2.3) typescript: 5.9.3 optionalDependencies: - '@tanstack/react-query': 5.90.17(react@19.2.3) - '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.17(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.19(react@19.2.3) + '@trpc/react-query': 11.8.1(@tanstack/react-query@5.90.19(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.17(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.19(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.17(react@19.2.3) + '@tanstack/react-query': 5.90.19(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 @@ -13714,9 +13714,9 @@ snapshots: dependencies: typescript: 5.9.3 - '@trpc/tanstack-react-query@11.8.1(@tanstack/react-query@5.90.17(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.19(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.17(react@19.2.3) + '@tanstack/react-query': 5.90.19(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 From 5a8e864630b61595b53a9e849973460ffdce5fd2 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 13:50:18 +0000 Subject: [PATCH 24/34] fix(deps): update nextjs monorepo to v16.1.3 (#4889) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/common/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/old-import/package.json | 2 +- packages/settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 176 ++++++++++++------------ tooling/eslint/package.json | 2 +- 13 files changed, 100 insertions(+), 100 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 7659eb33c..7768f9e42 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -76,7 +76,7 @@ "isomorphic-dompurify": "^2.35.0", "jotai": "^2.16.2", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.2", + "next": "16.1.3", "postcss-preset-mantine": "^1.18.0", "prismjs": "^1.30.0", "react": "19.2.3", diff --git a/packages/api/package.json b/packages/api/package.json index 083b57b2a..c1a26a964 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -47,7 +47,7 @@ "@trpc/server": "^11.8.1", "@trpc/tanstack-react-query": "^11.8.1", "lodash.clonedeep": "^4.5.0", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "superjson": "2.2.6", diff --git a/packages/auth/package.json b/packages/auth/package.json index e26fa18b3..667d823ce 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -34,7 +34,7 @@ "bcrypt": "^6.0.0", "cookies": "^0.9.1", "ldapts": "8.1.3", - "next": "16.1.2", + "next": "16.1.3", "next-auth": "5.0.0-beta.30", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/common/package.json b/packages/common/package.json index f12ef5950..9504e481d 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -29,7 +29,7 @@ "@homarr/core": "workspace:^0.1.0", "@paralleldrive/cuid2": "^3.1.0", "dayjs": "^1.11.19", - "next": "16.1.2", + "next": "16.1.3", "octokit": "^5.0.5", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 9a03d2cd1..a739f22ec 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -36,7 +36,7 @@ "@mantine/core": "^8.3.12", "@tabler/icons-react": "^3.36.1", "dayjs": "^1.11.19", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "zod": "^4.2.1" diff --git a/packages/old-import/package.json b/packages/old-import/package.json index c4fb5e679..b8cf1fce2 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -40,7 +40,7 @@ "@mantine/core": "^8.3.12", "@mantine/hooks": "^8.3.12", "adm-zip": "0.5.16", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "superjson": "2.2.6", diff --git a/packages/settings/package.json b/packages/settings/package.json index 0722ae290..1902f1c6b 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -26,7 +26,7 @@ "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@mantine/dates": "^8.3.12", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3" }, diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index d180ce393..a9210ea19 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -38,7 +38,7 @@ "@mantine/spotlight": "^8.3.12", "@tabler/icons-react": "^3.36.1", "jotai": "^2.16.2", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "use-deep-compare-effect": "^1.8.1" diff --git a/packages/translation/package.json b/packages/translation/package.json index b6db42276..4e8c660e5 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,7 +32,7 @@ "dayjs": "^1.11.19", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.2", + "next": "16.1.3", "next-intl": "4.7.0", "react": "19.2.3", "react-dom": "19.2.3" diff --git a/packages/ui/package.json b/packages/ui/package.json index 17b7d2ce1..0510aba01 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -36,7 +36,7 @@ "@tabler/icons-react": "^3.36.1", "crypto-js": "^4.2.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "svgson": "^5.3.1" diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d135b5ae4..9fcd36ae1 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -72,7 +72,7 @@ "dayjs": "^1.11.19", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", - "next": "16.1.2", + "next": "16.1.3", "react": "19.2.3", "react-dom": "19.2.3", "react-markdown": "^10.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11e9cd369..201735a65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,13 +240,13 @@ importers: version: 5.91.2(@tanstack/react-query@5.90.19(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.19(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3) + version: 5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.3(@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.2))(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.19(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.19(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.2(@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.2))(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.19(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.19(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.3(@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.2))(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.19(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) @@ -293,8 +293,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) postcss-preset-mantine: specifier: ^1.18.0 version: 1.18.0(postcss@8.5.6) @@ -648,8 +648,8 @@ importers: specifier: ^4.5.0 version: 4.5.0 next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -718,11 +718,11 @@ importers: specifier: 8.1.3 version: 8.1.3 next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) next-auth: specifier: 5.0.0-beta.30 - version: 5.0.0-beta.30(next@16.1.2(@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.2))(react@19.2.3) + version: 5.0.0-beta.30(next@16.1.3(@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.2))(react@19.2.3) react: specifier: 19.2.3 version: 19.2.3 @@ -838,8 +838,8 @@ importers: specifier: ^1.11.19 version: 1.11.19 next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) octokit: specifier: ^5.0.5 version: 5.0.5 @@ -1588,8 +1588,8 @@ importers: specifier: ^1.11.19 version: 1.11.19 next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1689,8 +1689,8 @@ importers: specifier: 0.5.16 version: 0.5.16 next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1908,8 +1908,8 @@ importers: specifier: ^8.3.12 version: 8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(react@19.2.3))(dayjs@1.11.19)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -1981,8 +1981,8 @@ importers: specifier: ^2.16.2 version: 2.16.2(@babel/core@7.28.5)(@babel/template@7.28.6)(@types/react@19.2.8)(react@19.2.3) next: - specifier: 16.1.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2027,11 +2027,11 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) next-intl: specifier: 4.7.0 - version: 4.7.0(next@16.1.2(@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.2))(react@19.2.3)(typescript@5.9.3) + version: 4.7.0(next@16.1.3(@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.2))(react@19.2.3)(typescript@5.9.3) react: specifier: 19.2.3 version: 19.2.3 @@ -2091,8 +2091,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2300,8 +2300,8 @@ importers: specifier: 2.0.0-beta.9 version: 2.0.0-beta.9(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/dates@8.3.12(@mantine/core@8.3.12(@mantine/hooks@8.3.12(react@19.2.3))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@mantine/hooks@8.3.12(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.12(react@19.2.3))(@tabler/icons-react@3.36.1(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.2 - version: 16.1.2(@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.2) + specifier: 16.1.3 + version: 16.1.3(@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.2) react: specifier: 19.2.3 version: 19.2.3 @@ -2343,8 +2343,8 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: 16.1.2 - version: 16.1.2 + specifier: 16.1.3 + version: 16.1.3 eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.39.2) @@ -3672,60 +3672,60 @@ packages: '@ndaidong/bellajs@12.0.1': resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==} - '@next/env@16.1.2': - resolution: {integrity: sha512-r6TpLovDTvWtzw11UubUQxEK6IduT8rSAHbGX68yeFpA/1Oq9R4ovi5nqMUMgPN0jr2SpfeyFRbTZg3Inuuv3g==} + '@next/env@16.1.3': + resolution: {integrity: sha512-BLP14oBOvZWXgfdJf9ao+VD8O30uE+x7PaV++QtACLX329WcRSJRO5YJ+Bcvu0Q+c/lei41TjSiFf6pXqnpbQA==} - '@next/eslint-plugin-next@16.1.2': - resolution: {integrity: sha512-jjO5BKDxZEXt2VCAnAG/ldULnpxeXspjCo9AZErV3Lm5HmNj8r2rS+eUMIAAj6mXPAOiPqAMgVPGnkyhPyDx4g==} + '@next/eslint-plugin-next@16.1.3': + resolution: {integrity: sha512-MqBh3ltFAy0AZCRFVdjVjjeV7nEszJDaVIpDAnkQcn8U9ib6OEwkSnuK6xdYxMGPhV/Y4IlY6RbDipPOpLfBqQ==} - '@next/swc-darwin-arm64@16.1.2': - resolution: {integrity: sha512-0N2baysDpTXASTVxTV+DkBnD97bo9PatUj8sHlKA+oR9CyvReaPQchQyhCbH0Jm0mC/Oka5F52intN+lNOhSlA==} + '@next/swc-darwin-arm64@16.1.3': + resolution: {integrity: sha512-CpOD3lmig6VflihVoGxiR/l5Jkjfi4uLaOR4ziriMv0YMDoF6cclI+p5t2nstM8TmaFiY6PCTBgRWB57/+LiBA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.2': - resolution: {integrity: sha512-Q0wnSK0lmeC9ps+/w/bDsMSF3iWS45WEwF1bg8dvMH3CmKB2BV4346tVrjWxAkrZq20Ro6Of3R19IgrEJkXKyw==} + '@next/swc-darwin-x64@16.1.3': + resolution: {integrity: sha512-aF4us2JXh0zn3hNxvL1Bx3BOuh8Lcw3p3Xnurlvca/iptrDH1BrpObwkw9WZra7L7/0qB9kjlREq3hN/4x4x+Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.2': - resolution: {integrity: sha512-4twW+h7ZatGKWq+2pUQ9SDiin6kfZE/mY+D8jOhSZ0NDzKhQfAPReXqwTDWVrNjvLzHzOcDL5kYjADHfXL/b/Q==} + '@next/swc-linux-arm64-gnu@16.1.3': + resolution: {integrity: sha512-8VRkcpcfBtYvhGgXAF7U3MBx6+G1lACM1XCo1JyaUr4KmAkTNP8Dv2wdMq7BI+jqRBw3zQE7c57+lmp7jCFfKA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.1.2': - resolution: {integrity: sha512-Sn6LxPIZcADe5AnqqMCfwBv6vRtDikhtrjwhu+19WM6jHZe31JDRcGuPZAlJrDk6aEbNBPUUAKmySJELkBOesg==} + '@next/swc-linux-arm64-musl@16.1.3': + resolution: {integrity: sha512-UbFx69E2UP7MhzogJRMFvV9KdEn4sLGPicClwgqnLht2TEi204B71HuVfps3ymGAh0c44QRAF+ZmvZZhLLmhNg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.1.2': - resolution: {integrity: sha512-nwzesEQBfQIOOnQ7JArzB08w9qwvBQ7nC1i8gb0tiEFH94apzQM3IRpY19MlE8RBHxc9ArG26t1DEg2aaLaqVQ==} + '@next/swc-linux-x64-gnu@16.1.3': + resolution: {integrity: sha512-SzGTfTjR5e9T+sZh5zXqG/oeRQufExxBF6MssXS7HPeZFE98JDhCRZXpSyCfWrWrYrzmnw/RVhlP2AxQm+wkRQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.1.2': - resolution: {integrity: sha512-s60bLf16BDoICQHeKEm0lDgUNMsL1UpQCkRNZk08ZNnRpK0QUV+6TvVHuBcIA7oItzU0m7kVmXe8QjXngYxJVA==} + '@next/swc-linux-x64-musl@16.1.3': + resolution: {integrity: sha512-HlrDpj0v+JBIvQex1mXHq93Mht5qQmfyci+ZNwGClnAQldSfxI6h0Vupte1dSR4ueNv4q7qp5kTnmLOBIQnGow==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.1.2': - resolution: {integrity: sha512-Sq8k4SZd8Y8EokKdz304TvMO9HoiwGzo0CTacaiN1bBtbJSQ1BIwKzNFeFdxOe93SHn1YGnKXG6Mq3N+tVooyQ==} + '@next/swc-win32-arm64-msvc@16.1.3': + resolution: {integrity: sha512-3gFCp83/LSduZMSIa+lBREP7+5e7FxpdBoc9QrCdmp+dapmTK9I+SLpY60Z39GDmTXSZA4huGg9WwmYbr6+WRw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.2': - resolution: {integrity: sha512-KQDBwspSaNX5/wwt6p7ed5oINJWIxcgpuqJdDNubAyq7dD+ZM76NuEjg8yUxNOl5R4NNgbMfqE/RyNrsbYmOKg==} + '@next/swc-win32-x64-msvc@16.1.3': + resolution: {integrity: sha512-1SZVfFT8zmMB+Oblrh5OKDvUo5mYQOkX2We6VGzpg7JUVZlqe4DYOFGKYZKTweSx1gbMixyO1jnFT4thU+nNHQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -8410,8 +8410,8 @@ packages: typescript: optional: true - next@16.1.2: - resolution: {integrity: sha512-SVSWX7wjUUDrIDVqhl4xm/jiOrvYGMG7NzVE/dGzzgs7r3dFGm4V19ia0xn3GDNtHCKM7C9h+5BoimnJBhmt9A==} + next@16.1.3: + resolution: {integrity: sha512-gthG3TRD+E3/mA0uDQb9lqBmx1zVosq5kIwxNN6+MRNd085GzD+9VXMPUs+GGZCbZ+GDZdODUq4Pm7CTXK6ipw==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -12441,34 +12441,34 @@ snapshots: '@ndaidong/bellajs@12.0.1': {} - '@next/env@16.1.2': {} + '@next/env@16.1.3': {} - '@next/eslint-plugin-next@16.1.2': + '@next/eslint-plugin-next@16.1.3': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@16.1.2': + '@next/swc-darwin-arm64@16.1.3': optional: true - '@next/swc-darwin-x64@16.1.2': + '@next/swc-darwin-x64@16.1.3': optional: true - '@next/swc-linux-arm64-gnu@16.1.2': + '@next/swc-linux-arm64-gnu@16.1.3': optional: true - '@next/swc-linux-arm64-musl@16.1.2': + '@next/swc-linux-arm64-musl@16.1.3': optional: true - '@next/swc-linux-x64-gnu@16.1.2': + '@next/swc-linux-x64-gnu@16.1.3': optional: true - '@next/swc-linux-x64-musl@16.1.2': + '@next/swc-linux-x64-musl@16.1.3': optional: true - '@next/swc-win32-arm64-msvc@16.1.2': + '@next/swc-win32-arm64-msvc@16.1.3': optional: true - '@next/swc-win32-x64-msvc@16.1.2': + '@next/swc-win32-x64-msvc@16.1.3': optional: true '@noble/hashes@2.0.1': {} @@ -13400,10 +13400,10 @@ snapshots: '@tanstack/react-query': 5.90.19(react@19.2.3) react: 19.2.3 - '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.2(@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.2))(react@19.2.3)': + '@tanstack/react-query-next-experimental@5.91.0(@tanstack/react-query@5.90.19(react@19.2.3))(next@16.1.3(@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.2))(react@19.2.3)': dependencies: '@tanstack/react-query': 5.90.19(react@19.2.3) - next: 16.1.2(@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.2) + next: 16.1.3(@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.2) react: 19.2.3 '@tanstack/react-query@5.90.19(react@19.2.3)': @@ -13689,11 +13689,11 @@ snapshots: '@trpc/server': 11.8.1(typescript@5.9.3) typescript: 5.9.3 - '@trpc/next@11.8.1(@tanstack/react-query@5.90.19(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.19(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.2(@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.2))(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.19(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.19(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.3(@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.2))(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) - next: 16.1.2(@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.2) + next: 16.1.3(@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.2) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) typescript: 5.9.3 @@ -17936,21 +17936,21 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.30(next@16.1.2(@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.2))(react@19.2.3): + next-auth@5.0.0-beta.30(next@16.1.3(@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.2))(react@19.2.3): dependencies: '@auth/core': 0.41.0 - next: 16.1.2(@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.2) + next: 16.1.3(@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.2) react: 19.2.3 next-intl-swc-plugin-extractor@4.7.0: {} - next-intl@4.7.0(next@16.1.2(@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.2))(react@19.2.3)(typescript@5.9.3): + next-intl@4.7.0(next@16.1.3(@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.2))(react@19.2.3)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 '@parcel/watcher': 2.4.1 '@swc/core': 1.15.3 negotiator: 1.0.0 - next: 16.1.2(@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.2) + next: 16.1.3(@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.2) next-intl-swc-plugin-extractor: 4.7.0 po-parser: 2.1.1 react: 19.2.3 @@ -17960,9 +17960,9 @@ snapshots: transitivePeerDependencies: - '@swc/helpers' - next@16.1.2(@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.2): + next@16.1.3(@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.2): dependencies: - '@next/env': 16.1.2 + '@next/env': 16.1.3 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 @@ -17971,14 +17971,14 @@ snapshots: react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.2 - '@next/swc-darwin-x64': 16.1.2 - '@next/swc-linux-arm64-gnu': 16.1.2 - '@next/swc-linux-arm64-musl': 16.1.2 - '@next/swc-linux-x64-gnu': 16.1.2 - '@next/swc-linux-x64-musl': 16.1.2 - '@next/swc-win32-arm64-msvc': 16.1.2 - '@next/swc-win32-x64-msvc': 16.1.2 + '@next/swc-darwin-arm64': 16.1.3 + '@next/swc-darwin-x64': 16.1.3 + '@next/swc-linux-arm64-gnu': 16.1.3 + '@next/swc-linux-arm64-musl': 16.1.3 + '@next/swc-linux-x64-gnu': 16.1.3 + '@next/swc-linux-x64-musl': 16.1.3 + '@next/swc-win32-arm64-msvc': 16.1.3 + '@next/swc-win32-x64-msvc': 16.1.3 babel-plugin-react-compiler: 1.0.0 sass: 1.97.2 sharp: 0.34.4 @@ -17986,9 +17986,9 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.1.2(@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.2): + next@16.1.3(@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.2): dependencies: - '@next/env': 16.1.2 + '@next/env': 16.1.3 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.8.29 caniuse-lite: 1.0.30001755 @@ -17997,14 +17997,14 @@ snapshots: react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.2 - '@next/swc-darwin-x64': 16.1.2 - '@next/swc-linux-arm64-gnu': 16.1.2 - '@next/swc-linux-arm64-musl': 16.1.2 - '@next/swc-linux-x64-gnu': 16.1.2 - '@next/swc-linux-x64-musl': 16.1.2 - '@next/swc-win32-arm64-msvc': 16.1.2 - '@next/swc-win32-x64-msvc': 16.1.2 + '@next/swc-darwin-arm64': 16.1.3 + '@next/swc-darwin-x64': 16.1.3 + '@next/swc-linux-arm64-gnu': 16.1.3 + '@next/swc-linux-arm64-musl': 16.1.3 + '@next/swc-linux-x64-gnu': 16.1.3 + '@next/swc-linux-x64-musl': 16.1.3 + '@next/swc-win32-arm64-msvc': 16.1.3 + '@next/swc-win32-x64-msvc': 16.1.3 babel-plugin-react-compiler: 1.0.0 sass: 1.97.2 sharp: 0.34.4 diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 2c932fd60..1520ead96 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,7 +17,7 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "16.1.2", + "@next/eslint-plugin-next": "16.1.3", "eslint-config-prettier": "^10.1.8", "eslint-config-turbo": "^2.7.5", "eslint-plugin-import": "^2.32.0", From 09006c3169b163c6fcce0b3c9569f3b0656502a5 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:34:56 +0000 Subject: [PATCH 25/34] chore(deps): update dependency prettier-plugin-packagejson to ^2.5.22 (#4894) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 26 +++++++++++++------------- tooling/prettier/package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 201735a65..15ced2687 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2395,8 +2395,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript prettier-plugin-packagejson: - specifier: ^2.5.21 - version: 2.5.21(prettier@3.8.0) + specifier: ^2.5.22 + version: 2.5.22(prettier@3.8.0) typescript: specifier: ^5.9.3 version: 5.9.3 @@ -6245,8 +6245,8 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-indent@7.0.1: - resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} detect-libc@1.0.3: @@ -9061,8 +9061,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@2.5.21: - resolution: {integrity: sha512-d9ivsysb1SeRaKDhjf6Hi7jBGnP4TVsh7DeVi8N5HtHJ5vwD7YHcQIuy6jRkr2qGW/VKbrEVDWVMODuqcZuz8Q==} + prettier-plugin-packagejson@2.5.22: + resolution: {integrity: sha512-G6WalmoUssKF8ZXkni0+n4324K+gG143KPysSQNW+FrR0XyNb3BdRxchGC/Q1FE/F702p7/6KU7r4mv0WSWbzA==} peerDependencies: prettier: '>= 1.16.0' peerDependenciesMeta: @@ -9868,8 +9868,8 @@ packages: sort-object-keys@2.0.1: resolution: {integrity: sha512-R89fO+z3x7hiKPXX5P0qim+ge6Y60AjtlW+QQpRozrrNcR1lw9Pkpm5MLB56HoNvdcLHL4wbpq16OcvGpEDJIg==} - sort-package-json@3.5.0: - resolution: {integrity: sha512-moY4UtptUuP5sPuu9H9dp8xHNel7eP5/Kz/7+90jTvC0IOiPH2LigtRM/aSFSxreaWoToHUVUpEV4a2tAs2oKQ==} + sort-package-json@3.6.0: + resolution: {integrity: sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==} engines: {node: '>=20'} hasBin: true @@ -15398,7 +15398,7 @@ snapshots: destr@2.0.5: {} - detect-indent@7.0.1: {} + detect-indent@7.0.2: {} detect-libc@1.0.3: {} @@ -18617,9 +18617,9 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@2.5.21(prettier@3.8.0): + prettier-plugin-packagejson@2.5.22(prettier@3.8.0): dependencies: - sort-package-json: 3.5.0 + sort-package-json: 3.6.0 optionalDependencies: prettier: 3.8.0 @@ -19664,9 +19664,9 @@ snapshots: sort-object-keys@2.0.1: {} - sort-package-json@3.5.0: + sort-package-json@3.6.0: dependencies: - detect-indent: 7.0.1 + detect-indent: 7.0.2 detect-newline: 4.0.1 git-hooks-list: 4.1.1 is-plain-obj: 4.1.0 diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 5a6eebc8c..aba0382a8 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@homarr/tsconfig": "workspace:^0.1.0", - "prettier-plugin-packagejson": "^2.5.21", + "prettier-plugin-packagejson": "^2.5.22", "typescript": "^5.9.3" } } From 101c1fd819268efc56b1907996d57b15d899da01 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:42:55 +0100 Subject: [PATCH 26/34] chore(lang): update translations from crowdin (#4890) Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/es.json | 6 +++--- packages/translation/src/lang/ja.json | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 5605cf64c..25e7b30f5 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -3295,10 +3295,10 @@ } }, "user": { - "title": "", + "title": "Usuarios", "enableGravatar": { - "label": "", - "description": "" + "label": "Habilitar Gravatar", + "description": "Recupera los avatares de usuario de Libravatar/Gravatar cuando no hay ningún avatar personalizado y se configura un correo electrónico" } }, "search": { diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index ed38c929b..105805be8 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.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": "ブラックリスト", @@ -3295,10 +3295,10 @@ } }, "user": { - "title": "", + "title": "ユーザー", "enableGravatar": { - "label": "", - "description": "" + "label": "Gravatar を有効化", + "description": "カスタムアバターが設定されておらず、メールが設定されている場合は、Libavatar/Gravatarからユーザーのアバターにフォールバックします" } }, "search": { From 63a0793c6ea02456a49a07635b927adf3a314ee0 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:13:55 +0100 Subject: [PATCH 27/34] fix(deps): update dependency better-sqlite3 to ^12.6.2 (#4891) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- deployments/prebuilt-debian/package.json | 2 +- deployments/prebuilt-debian/pnpm-lock.yaml | 2 +- packages/core/package.json | 2 +- packages/db/package.json | 2 +- pnpm-lock.yaml | 28 +++++++++++----------- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json index 353adfbcc..2c7967467 100644 --- a/deployments/prebuilt-debian/package.json +++ b/deployments/prebuilt-debian/package.json @@ -2,7 +2,7 @@ "name": "homarr-prebuilt-debian", "private": true, "dependencies": { - "better-sqlite3": "^12.6.0" + "better-sqlite3": "^12.6.2" }, "packageManager": "pnpm@10.28.0", "engines": { diff --git a/deployments/prebuilt-debian/pnpm-lock.yaml b/deployments/prebuilt-debian/pnpm-lock.yaml index 19f0fc6a4..f18d00d42 100644 --- a/deployments/prebuilt-debian/pnpm-lock.yaml +++ b/deployments/prebuilt-debian/pnpm-lock.yaml @@ -9,7 +9,7 @@ importers: .: dependencies: better-sqlite3: - specifier: ^12.6.0 + specifier: ^12.6.2 version: 12.6.2 packages: diff --git a/packages/core/package.json b/packages/core/package.json index 681db838f..33fc32e50 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,7 +38,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@t3-oss/env-nextjs": "^0.13.10", - "better-sqlite3": "^12.6.0", + "better-sqlite3": "^12.6.2", "dns-caching": "^0.2.9", "drizzle-orm": "^0.45.1", "ioredis": "5.9.2", diff --git a/packages/db/package.json b/packages/db/package.json index 9dcbcc2a5..f6fa775bc 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -51,7 +51,7 @@ "@paralleldrive/cuid2": "^3.1.0", "@testcontainers/mysql": "^11.11.0", "@testcontainers/postgresql": "^11.11.0", - "better-sqlite3": "^12.6.0", + "better-sqlite3": "^12.6.2", "dotenv": "^17.2.3", "drizzle-kit": "^0.31.8", "drizzle-orm": "^0.45.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 15ced2687..abbc3a868 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -881,14 +881,14 @@ importers: specifier: ^0.13.10 version: 0.13.10(arktype@2.1.20)(typescript@5.9.3)(zod@4.2.1) better-sqlite3: - specifier: ^12.6.0 - version: 12.6.0 + specifier: ^12.6.2 + version: 12.6.2 dns-caching: specifier: ^0.2.9 version: 0.2.9 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) ioredis: specifier: 5.9.2 version: 5.9.2 @@ -1141,8 +1141,8 @@ importers: specifier: ^11.11.0 version: 11.11.0 better-sqlite3: - specifier: ^12.6.0 - version: 12.6.0 + specifier: ^12.6.2 + version: 12.6.2 dotenv: specifier: ^17.2.3 version: 17.2.3 @@ -1151,10 +1151,10 @@ importers: version: 0.31.8 drizzle-orm: specifier: ^0.45.1 - version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1) + version: 0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1) mysql2: specifier: 3.16.1 version: 3.16.1 @@ -5593,8 +5593,8 @@ packages: before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} - better-sqlite3@12.6.0: - resolution: {integrity: sha512-FXI191x+D6UPWSze5IzZjhz+i9MK9nsuHsmTX9bXVl52k06AfZ2xql0lrgIUuzsMsJ7Vgl5kIptvDgBLIV3ZSQ==} + better-sqlite3@12.6.2: + resolution: {integrity: sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==} engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} bidi-js@1.0.3: @@ -14733,7 +14733,7 @@ snapshots: before-after-hook@4.0.0: {} - better-sqlite3@12.6.0: + better-sqlite3@12.6.2: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -15504,19 +15504,19 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1): + drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.16.0 - better-sqlite3: 12.6.0 + better-sqlite3: 12.6.2 gel: 2.0.0 mysql2: 3.16.1 pg: 8.17.1 - drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1): + drizzle-zod@0.8.3(drizzle-orm@0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1))(zod@4.2.1): dependencies: - drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.0)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) + drizzle-orm: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(gel@2.0.0)(mysql2@3.16.1)(pg@8.17.1) zod: 4.2.1 dunder-proto@1.0.1: From 41b02b63d9a1f9b73cc54371bbc1b6161a4d76d0 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:14:44 +0100 Subject: [PATCH 28/34] fix(deps): update dependency react-error-boundary to ^6.1.0 (#4884) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- apps/nextjs/package.json | 2 +- .../src/app/[locale]/widgets/[kind]/_content.tsx | 2 +- .../nextjs/src/components/board/items/item-content.tsx | 2 +- pnpm-lock.yaml | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 7768f9e42..b4024f61c 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.3", + "react-error-boundary": "^6.1.0", "react-simple-code-editor": "^0.14.1", "sass": "^1.97.2", "superjson": "2.2.6", diff --git a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx index 1dc7ac894..cd8b67ea2 100644 --- a/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx +++ b/apps/nextjs/src/app/[locale]/widgets/[kind]/_content.tsx @@ -105,7 +105,7 @@ export const WidgetPreviewPageContent = ({ kind, integrationData }: WidgetPrevie ( - + )} > { fallbackRender={({ resetErrorBoundary, error }) => ( <> - + )} > diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abbc3a868..43f9915a2 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.3 - version: 6.0.3(react@19.2.3) + specifier: ^6.1.0 + version: 6.1.0(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) @@ -9269,8 +9269,8 @@ packages: peerDependencies: react: '>= 16.8 || 18.0.0' - react-error-boundary@6.0.3: - resolution: {integrity: sha512-5guqn2UYpCFjE8UDMA8J7Kke+YSGBFrKQRJb3XdcaGZXYINZfQXgBt3ifY6MvjkN7QROc5A8zclyoSCwrcRUKw==} + react-error-boundary@6.1.0: + resolution: {integrity: sha512-02k9WQ/mUhdbXir0tC1NiMesGzRPaCsJEWU/4bcFrbY1YMZOtHShtZP6zw0SJrBWA/31H0KT9/FgdL8+sPKgHA==} peerDependencies: react: ^18.0.0 || ^19.0.0 @@ -18882,7 +18882,7 @@ snapshots: prop-types: 15.8.1 react: 19.2.3 - react-error-boundary@6.0.3(react@19.2.3): + react-error-boundary@6.1.0(react@19.2.3): dependencies: react: 19.2.3 From 15119b66e9b48be61ea281e1c6d968dae629d52d Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:21:21 +0100 Subject: [PATCH 29/34] chore(deps): update node.js to v24.13.0 (#4858) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- .github/workflows/deployment-docker-image.yml | 2 +- .nvmrc | 2 +- Dockerfile | 2 +- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- deployments/prebuilt-debian/Dockerfile | 2 +- deployments/prebuilt-debian/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 120 +++++++++--------- tooling/github/setup/action.yml | 2 +- 10 files changed, 69 insertions(+), 69 deletions(-) diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 8335bb46c..2e1be7e0e 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -65,7 +65,7 @@ jobs: - uses: actions/setup-node@v6 if: env.SKIP_RELEASE == 'false' with: - node-version: 24.12.0 + node-version: 24.13.0 cache: "pnpm" - run: npm i -g pnpm if: env.SKIP_RELEASE == 'false' diff --git a/.nvmrc b/.nvmrc index 248216ad5..3fe3b1570 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.12.0 +24.13.0 diff --git a/Dockerfile b/Dockerfile index 4cf6a8533..e61de33f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.12.0-alpine AS base +FROM node:24.13.0-alpine AS base FROM base AS builder RUN apk add --no-cache libc6-compat diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index b4024f61c..874bea353 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -94,7 +94,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.2", - "@types/node": "^24.10.7", + "@types/node": "^24.10.8", "@types/prismjs": "^1.26.5", "@types/react": "19.2.8", "@types/react-dom": "19.2.3", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 76835a5f8..4f8f56560 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -47,7 +47,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^24.10.7", + "@types/node": "^24.10.8", "dotenv-cli": "^11.0.0", "esbuild": "^0.27.2", "eslint": "^9.39.2", diff --git a/deployments/prebuilt-debian/Dockerfile b/deployments/prebuilt-debian/Dockerfile index 414af691c..3a52059e5 100644 --- a/deployments/prebuilt-debian/Dockerfile +++ b/deployments/prebuilt-debian/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.12.0-trixie AS base +FROM node:24.13.0-trixie AS base WORKDIR /app COPY package.json . COPY pnpm-lock.yaml . diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json index 2c7967467..1b3a4845a 100644 --- a/deployments/prebuilt-debian/package.json +++ b/deployments/prebuilt-debian/package.json @@ -6,7 +6,7 @@ }, "packageManager": "pnpm@10.28.0", "engines": { - "node": ">=24.12.0", + "node": ">=24.13.0", "pnpm": ">=10.28.0" }, "pnpm": { diff --git a/package.json b/package.json index 7bb50353a..3788d3265 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ }, "packageManager": "pnpm@10.28.0", "engines": { - "node": ">=24.12.0", + "node": ">=24.13.0", "pnpm": ">=10.28.0" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 43f9915a2..4f46c9724 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,10 +63,10 @@ importers: version: 11.11.0 '@turbo/gen': specifier: ^2.7.5 - version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) + version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + version: 5.1.2(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/coverage-v8': specifier: ^4.0.17 version: 4.0.17(vitest@4.0.17) @@ -102,10 +102,10 @@ importers: version: 5.9.3 vite-tsconfig-paths: specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) vitest: specifier: ^4.0.17 - version: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + version: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: @@ -342,8 +342,8 @@ importers: specifier: 3.1.2 version: 3.1.2 '@types/node': - specifier: ^24.10.7 - version: 24.10.7 + specifier: ^24.10.8 + version: 24.10.8 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -451,8 +451,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^24.10.7 - version: 24.10.7 + specifier: ^24.10.8 + version: 24.10.8 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 @@ -4953,8 +4953,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@24.10.7': - resolution: {integrity: sha512-+054pVMzVTmRQV8BhpGv3UyfZ2Llgl8rdpDTon+cUH9+na0ncBVXj3wTUKh14+Kiz18ziM3b4ikpP5/Pc0rQEQ==} + '@types/node@24.10.8': + resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -11238,7 +11238,7 @@ snapshots: '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -11381,7 +11381,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -11390,7 +11390,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -12263,7 +12263,7 @@ snapshots: '@kubernetes/client-node@1.4.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/node-fetch': 2.6.13 '@types/stream-buffers': 3.0.7 form-data: 4.0.5 @@ -13733,7 +13733,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3)': + '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3)': dependencies: '@turbo/workspaces': 2.7.5 commander: 10.0.0 @@ -13743,7 +13743,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3) update-check: 1.5.4 validate-npm-package-name: 5.0.0 transitivePeerDependencies: @@ -13769,7 +13769,7 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/aws-lambda@8.10.146': {} @@ -13796,16 +13796,16 @@ snapshots: '@types/bcrypt@6.0.0': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/chai@5.2.2': dependencies: @@ -13815,7 +13815,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/cookie@0.4.1': {} @@ -13824,11 +13824,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/cors@2.8.17': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/crypto-js@4.2.2': {} @@ -13868,19 +13868,19 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.47': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/ssh2': 1.15.1 '@types/dockerode@4.0.0': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13891,7 +13891,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13906,7 +13906,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/hast@3.0.4': dependencies: @@ -13950,7 +13950,7 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 form-data: 4.0.5 '@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)': @@ -13961,7 +13961,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@24.10.7': + '@types/node@24.10.8': dependencies: undici-types: 7.16.0 @@ -13969,7 +13969,7 @@ snapshots: '@types/pg@8.16.0': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -13996,21 +13996,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -14019,7 +14019,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/swagger-ui-react@5.18.0': dependencies: @@ -14027,7 +14027,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/tinycolor2@1.4.6': {} @@ -14046,11 +14046,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@types/xml2js@0.4.14': dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: @@ -14175,7 +14175,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -14183,7 +14183,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -14199,7 +14199,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/expect@4.0.17': dependencies: @@ -14210,13 +14210,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/pretty-format@4.0.17': dependencies: @@ -14244,7 +14244,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/utils@4.0.17': dependencies: @@ -15576,7 +15576,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 24.10.7 + '@types/node': 24.10.8 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -17233,7 +17233,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -17513,8 +17513,8 @@ snapshots: magicast@0.5.1: dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 source-map-js: 1.2.1 make-dir@3.1.0: @@ -18778,7 +18778,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.7 + '@types/node': 24.10.8 long: 5.2.3 proxmox-api@1.1.1: @@ -20234,14 +20234,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.7)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.7 + '@types/node': 24.10.8 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -20729,18 +20729,18 @@ snapshots: dependencies: global: 4.4.0 - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(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.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.3) optionalDependencies: - vite: 7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - typescript - vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -20749,7 +20749,7 @@ snapshots: rollup: 4.48.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 fsevents: 2.3.3 sass: 1.97.2 sugarss: 5.0.0(postcss@8.5.6) @@ -20757,10 +20757,10 @@ snapshots: tsx: 4.20.5 yaml: 2.5.1 - vitest@4.0.17(@types/node@24.10.7)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(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.17 - '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/pretty-format': 4.0.17 '@vitest/runner': 4.0.17 '@vitest/snapshot': 4.0.17 @@ -20777,10 +20777,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.10.7)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.7 + '@types/node': 24.10.8 '@vitest/ui': 4.0.17(vitest@4.0.17) jsdom: 27.4.0(postcss@8.5.6) transitivePeerDependencies: diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 71c2fab10..20a13d8a7 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -7,7 +7,7 @@ runs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: - node-version: 24.12.0 + node-version: 24.13.0 cache: "pnpm" - shell: bash From 62caa71a48c38f59f109666e83f26019586a5ca0 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:23:42 +0100 Subject: [PATCH 30/34] feat(widgets): add disks widget (#4445) Co-authored-by: ajnart <49837342+ajnart@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Meier Lukas --- packages/definitions/src/widget.ts | 1 + .../src/dashdot/dashdot-integration.ts | 2 +- .../health-monitoring-types.ts | 1 + .../src/mock/data/system-health-monitoring.ts | 1 + .../openmediavault-integration.ts | 2 + .../src/truenas/truenas-integration.ts | 47 +++++++- .../src/unraid/unraid-integration.ts | 2 + packages/translation/src/lang/en.json | 29 +++++ packages/widgets/src/index.tsx | 2 + .../widgets/src/system-disks/component.tsx | 100 ++++++++++++++++++ packages/widgets/src/system-disks/index.ts | 22 ++++ 11 files changed, 206 insertions(+), 3 deletions(-) create mode 100644 packages/widgets/src/system-disks/component.tsx create mode 100644 packages/widgets/src/system-disks/index.ts diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts index ec0d2ff66..55719026c 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -29,5 +29,6 @@ export const widgetKinds = [ "firewall", "notifications", "systemResources", + "systemDisks", ] as const; export type WidgetKind = (typeof widgetKinds)[number]; diff --git a/packages/integrations/src/dashdot/dashdot-integration.ts b/packages/integrations/src/dashdot/dashdot-integration.ts index 2efb47c16..fb5d9070e 100644 --- a/packages/integrations/src/dashdot/dashdot-integration.ts +++ b/packages/integrations/src/dashdot/dashdot-integration.ts @@ -55,7 +55,7 @@ export class DashDotIntegration extends Integration implements ISystemHealthMoni cpuTemp: cpuLoad.averageTemperature, availablePkgUpdates: 0, rebootRequired: false, - smart: [], + smart: [], // API endpoint does not provide S.M.A.R.T data. uptime: info.uptime, version: `${info.operatingSystemVersion}`, loadAverage: { diff --git a/packages/integrations/src/interfaces/health-monitoring/health-monitoring-types.ts b/packages/integrations/src/interfaces/health-monitoring/health-monitoring-types.ts index 49d659fe1..08b5b4100 100644 --- a/packages/integrations/src/interfaces/health-monitoring/health-monitoring-types.ts +++ b/packages/integrations/src/interfaces/health-monitoring/health-monitoring-types.ts @@ -29,6 +29,7 @@ export interface SystemHealthMonitoring { deviceName: string; temperature: number | null; overallStatus: string; + healthy: boolean; }[]; } diff --git a/packages/integrations/src/mock/data/system-health-monitoring.ts b/packages/integrations/src/mock/data/system-health-monitoring.ts index ebc2ca010..bafccd7c5 100644 --- a/packages/integrations/src/mock/data/system-health-monitoring.ts +++ b/packages/integrations/src/mock/data/system-health-monitoring.ts @@ -33,6 +33,7 @@ export class SystemHealthMonitoringMockService implements ISystemHealthMonitorin deviceName: "Mock Device", temperature: Math.floor(Math.random() * 100), // Random temperature between 0 and 99 overallStatus: "OK", + healthy: true, }, ], }); diff --git a/packages/integrations/src/openmediavault/openmediavault-integration.ts b/packages/integrations/src/openmediavault/openmediavault-integration.ts index 128e68a43..6449ee48c 100644 --- a/packages/integrations/src/openmediavault/openmediavault-integration.ts +++ b/packages/integrations/src/openmediavault/openmediavault-integration.ts @@ -62,6 +62,8 @@ export class OpenMediaVaultIntegration extends Integration implements ISystemHea const smart = smartResult.data.response.map((smart) => ({ deviceName: smart.devicename, temperature: smart.temperature, + // https://github.com/openmediavault/openmediavault/blob/2eb871d05cec6ff49603134d3acead561da01e4d/deb/openmediavault/usr/share/php/openmediavault/system/storage/smartinformation.inc#L592-L605 + healthy: smart.overallstatus === "GOOD", overallStatus: smart.overallstatus, })); diff --git a/packages/integrations/src/truenas/truenas-integration.ts b/packages/integrations/src/truenas/truenas-integration.ts index 8b0a79b89..4ff38d819 100644 --- a/packages/integrations/src/truenas/truenas-integration.ts +++ b/packages/integrations/src/truenas/truenas-integration.ts @@ -112,6 +112,27 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni }); } + private async getPoolsAsync() { + logger.debug("Retrieving pools", { + url: this.wsUrl(), + }); + + const response = await this.requestAsync("pool.query", [ + [], + { + extra: { + is_upgraded: true, + }, + }, + ]); + const result = await poolSchema.parseAsync(response); + logger.debug("Retrieved pools", { + url: this.wsUrl(), + count: result.length, + }); + return result; + } + /** * Retrieves data using the reporting method * @see https://www.truenas.com/docs/api/scale_websocket_api.html#reporting @@ -225,6 +246,7 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni const cpuData = this.extractLatestReportingData(reporting, "cpu"); const cpuTempData = this.extractLatestReportingData(reporting, "cputemp"); const memoryData = this.extractLatestReportingData(reporting, "memory"); + const datasets = await this.getPoolsAsync(); const netdata = await this.getReportingNetdataAsync(); @@ -236,14 +258,24 @@ export class TrueNasIntegration extends Integration implements ISystemHealthMoni cpuTemp: Math.max(...cpuTempData.filter((_item, i) => i > 0)), memAvailableInBytes: systemInformation.physmem, memUsedInBytes: memoryData[1] ?? 0, // Index 0 is UNIX timestamp, Index 1 is free space in bytes - fileSystem: [], + fileSystem: datasets.map((dataset) => ({ + deviceName: dataset.name, + available: `${dataset.size}`, // TODO: can we use number instead of string here? + used: `${dataset.allocated}`, + percentage: (dataset.allocated / dataset.size) * 100, + })), availablePkgUpdates: 0, network: { up: upload * NETWORK_MULTIPLIER, down: download * NETWORK_MULTIPLIER, }, loadAverage: null, - smart: [], + smart: datasets.map((dataset) => ({ + deviceName: dataset.name, + healthy: dataset.healthy, + overallStatus: dataset.status, + temperature: null, + })), uptime: systemInformation.uptime_seconds, version: systemInformation.version, cpuModelName: systemInformation.model, @@ -351,6 +383,17 @@ const reportingItemSchema = z.object({ type ReportingItem = z.infer; +const poolSchema = z.array( + z.object({ + name: z.string(), + status: z.string(), + healthy: z.boolean(), + free: z.number().min(0), + size: z.number(), + allocated: z.number(), + }), +); + const reportingNetDataSchema = z.array( z.object({ name: z.string(), diff --git a/packages/integrations/src/unraid/unraid-integration.ts b/packages/integrations/src/unraid/unraid-integration.ts index db4025ee2..577d34a4a 100644 --- a/packages/integrations/src/unraid/unraid-integration.ts +++ b/packages/integrations/src/unraid/unraid-integration.ts @@ -67,6 +67,8 @@ export class UnraidIntegration extends Integration implements ISystemHealthMonit deviceName: disk.name, temperature: disk.temp ?? null, overallStatus: disk.status, + // See ArrayDiskStatus from https://studio.apollographql.com/public/Unraid-API/variant/current/explorer + healthy: disk.status === "DISK_OK", })), }; } diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 2d9d69546..92f8ebc70 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -2608,6 +2608,35 @@ "up": "UP", "down": "DOWN" } + }, + "systemDisks": { + "name": "System disks", + "description": "Disk usage of your system", + "option": { + "showTemperatureIfAvailable": { + "label": "Show temperature if available" + }, + "displayMode": { + "label": "Display mode", + "option": { + "percentage": { + "label": "Percentage (e.g., 76%)" + }, + "absolute": { + "label": "Absolute values (e.g., 800GB / 1TB)" + }, + "free": { + "label": "Free space percentage (e.g., 24% free)" + } + } + }, + "showBackgroundBar": { + "label": "Show background usage bar" + } + }, + "status": { + "unhealthy": "Unhealthy" + } } }, "widgetPreview": { diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index 677b801f2..d13888c6a 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -37,6 +37,7 @@ import * as rssFeed from "./rssFeed"; import * as smartHomeEntityState from "./smart-home/entity-state"; import * as smartHomeExecuteAutomation from "./smart-home/execute-automation"; import * as stockPrice from "./stocks"; +import * as systemDisks from "./system-disks"; import * as systemResources from "./system-resources"; import * as video from "./video"; import * as weather from "./weather"; @@ -75,6 +76,7 @@ export const widgetImports = { notifications, mediaReleases, systemResources, + systemDisks, } satisfies WidgetImportRecord; export type WidgetImports = typeof widgetImports; diff --git a/packages/widgets/src/system-disks/component.tsx b/packages/widgets/src/system-disks/component.tsx new file mode 100644 index 000000000..eab43f768 --- /dev/null +++ b/packages/widgets/src/system-disks/component.tsx @@ -0,0 +1,100 @@ +"use client"; + +import { Box, Card, Group, Stack, useMantineColorScheme } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import { useRequiredBoard } from "@homarr/boards/context"; +import { useI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; +import { NoIntegrationDataError } from "../errors/no-data-integration"; + +type DisplayMode = WidgetComponentProps<"systemDisks">["options"]["displayMode"]; + +const getDisplayText = (item: { used: string; available: string; percentage: number }, displayMode: DisplayMode) => { + switch (displayMode) { + case "percentage": + return `${Math.round(item.percentage)}%`; + case "absolute": + return `${item.used} / ${item.available}`; + case "free": + return `${Math.round(100 - item.percentage)}% free`; + default: + return `${Math.round(item.percentage)}%`; + } +}; + +export default function SystemResources({ integrationIds, options }: WidgetComponentProps<"systemDisks">) { + const queryInput = { integrationIds }; + const [data] = clientApi.widget.healthMonitoring.getSystemHealthStatus.useSuspenseQuery(queryInput); + const utils = clientApi.useUtils(); + + const board = useRequiredBoard(); + const scheme = useMantineColorScheme(); + const t = useI18n(); + + const lastItem = data.at(-1); + + if (!lastItem) return null; + const { fileSystem, smart } = lastItem.healthInfo; + + clientApi.widget.healthMonitoring.subscribeSystemHealthStatus.useSubscription(queryInput, { + onData(data) { + utils.widget.healthMonitoring.getSystemHealthStatus.setData(queryInput, (oldData) => + oldData?.map((item) => (item.integrationId === data.integrationId ? { ...item, ...data } : item)), + ); + }, + }); + + if (fileSystem.length === 0) { + throw new NoIntegrationDataError(); + } + + return ( + + {fileSystem.map((item) => { + const smartItem = smart.find((smart) => smart.deviceName === item.deviceName); + const healthy = smartItem?.healthy ?? true; // fall back to healthy if no information is available + + return ( + + +
+

+ {item.deviceName} +

+

+ {getDisplayText(item, options.displayMode)} + {!healthy && {t("widget.systemDisks.status.unhealthy")}} +

+
+
+ {smartItem?.temperature && options.showTemperatureIfAvailable ? ( +

{smartItem.temperature}°C

+ ) : null} +
+
+ +
+ ); + })} +
+ ); +} diff --git a/packages/widgets/src/system-disks/index.ts b/packages/widgets/src/system-disks/index.ts new file mode 100644 index 000000000..99ea9a70a --- /dev/null +++ b/packages/widgets/src/system-disks/index.ts @@ -0,0 +1,22 @@ +import { IconServer2 } from "@tabler/icons-react"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const { definition, componentLoader } = createWidgetDefinition("systemDisks", { + icon: IconServer2, + supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid"], + createOptions() { + return optionsBuilder.from((factory) => ({ + showTemperatureIfAvailable: factory.switch({ defaultValue: true }), + displayMode: factory.select({ + options: (["percentage", "absolute", "free"] as const).map((value) => ({ + value, + label: (t) => t(`widget.systemDisks.option.displayMode.option.${value}.label`), + })), + defaultValue: "percentage", + }), + showBackgroundBar: factory.switch({ defaultValue: true }), + })); + }, +}).withDynamicImport(() => import("./component")); From 0ef3046d65b4afc746232413c97e2c32b9b7faf4 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 23 Jan 2026 18:54:02 +0100 Subject: [PATCH 31/34] ci: typo in runner for validating prebuilt-debian with arm64 (#4896) --- .github/workflows/on-pr-prebuilt-debian-validate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/on-pr-prebuilt-debian-validate.yml b/.github/workflows/on-pr-prebuilt-debian-validate.yml index e72acca1e..025f513e3 100644 --- a/.github/workflows/on-pr-prebuilt-debian-validate.yml +++ b/.github/workflows/on-pr-prebuilt-debian-validate.yml @@ -27,7 +27,7 @@ jobs: exit 1 fi prebuilt-debian-validate-arm64: - runs-on: ubuntu-24.04- + runs-on: ubuntu-24.04-arm timeout-minutes: 5 steps: - uses: actions/checkout@v6 From 81dac580050a86e34135beef09b876089777f1c7 Mon Sep 17 00:00:00 2001 From: Rhiz3K <33246262+Rhiz3K@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:09:53 +0100 Subject: [PATCH 32/34] feat(integrations): add Coolify integration and widget (#4789) Co-authored-by: Meier Lukas --- packages/api/src/router/widgets/coolify.ts | 50 +++ packages/api/src/router/widgets/index.ts | 1 + .../jobs/integrations/health-monitoring.ts | 9 +- packages/definitions/src/integration.ts | 8 + packages/definitions/src/widget.ts | 1 + packages/integrations/src/base/creator.ts | 2 + .../src/coolify/coolify-integration.ts | 351 ++++++++++++++++++ .../integrations/src/coolify/coolify-types.ts | 154 ++++++++ .../coolify/test/coolify-integration.spec.ts | 313 ++++++++++++++++ packages/integrations/src/index.ts | 1 + packages/integrations/src/types.ts | 1 + packages/request-handler/src/coolify.ts | 19 + .../request-handler/src/health-monitoring.ts | 2 +- packages/translation/src/lang/en.json | 36 ++ .../src/coolify/applications-section.tsx | 48 +++ packages/widgets/src/coolify/component.tsx | 76 ++++ packages/widgets/src/coolify/coolify-utils.ts | 125 +++++++ packages/widgets/src/coolify/index.ts | 28 ++ .../widgets/src/coolify/instance-card.tsx | 122 ++++++ packages/widgets/src/coolify/resource-row.tsx | 78 ++++ .../widgets/src/coolify/servers-section.tsx | 122 ++++++ .../widgets/src/coolify/services-section.tsx | 48 +++ .../src/coolify/single-instance-layout.tsx | 92 +++++ packages/widgets/src/coolify/types.ts | 15 + packages/widgets/src/index.tsx | 2 + 25 files changed, 1701 insertions(+), 3 deletions(-) create mode 100644 packages/api/src/router/widgets/coolify.ts create mode 100644 packages/integrations/src/coolify/coolify-integration.ts create mode 100644 packages/integrations/src/coolify/coolify-types.ts create mode 100644 packages/integrations/src/coolify/test/coolify-integration.spec.ts create mode 100644 packages/request-handler/src/coolify.ts create mode 100644 packages/widgets/src/coolify/applications-section.tsx create mode 100644 packages/widgets/src/coolify/component.tsx create mode 100644 packages/widgets/src/coolify/coolify-utils.ts create mode 100644 packages/widgets/src/coolify/index.ts create mode 100644 packages/widgets/src/coolify/instance-card.tsx create mode 100644 packages/widgets/src/coolify/resource-row.tsx create mode 100644 packages/widgets/src/coolify/servers-section.tsx create mode 100644 packages/widgets/src/coolify/services-section.tsx create mode 100644 packages/widgets/src/coolify/single-instance-layout.tsx create mode 100644 packages/widgets/src/coolify/types.ts diff --git a/packages/api/src/router/widgets/coolify.ts b/packages/api/src/router/widgets/coolify.ts new file mode 100644 index 000000000..8bdaa6f3e --- /dev/null +++ b/packages/api/src/router/widgets/coolify.ts @@ -0,0 +1,50 @@ +import { observable } from "@trpc/server/observable"; + +import type { CoolifyInstanceInfo } from "@homarr/integrations/types"; +import { coolifyRequestHandler } from "@homarr/request-handler/coolify"; + +import { createManyIntegrationMiddleware } from "../../middlewares/integration"; +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +export const coolifyRouter = createTRPCRouter({ + getInstancesInfo: publicProcedure + .concat(createManyIntegrationMiddleware("query", "coolify")) + .query(async ({ ctx }) => { + const results = await Promise.all( + ctx.integrations.map(async (integration) => { + const innerHandler = coolifyRequestHandler.handler(integration, {}); + const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + + return { + integrationId: integration.id, + integrationName: integration.name, + integrationUrl: integration.url, + instanceInfo: data, + updatedAt: timestamp, + }; + }), + ); + + return results; + }), + subscribeInstancesInfo: publicProcedure + .concat(createManyIntegrationMiddleware("query", "coolify")) + .subscription(({ ctx }) => { + return observable<{ integrationId: string; instanceInfo: CoolifyInstanceInfo; timestamp: Date }>((emit) => { + const unsubscribes = ctx.integrations.map((integration) => { + const innerHandler = coolifyRequestHandler.handler(integration, {}); + return innerHandler.subscribe((instanceInfo) => { + emit.next({ + integrationId: integration.id, + instanceInfo, + timestamp: new Date(), + }); + }); + }); + + return () => { + unsubscribes.forEach((unsubscribe) => unsubscribe()); + }; + }); + }), +}); diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index cac890f97..8f2d775db 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -3,6 +3,7 @@ import { lazy } from "@trpc/server"; import { createTRPCRouter } from "../../trpc"; export const widgetRouter = createTRPCRouter({ + coolify: lazy(() => import("./coolify").then((mod) => mod.coolifyRouter)), notebook: lazy(() => import("./notebook").then((mod) => mod.notebookRouter)), weather: lazy(() => import("./weather").then((mod) => mod.weatherRouter)), app: lazy(() => import("./app").then((mod) => mod.appRouter)), diff --git a/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts b/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts index e52db0d4e..197a61c8e 100644 --- a/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts +++ b/packages/cron-jobs/src/jobs/integrations/health-monitoring.ts @@ -1,4 +1,5 @@ import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions"; +import { coolifyRequestHandler } from "@homarr/request-handler/coolify"; import { clusterInfoRequestHandler, systemInfoRequestHandler } from "@homarr/request-handler/health-monitoring"; import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler"; @@ -9,16 +10,20 @@ export const healthMonitoringJob = createCronJob("healthMonitoring", EVERY_5_SEC (integration, itemOptions: Record) => { const { kind } = integration; - if (kind !== "proxmox" && kind !== "mock") { + if (kind !== "proxmox" && kind !== "mock" && kind !== "coolify") { return systemInfoRequestHandler.handler({ ...integration, kind }, itemOptions); } + if (kind === "coolify") { + return coolifyRequestHandler.handler({ ...integration, kind }, itemOptions); + } return clusterInfoRequestHandler.handler({ ...integration, kind }, itemOptions); }, { - widgetKinds: ["healthMonitoring", "systemResources"], + widgetKinds: ["healthMonitoring", "systemResources", "coolify"], getInput: { healthMonitoring: () => ({}), systemResources: () => ({}), + coolify: () => ({}), }, }, ), diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index e8518b016..d97b0c31b 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -305,6 +305,14 @@ export const integrationDefs = { category: ["healthMonitoring"], documentationUrl: createDocumentationLink("/docs/integrations/unraid"), }, + coolify: { + name: "Coolify", + secretKinds: [["apiKey"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/coolify.svg", + category: ["healthMonitoring"], + // @ts-expect-error - docs page will be created when integration is merged + documentationUrl: createDocumentationLink("/docs/integrations/coolify"), + }, // 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/definitions/src/widget.ts b/packages/definitions/src/widget.ts index 55719026c..8d5b657d2 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -29,6 +29,7 @@ export const widgetKinds = [ "firewall", "notifications", "systemResources", + "coolify", "systemDisks", ] as const; export type WidgetKind = (typeof widgetKinds)[number]; diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts index adca7fcb1..d1ad60ad0 100644 --- a/packages/integrations/src/base/creator.ts +++ b/packages/integrations/src/base/creator.ts @@ -2,6 +2,7 @@ import type { IntegrationKind } from "@homarr/definitions"; import { AdGuardHomeIntegration } from "../adguard-home/adguard-home-integration"; import { CodebergIntegration } from "../codeberg/codeberg-integration"; +import { CoolifyIntegration } from "../coolify/coolify-integration"; import { DashDotIntegration } from "../dashdot/dashdot-integration"; import { DockerHubIntegration } from "../docker-hub/docker-hub-integration"; import { Aria2Integration } from "../download-client/aria2/aria2-integration"; @@ -103,6 +104,7 @@ export const integrationCreators = { mock: MockIntegration, truenas: TrueNasIntegration, unraid: UnraidIntegration, + coolify: CoolifyIntegration, } satisfies Record Promise]>; type IntegrationInstanceOfKind = { diff --git a/packages/integrations/src/coolify/coolify-integration.ts b/packages/integrations/src/coolify/coolify-integration.ts new file mode 100644 index 000000000..fa7e50667 --- /dev/null +++ b/packages/integrations/src/coolify/coolify-integration.ts @@ -0,0 +1,351 @@ +import { ResponseError } from "@homarr/common/server"; +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; + +import type { IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; +import type { + CoolifyApplication, + CoolifyApplicationWithContext, + CoolifyEnvironment, + CoolifyEnvironmentVariable, + CoolifyHealthcheck, + CoolifyInstanceInfo, + CoolifyProject, + CoolifyProjectWithEnvironments, + CoolifyResource, + CoolifyServer, + CoolifyService, + CoolifyServiceWithContext, +} from "./coolify-types"; +import { + coolifyApplicationLogSchema, + coolifyApplicationSchema, + coolifyEnvironmentSchema, + coolifyEnvironmentVariableSchema, + coolifyHealthcheckSchema, + coolifyProjectSchema, + coolifyProjectWithEnvironmentsSchema, + coolifyResourceSchema, + coolifyServerSchema, + coolifyServiceSchema, +} from "./coolify-types"; + +export class CoolifyIntegration extends Integration { + protected async testingAsync(input: IntegrationTestingInput): Promise { + const healthUrl = this.url("/api/health"); + const healthResponse = await input.fetchAsync(healthUrl, {}); + + if (!healthResponse.ok) { + throw new ResponseError(healthResponse); + } + + // Test API key authentication + const versionUrl = this.url("/api/v1/version"); + const versionResponse = await input.fetchAsync(versionUrl, { + headers: this.getAuthHeaders(), + }); + + if (!versionResponse.ok) { + throw new ResponseError(versionResponse); + } + + return { success: true }; + } + + /** + * Get Coolify version information + * https://coolify.io/docs/api-reference/api/operations/version + */ + public async getVersionAsync(): Promise { + const url = this.url("/api/v1/version"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const version = await response.text(); + return version.trim(); + } + + /** + * Get Coolify healthcheck status + * https://coolify.io/docs/api-reference/api/operations/healthcheck + */ + public async getHealthcheckAsync(): Promise { + const url = this.url("/api/v1/healthcheck"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyHealthcheckSchema.parse(await response.json()); + } + + /** + * List all applications + * https://coolify.io/docs/api-reference/api/operations/list-applications + */ + public async listApplicationsAsync(): Promise { + const url = this.url("/api/v1/applications"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyApplicationSchema.array().parse(await response.json()); + } + + /** + * Get application by UUID + * https://coolify.io/docs/api-reference/api/operations/get-application-by-uuid + */ + public async getApplicationByUuidAsync(uuid: string): Promise { + const url = this.url(`/api/v1/applications/${uuid}`); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyApplicationSchema.parse(await response.json()); + } + + /** + * Get application logs by UUID + * https://coolify.io/docs/api-reference/api/operations/get-application-logs-by-uuid + */ + public async getApplicationLogsAsync(uuid: string): Promise { + const url = this.url(`/api/v1/applications/${uuid}/logs`); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + const result = coolifyApplicationLogSchema.parse(await response.json()); + return result.logs; + } + + /** + * List environment variables by application UUID + * https://coolify.io/docs/api-reference/api/operations/list-envs-by-application-uuid + */ + public async listEnvsByApplicationUuidAsync(uuid: string): Promise { + const url = this.url(`/api/v1/applications/${uuid}/envs`); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyEnvironmentVariableSchema.array().parse(await response.json()); + } + + /** + * List projects + * https://coolify.io/docs/api-reference/api/operations/list-projects + */ + public async listProjectsAsync(): Promise { + const url = this.url("/api/v1/projects"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyProjectSchema.array().parse(await response.json()); + } + + /** + * Get project by UUID (includes environments) + * https://coolify.io/docs/api-reference/api/operations/get-project-by-uuid + */ + public async getProjectByUuidAsync(uuid: string): Promise { + const url = this.url(`/api/v1/projects/${uuid}`); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyProjectWithEnvironmentsSchema.parse(await response.json()); + } + + /** + * Get environments + * https://coolify.io/docs/api-reference/api/operations/get-environments + */ + public async getEnvironmentsAsync(): Promise { + const url = this.url("/api/v1/environments"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyEnvironmentSchema.array().parse(await response.json()); + } + + /** + * Get environment by name or UUID + * https://coolify.io/docs/api-reference/api/operations/get-environment-by-name-or-uuid + */ + public async getEnvironmentByNameOrUuidAsync(nameOrUuid: string): Promise { + const url = this.url(`/api/v1/environments/${nameOrUuid}`); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyEnvironmentSchema.parse(await response.json()); + } + + /** + * List resources + * https://coolify.io/docs/api-reference/api/operations/list-resources + */ + public async listResourcesAsync(): Promise { + const url = this.url("/api/v1/resources"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyResourceSchema.array().parse(await response.json()); + } + + /** + * List servers + * https://coolify.io/docs/api-reference/api/operations/list-servers + */ + public async listServersAsync(): Promise { + const url = this.url("/api/v1/servers"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyServerSchema.array().parse(await response.json()); + } + + /** + * List services + * https://coolify.io/docs/api-reference/api/operations/list-services + */ + public async listServicesAsync(): Promise { + const url = this.url("/api/v1/services"); + const response = await fetchWithTrustedCertificatesAsync(url, { + headers: this.getAuthHeaders(), + }); + + if (!response.ok) { + throw new ResponseError(response); + } + + return coolifyServiceSchema.array().parse(await response.json()); + } + + public async getInstanceInfoAsync(): Promise { + const [version, applications, services, projectsWithEnvs, servers] = await Promise.all([ + this.getVersionAsync(), + this.listApplicationsAsync(), + this.listServicesAsync(), + this.listProjectsWithEnvironmentsAsync(), + this.listServersAsync(), + ]); + + const envToProjectMap = new Map< + number, + { projectName: string; projectUuid: string; environmentName: string; environmentUuid?: string } + >(); + for (const project of projectsWithEnvs) { + for (const env of project.environments ?? []) { + if (env.id != null) { + envToProjectMap.set(env.id, { + projectName: project.name, + projectUuid: project.uuid, + environmentName: env.name, + environmentUuid: env.uuid ?? undefined, + }); + } + } + } + + const applicationsWithContext: CoolifyApplicationWithContext[] = applications.map((app) => { + const context = app.environment_id ? envToProjectMap.get(app.environment_id) : undefined; + return { + ...app, + projectName: context?.projectName, + projectUuid: context?.projectUuid, + environmentName: context?.environmentName, + environmentUuid: context?.environmentUuid, + }; + }); + + const servicesWithContext: CoolifyServiceWithContext[] = services.map((service) => { + const context = service.environment_id ? envToProjectMap.get(service.environment_id) : undefined; + const fqdn = service.fqdn ?? service.applications?.find((app) => app.fqdn)?.fqdn ?? undefined; + return { + ...service, + fqdn, + projectName: context?.projectName, + projectUuid: context?.projectUuid, + environmentName: context?.environmentName, + environmentUuid: context?.environmentUuid, + }; + }); + + return { + version, + applications: applicationsWithContext, + services: servicesWithContext, + servers, + }; + } + + /** + * List all projects with their environments + */ + private async listProjectsWithEnvironmentsAsync(): Promise { + const projects = await this.listProjectsAsync(); + const projectsWithEnvs = await Promise.all(projects.map((project) => this.getProjectByUuidAsync(project.uuid))); + return projectsWithEnvs; + } + + private getAuthHeaders(): Record { + return { + Authorization: `Bearer ${this.getSecretValue("apiKey")}`, + }; + } +} diff --git a/packages/integrations/src/coolify/coolify-types.ts b/packages/integrations/src/coolify/coolify-types.ts new file mode 100644 index 000000000..a2995d23b --- /dev/null +++ b/packages/integrations/src/coolify/coolify-types.ts @@ -0,0 +1,154 @@ +// Coolify API Types and Schemas based on https://coolify.io/docs/api-reference/api +import { z } from "zod/v4"; + +// Health check schema +export const coolifyHealthcheckSchema = z.object({ + status: z.string(), +}); + +export type CoolifyHealthcheck = z.infer; + +// Application log schema +export const coolifyApplicationLogSchema = z.object({ + logs: z.string(), +}); + +export type CoolifyApplicationLog = z.infer; + +// Environment variable schema +export const coolifyEnvironmentVariableSchema = z.object({ + id: z.number().nullish(), + key: z.string(), + value: z.string(), + is_build_time: z.boolean().nullish(), + is_preview: z.boolean().nullish(), + application_id: z.number().nullish(), +}); + +export type CoolifyEnvironmentVariable = z.infer; + +// Application schema (only fields used in the widget) +export const coolifyApplicationSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), + status: z.string().nullish(), + fqdn: z.string().nullish(), + environment_id: z.number().nullish(), + server_id: z.number().nullish(), + destination_id: z.number().nullish(), + updated_at: z.string().nullish(), + last_online_at: z.string().nullish(), +}); + +export type CoolifyApplication = z.infer; + +// Project schema +export const coolifyProjectSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), +}); + +export type CoolifyProject = z.infer; + +// Environment schema +export const coolifyEnvironmentSchema = z.object({ + id: z.number().nullish(), + uuid: z.string().nullish(), + name: z.string(), + project_id: z.number().nullish(), +}); + +export type CoolifyEnvironment = z.infer; + +// Project with environments schema +export const coolifyProjectWithEnvironmentsSchema = coolifyProjectSchema.extend({ + environments: z.array(coolifyEnvironmentSchema).nullish(), +}); + +export type CoolifyProjectWithEnvironments = z.infer; + +// Resource schema +export const coolifyResourceSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), + type: z.string(), + status: z.string().nullish(), +}); + +export type CoolifyResource = z.infer; + +// Server settings schema +export const coolifyServerSettingsSchema = z.object({ + server_id: z.number().nullish(), + is_build_server: z.boolean().nullish(), + is_reachable: z.boolean().nullish(), + is_usable: z.boolean().nullish(), +}); + +export type CoolifyServerSettings = z.infer; + +// Server schema +export const coolifyServerSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), + ip: z.string().nullish(), + is_reachable: z.boolean().nullish(), + is_usable: z.boolean().nullish(), + settings: coolifyServerSettingsSchema.nullish(), +}); + +export type CoolifyServer = z.infer; + +// Service application schema (nested in services) +export const coolifyServiceApplicationSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), + fqdn: z.string().nullish(), + status: z.string().nullish(), +}); + +export type CoolifyServiceApplication = z.infer; + +// Service schema +export const coolifyServiceSchema = z.object({ + id: z.number().nullish(), + uuid: z.string(), + name: z.string(), + status: z.string().nullish(), + fqdn: z.string().nullish(), + environment_id: z.number().nullish(), + server_id: z.number().nullish(), + destination_id: z.number().nullish(), + updated_at: z.string().nullish(), + applications: z.array(coolifyServiceApplicationSchema).nullish(), +}); + +export type CoolifyService = z.infer; + +// Extended types with context (not from API, added by integration) +export interface CoolifyApplicationWithContext extends CoolifyApplication { + projectName?: string; + projectUuid?: string; + environmentName?: string; + environmentUuid?: string; +} + +export interface CoolifyServiceWithContext extends CoolifyService { + projectName?: string; + projectUuid?: string; + environmentName?: string; + environmentUuid?: string; +} + +// Aggregated information for the Coolify instance +export interface CoolifyInstanceInfo { + version: string; + applications: CoolifyApplicationWithContext[]; + services: CoolifyServiceWithContext[]; + servers: CoolifyServer[]; +} diff --git a/packages/integrations/src/coolify/test/coolify-integration.spec.ts b/packages/integrations/src/coolify/test/coolify-integration.spec.ts new file mode 100644 index 000000000..c551fd3dc --- /dev/null +++ b/packages/integrations/src/coolify/test/coolify-integration.spec.ts @@ -0,0 +1,313 @@ +import { Request, Response } from "undici"; +import { beforeEach, describe, expect, test, vi } from "vitest"; + +import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http"; + +import { CoolifyIntegration } from "../coolify-integration"; +import type { + CoolifyApplication, + CoolifyProject, + CoolifyProjectWithEnvironments, + CoolifyServer, + CoolifyService, +} from "../coolify-types"; + +vi.mock("@homarr/core/infrastructure/http", () => ({ + fetchWithTrustedCertificatesAsync: vi.fn(), +})); + +const TEST_API_KEY = "test-api-key-12345"; +const TEST_URL = "https://coolify.example.com"; + +type MockResponseData = string | Record | unknown[]; + +const mockFetchWithTrustedCertificates = vi.mocked(fetchWithTrustedCertificatesAsync); + +const setupMockFetch = (responses: Record) => { + mockFetchWithTrustedCertificates.mockImplementation((url) => { + const urlString = typeof url === "string" ? url : url instanceof Request ? url.url : url.toString(); + const urlObj = new URL(urlString); + const path = urlObj.pathname; + + if (path in responses) { + const data = responses[path]; + const body = typeof data === "string" ? data : JSON.stringify(data); + return Promise.resolve( + new Response(body, { + status: 200, + headers: { "content-type": "application/json" }, + }) as unknown as Awaited>, + ); + } + + return Promise.resolve( + new Response(JSON.stringify({ error: "Not Found" }), { + status: 404, + headers: { "content-type": "application/json" }, + }) as unknown as Awaited>, + ); + }); +}; + +const createCoolifyIntegration = () => { + return new CoolifyIntegration({ + id: "test-coolify", + name: "Test Coolify", + url: TEST_URL, + externalUrl: null, + decryptedSecrets: [{ kind: "apiKey", value: TEST_API_KEY }], + }); +}; + +describe("CoolifyIntegration", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe("getVersionAsync", () => { + test("should return version string from Coolify API", async () => { + setupMockFetch({ + "/api/v1/version": "4.0.0-beta.460", + }); + + const integration = createCoolifyIntegration(); + const result = await integration.getVersionAsync(); + + expect(result).toBe("4.0.0-beta.460"); + expect(mockFetchWithTrustedCertificates).toHaveBeenCalled(); + }); + + test("should throw error when API returns error", async () => { + mockFetchWithTrustedCertificates.mockResolvedValue( + new Response("Unauthorized", { + status: 401, + headers: { "content-type": "text/plain" }, + }) as unknown as Awaited>, + ); + + const integration = createCoolifyIntegration(); + await expect(integration.getVersionAsync()).rejects.toThrow(); + }); + }); + + describe("listServersAsync", () => { + test("should return list of servers", async () => { + const servers: CoolifyServer[] = [ + { + id: 1, + uuid: "server-uuid-1", + name: "Production Server", + ip: "192.168.1.100", + is_reachable: true, + is_usable: true, + settings: { is_build_server: false }, + }, + { + id: 2, + uuid: "server-uuid-2", + name: "Build Server", + ip: "192.168.1.101", + is_reachable: true, + is_usable: true, + settings: { is_build_server: true }, + }, + ]; + + setupMockFetch({ + "/api/v1/servers": servers, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.listServersAsync(); + + expect(result).toHaveLength(2); + expect(result[0]?.name).toBe("Production Server"); + expect(result[1]?.settings?.is_build_server).toBe(true); + }); + }); + + describe("listApplicationsAsync", () => { + test("should return list of applications", async () => { + const applications: CoolifyApplication[] = [ + { + id: 1, + uuid: "app-uuid-1", + name: "my-app", + fqdn: "https://myapp.example.com", + status: "running", + updated_at: "2024-01-01T00:00:00Z", + }, + { + id: 2, + uuid: "app-uuid-2", + name: "another-app", + fqdn: "https://another.example.com", + status: "stopped", + updated_at: "2024-01-01T00:00:00Z", + }, + ]; + + setupMockFetch({ + "/api/v1/applications": applications, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.listApplicationsAsync(); + + expect(result).toHaveLength(2); + expect(result[0]?.status).toBe("running"); + expect(result[1]?.status).toBe("stopped"); + }); + }); + + describe("listServicesAsync", () => { + test("should return list of services", async () => { + const services: CoolifyService[] = [ + { + id: 1, + uuid: "service-uuid-1", + name: "postgresql", + updated_at: "2024-01-01T00:00:00Z", + }, + ]; + + setupMockFetch({ + "/api/v1/services": services, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.listServicesAsync(); + + expect(result).toHaveLength(1); + expect(result[0]?.name).toBe("postgresql"); + }); + }); + + describe("listProjectsAsync", () => { + test("should return list of projects", async () => { + const projects: CoolifyProject[] = [ + { + id: 1, + uuid: "proj-uuid-1", + name: "Production", + }, + ]; + + setupMockFetch({ + "/api/v1/projects": projects, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.listProjectsAsync(); + + expect(result).toHaveLength(1); + expect(result[0]?.name).toBe("Production"); + }); + }); + + describe("getInstanceInfoAsync", () => { + test("should aggregate all instance data with project context", async () => { + const projectWithEnvs: CoolifyProjectWithEnvironments = { + id: 1, + uuid: "proj-uuid-1", + name: "Production", + environments: [ + { + id: 1, + uuid: "env-uuid-1", + name: "production", + project_id: 1, + }, + ], + }; + + setupMockFetch({ + "/api/v1/version": "4.0.0-beta.460", + "/api/v1/applications": [ + { + id: 1, + uuid: "app-uuid-1", + name: "my-app", + status: "running", + environment_id: 1, + updated_at: "2024-01-01T00:00:00Z", + }, + ], + "/api/v1/services": [ + { + id: 1, + uuid: "service-uuid-1", + name: "postgres", + environment_id: 1, + updated_at: "2024-01-01T00:00:00Z", + }, + ], + "/api/v1/projects": [ + { + id: 1, + uuid: "proj-uuid-1", + name: "Production", + }, + ], + "/api/v1/servers": [ + { + id: 1, + uuid: "server-uuid-1", + name: "Server 1", + ip: "192.168.1.1", + is_reachable: true, + is_usable: true, + settings: { is_build_server: false }, + }, + ], + "/api/v1/projects/proj-uuid-1": projectWithEnvs, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.getInstanceInfoAsync(); + + expect(result.version).toBe("4.0.0-beta.460"); + expect(result.applications).toHaveLength(1); + expect(result.services).toHaveLength(1); + expect(result.servers).toHaveLength(1); + expect(result.applications[0]?.projectName).toBe("Production"); + expect(result.applications[0]?.environmentName).toBe("production"); + }); + }); + + describe("getHealthcheckAsync", () => { + test("should return healthcheck status", async () => { + setupMockFetch({ + "/api/v1/healthcheck": { status: "healthy" }, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.getHealthcheckAsync(); + + expect(result.status).toBe("healthy"); + }); + }); + + describe("getApplicationByUuidAsync", () => { + test("should return application details by UUID", async () => { + const application: CoolifyApplication = { + id: 1, + uuid: "app-uuid-1", + name: "my-app", + fqdn: "https://app.example.com", + status: "running", + updated_at: "2024-01-01T00:00:00Z", + }; + + setupMockFetch({ + "/api/v1/applications/app-uuid-1": application, + }); + + const integration = createCoolifyIntegration(); + const result = await integration.getApplicationByUuidAsync("app-uuid-1"); + + expect(result.uuid).toBe("app-uuid-1"); + expect(result.name).toBe("my-app"); + }); + }); +}); diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index 45a37e476..a2f1287df 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -25,6 +25,7 @@ export { TrueNasIntegration } from "./truenas/truenas-integration"; export { UnraidIntegration } from "./unraid/unraid-integration"; export { OPNsenseIntegration } from "./opnsense/opnsense-integration"; export { ICalIntegration } from "./ical/ical-integration"; +export { CoolifyIntegration } from "./coolify/coolify-integration"; // Types export type { IntegrationInput } from "./base/integration"; diff --git a/packages/integrations/src/types.ts b/packages/integrations/src/types.ts index e38b3e710..d4be3a9c2 100644 --- a/packages/integrations/src/types.ts +++ b/packages/integrations/src/types.ts @@ -11,3 +11,4 @@ export * from "./proxmox/proxmox-types"; export * from "./unifi-controller/unifi-controller-types"; export * from "./opnsense/opnsense-types"; export * from "./interfaces/media-releases"; +export * from "./coolify/coolify-types"; diff --git a/packages/request-handler/src/coolify.ts b/packages/request-handler/src/coolify.ts new file mode 100644 index 000000000..d307a780f --- /dev/null +++ b/packages/request-handler/src/coolify.ts @@ -0,0 +1,19 @@ +import dayjs from "dayjs"; + +import { createIntegrationAsync } from "@homarr/integrations"; +import type { CoolifyInstanceInfo } from "@homarr/integrations/types"; + +import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler"; + +export const coolifyRequestHandler = createCachedIntegrationRequestHandler< + CoolifyInstanceInfo, + "coolify", + Record +>({ + async requestAsync(integration, _input) { + const integrationInstance = await createIntegrationAsync(integration); + return await integrationInstance.getInstanceInfoAsync(); + }, + cacheDuration: dayjs.duration(30, "seconds"), + queryKey: "coolifyInfo", +}); diff --git a/packages/request-handler/src/health-monitoring.ts b/packages/request-handler/src/health-monitoring.ts index 3a8959286..98d0cce3d 100644 --- a/packages/request-handler/src/health-monitoring.ts +++ b/packages/request-handler/src/health-monitoring.ts @@ -8,7 +8,7 @@ import { createCachedIntegrationRequestHandler } from "./lib/cached-integration- export const systemInfoRequestHandler = createCachedIntegrationRequestHandler< SystemHealthMonitoring, - Exclude, "proxmox">, + Exclude, "proxmox" | "coolify">, Record >({ async requestAsync(integration, _input) { diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 92f8ebc70..6fbbfa187 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1138,6 +1138,9 @@ "dangerZone": "Danger zone", "noResults": "No results found", "unsavedChanges": "You have unsaved changes!", + "servers": "Servers", + "applications": "Apps", + "services": "Services", "preview": { "show": "Show preview", "hide": "Hide preview" @@ -1960,6 +1963,39 @@ "internalServerError": "Failed to fetch containers stats" } }, + "coolify": { + "name": "Coolify", + "description": "Overview of your Coolify instance with servers and applications", + "option": { + "showServers": { + "label": "Show servers" + }, + "showApplications": { + "label": "Show applications" + }, + "showServices": { + "label": "Show services" + } + }, + "empty": { + "servers": "No servers found", + "applications": "No applications found", + "services": "No services found" + }, + "footer": { + "updated": "Updated {when}" + }, + "error": { + "noIntegration": "No Coolify integration configured", + "internalServerError": "Failed to fetch Coolify data" + }, + "server": { + "buildServer": "Build" + }, + "instances": { + "title": "Instances" + } + }, "common": { "location": { "query": "City / Postal code", diff --git a/packages/widgets/src/coolify/applications-section.tsx b/packages/widgets/src/coolify/applications-section.tsx new file mode 100644 index 000000000..bbc52c662 --- /dev/null +++ b/packages/widgets/src/coolify/applications-section.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { Accordion, Badge, Group, Stack, Text } from "@mantine/core"; +import { IconCloud } from "@tabler/icons-react"; + +import type { CoolifyApplicationWithContext } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { getBadgeColor, parseStatus } from "./coolify-utils"; +import { ResourceRow } from "./resource-row"; + +interface ApplicationsSectionProps { + applications: CoolifyApplicationWithContext[]; + baseUrl: string; + isTiny: boolean; +} + +export function ApplicationsSection({ applications, baseUrl, isTiny }: ApplicationsSectionProps) { + const t = useScopedI18n("widget.coolify"); + const tCommon = useScopedI18n("common"); + const runningApps = applications.filter((app) => parseStatus(app.status ?? "") === "running").length; + + return ( + + }> + + {tCommon("applications")} + + {runningApps} / {applications.length} + + + + + {applications.length > 0 ? ( + + {applications.map((app) => ( + + ))} + + ) : ( + + {t("empty.applications")} + + )} + + + ); +} diff --git a/packages/widgets/src/coolify/component.tsx b/packages/widgets/src/coolify/component.tsx new file mode 100644 index 000000000..a62b4f3cd --- /dev/null +++ b/packages/widgets/src/coolify/component.tsx @@ -0,0 +1,76 @@ +"use client"; + +import { ScrollArea, Stack, Text } from "@mantine/core"; + +import { clientApi } from "@homarr/api/client"; +import { useScopedI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; +import { createWidgetKey } from "./coolify-utils"; +import { InstanceCard } from "./instance-card"; +import { SingleInstanceLayout } from "./single-instance-layout"; + +export default function CoolifyWidget({ options, integrationIds, width }: WidgetComponentProps<"coolify">) { + const t = useScopedI18n("widget.coolify"); + + if (integrationIds.length === 0) { + return ( + + {t("error.noIntegration")} + + ); + } + + return ; +} + +interface CoolifyContentProps { + integrationIds: string[]; + options: WidgetComponentProps<"coolify">["options"]; + width: number; +} + +function CoolifyContent({ integrationIds, options, width }: CoolifyContentProps) { + const [instancesData] = clientApi.widget.coolify.getInstancesInfo.useSuspenseQuery({ integrationIds }); + + const utils = clientApi.useUtils(); + clientApi.widget.coolify.subscribeInstancesInfo.useSubscription( + { integrationIds }, + { + onData(newData) { + utils.widget.coolify.getInstancesInfo.setData({ integrationIds }, (prevData) => { + if (!prevData) return prevData; + return prevData.map((instance) => + instance.integrationId === newData.integrationId + ? { ...instance, instanceInfo: newData.instanceInfo, updatedAt: newData.timestamp } + : instance, + ); + }); + }, + }, + ); + + const isTiny = width < 256; + const [firstInstance] = instancesData; + const widgetKey = createWidgetKey(integrationIds); + + if (instancesData.length === 1 && firstInstance) { + return ; + } + + return ( + + + {instancesData.map((instance) => ( + + ))} + + + ); +} diff --git a/packages/widgets/src/coolify/coolify-utils.ts b/packages/widgets/src/coolify/coolify-utils.ts new file mode 100644 index 000000000..7bf4f50cb --- /dev/null +++ b/packages/widgets/src/coolify/coolify-utils.ts @@ -0,0 +1,125 @@ +import type { + CoolifyApplicationWithContext, + CoolifyServer, + CoolifyServiceWithContext, +} from "@homarr/integrations/types"; + +export function parseStatus(status: string): string { + const firstPart = status.split(":")[0]?.toLowerCase(); + if (!firstPart) return "unknown"; + return firstPart; +} + +export function cleanFqdn(fqdn: string | undefined | null): string | undefined { + if (!fqdn) return undefined; + const firstUrl = fqdn.split(",")[0]?.trim(); + if (!firstUrl) return undefined; + try { + const url = new URL(firstUrl); + return `${url.protocol}//${url.host}${url.pathname}`.replace(/\/$/, ""); + } catch { + return firstUrl; + } +} + +export function getStatusColor(status: string): string { + const colors: Record = { + running: "green", + stopped: "red", + exited: "red", + starting: "yellow", + restarting: "yellow", + }; + return colors[status] ?? "gray"; +} + +export function getBadgeColor(running: number, total: number): string { + if (total === 0) return "gray"; + if (running === total) return "green"; + if (running > 0) return "yellow"; + return "red"; +} + +export function formatRelativeTime(dateString: string | null | undefined): string | undefined { + if (!dateString) return undefined; + const date = new Date(dateString); + if (isNaN(date.getTime())) return undefined; + + const now = new Date(); + const diffMs = now.getTime() - date.getTime(); + const diffSec = Math.floor(diffMs / 1000); + const diffMin = Math.floor(diffSec / 60); + const diffHour = Math.floor(diffMin / 60); + const diffDay = Math.floor(diffHour / 24); + + if (diffDay > 0) { + const remainingHours = diffHour % 24; + return remainingHours > 0 ? `${diffDay}d ${remainingHours}h ago` : `${diffDay}d ago`; + } + if (diffHour > 0) { + const remainingMin = diffMin % 60; + return remainingMin > 0 ? `${diffHour}h ${remainingMin}m ago` : `${diffHour}h ago`; + } + if (diffMin > 0) return `${diffMin}m ago`; + return "just now"; +} + +export function getResourceTimestamp( + item: { updated_at?: string | null; last_online_at?: string | null; status?: string | null }, + resourceType: "application" | "service", +): string | undefined { + const status = parseStatus(item.status ?? ""); + const isRunning = status === "running"; + + if (isRunning) return undefined; + + const timestamp = resourceType === "application" ? (item.last_online_at ?? item.updated_at) : item.updated_at; + return formatRelativeTime(timestamp); +} + +export function buildServerResourceCounts( + servers: CoolifyServer[], + applications: CoolifyApplicationWithContext[], + services: CoolifyServiceWithContext[], +): Map { + const serverResourceCounts = new Map(); + + for (const server of servers) { + const serverId = server.settings?.server_id ?? server.id ?? 0; + serverResourceCounts.set(serverId, { apps: 0, services: 0 }); + } + + const destinationToServer = new Map(); + for (const service of services) { + if (service.destination_id != null && service.server_id != null) { + destinationToServer.set(service.destination_id, service.server_id); + } + } + + for (const app of applications) { + const serverId = app.server_id ?? destinationToServer.get(app.destination_id ?? 0) ?? app.destination_id ?? 0; + const counts = serverResourceCounts.get(serverId); + if (counts) { + counts.apps++; + } + } + + for (const service of services) { + const serverId = service.server_id ?? service.destination_id ?? 0; + const counts = serverResourceCounts.get(serverId); + if (counts) { + counts.services++; + } + } + + return serverResourceCounts; +} + +export function createWidgetKey(integrationIds: string[]): string { + return integrationIds.slice().sort().join("-"); +} + +export function createStorageKey(widgetKey: string, integrationId: string, type: "sections" | "show-ip"): string { + const cardKey = widgetKey.includes("-") ? `${widgetKey}-${integrationId}` : widgetKey; + return `coolify-${type}-${cardKey}`; +} diff --git a/packages/widgets/src/coolify/index.ts b/packages/widgets/src/coolify/index.ts new file mode 100644 index 000000000..cebf9de05 --- /dev/null +++ b/packages/widgets/src/coolify/index.ts @@ -0,0 +1,28 @@ +import { IconCloud, IconServerOff } from "@tabler/icons-react"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const { definition, componentLoader } = createWidgetDefinition("coolify", { + icon: IconCloud, + createOptions() { + return optionsBuilder.from((factory) => ({ + showServers: factory.switch({ + defaultValue: true, + }), + showApplications: factory.switch({ + defaultValue: true, + }), + showServices: factory.switch({ + defaultValue: true, + }), + })); + }, + supportedIntegrations: ["coolify"], + errors: { + INTERNAL_SERVER_ERROR: { + icon: IconServerOff, + message: (t) => t("widget.coolify.error.internalServerError"), + }, + }, +}).withDynamicImport(() => import("./component")); diff --git a/packages/widgets/src/coolify/instance-card.tsx b/packages/widgets/src/coolify/instance-card.tsx new file mode 100644 index 000000000..f6eec9c52 --- /dev/null +++ b/packages/widgets/src/coolify/instance-card.tsx @@ -0,0 +1,122 @@ +"use client"; + +import { Accordion, Anchor, Badge, Card, Group, Image, Text } from "@mantine/core"; +import { useLocalStorage } from "@mantine/hooks"; + +import { useTimeAgo } from "@homarr/common"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { ApplicationsSection } from "./applications-section"; +import { buildServerResourceCounts, getBadgeColor, parseStatus } from "./coolify-utils"; +import { ServersSection } from "./servers-section"; +import { ServicesSection } from "./services-section"; +import type { CoolifyOptions, InstanceData } from "./types"; +import { COOLIFY_ICON_URL } from "./types"; + +interface InstanceCardProps { + instance: InstanceData; + options: CoolifyOptions; + isTiny: boolean; + widgetKey: string; +} + +export function InstanceCard({ instance, options, isTiny, widgetKey }: InstanceCardProps) { + const t = useScopedI18n("widget.coolify"); + const cardKey = `${widgetKey}-${instance.integrationId}`; + const [showIp, setShowIp] = useLocalStorage({ + key: `coolify-show-ip-${cardKey}`, + defaultValue: false, + }); + const [openSections, setOpenSections] = useLocalStorage({ + key: `coolify-sections-${cardKey}`, + defaultValue: ["applications"], + }); + + const serverResourceCounts = buildServerResourceCounts( + instance.instanceInfo.servers, + instance.instanceInfo.applications, + instance.instanceInfo.services, + ); + + const baseUrl = instance.integrationUrl.replace(/\/+$/, ""); + const relativeTime = useTimeAgo(instance.updatedAt); + + const onlineServers = instance.instanceInfo.servers.filter((s) => s.is_reachable !== false).length; + const runningApps = instance.instanceInfo.applications.filter( + (a) => parseStatus(a.status ?? "") === "running", + ).length; + const runningServices = instance.instanceInfo.services.filter( + (s) => parseStatus(s.status ?? "") === "running", + ).length; + + return ( + + + + Coolify + + {instance.integrationName} + + + + {options.showServers && ( + + {onlineServers}/{instance.instanceInfo.servers.length} + + )} + {options.showApplications && ( + + {runningApps}/{instance.instanceInfo.applications.length} + + )} + {options.showServices && ( + + {runningServices}/{instance.instanceInfo.services.length} + + )} + + + + + {options.showServers && ( + setShowIp((prev) => !prev)} + /> + )} + {options.showApplications && ( + + )} + {options.showServices && ( + + )} + + + + + v{instance.instanceInfo.version} + + + {t("footer.updated", { when: relativeTime })} + + + + ); +} diff --git a/packages/widgets/src/coolify/resource-row.tsx b/packages/widgets/src/coolify/resource-row.tsx new file mode 100644 index 000000000..9f6cfe1ae --- /dev/null +++ b/packages/widgets/src/coolify/resource-row.tsx @@ -0,0 +1,78 @@ +"use client"; + +import { ActionIcon, Anchor, Group, Indicator, Stack, Text } from "@mantine/core"; +import { IconExternalLink, IconFileText, IconLink } from "@tabler/icons-react"; + +import { cleanFqdn, getResourceTimestamp, getStatusColor, parseStatus } from "./coolify-utils"; + +interface ResourceRowProps { + item: { + uuid: string; + name: string; + status?: string | null; + fqdn?: string | null; + updated_at?: string | null; + last_online_at?: string | null; + projectName?: string; + projectUuid?: string; + environmentName?: string; + environmentUuid?: string; + }; + baseUrl: string; + isTiny: boolean; + resourceType: "application" | "service"; +} + +export function ResourceRow({ item, baseUrl, isTiny, resourceType }: ResourceRowProps) { + const status = parseStatus(item.status ?? ""); + const statusColor = getStatusColor(status); + + const resourceUrl = + item.projectUuid && item.environmentUuid + ? `${baseUrl}/project/${item.projectUuid}/environment/${item.environmentUuid}/${resourceType}/${item.uuid}` + : undefined; + + const logsUrl = resourceUrl ? `${resourceUrl}/logs` : undefined; + + return ( + + + + {resourceUrl ? ( + + {item.name} + + ) : ( + + {item.name} + + )} + + + {cleanFqdn(item.fqdn) && ( + + + + )} + {resourceUrl && ( + + + + )} + {logsUrl && ( + + + + )} + + {item.projectName ?? "-"} / {item.environmentName ?? "-"} + + {getResourceTimestamp(item, resourceType) && ( + + {getResourceTimestamp(item, resourceType)} + + )} + + + ); +} diff --git a/packages/widgets/src/coolify/servers-section.tsx b/packages/widgets/src/coolify/servers-section.tsx new file mode 100644 index 000000000..543df1c67 --- /dev/null +++ b/packages/widgets/src/coolify/servers-section.tsx @@ -0,0 +1,122 @@ +"use client"; + +import { Accordion, ActionIcon, Anchor, Badge, Group, Indicator, Stack, Text } from "@mantine/core"; +import { IconExternalLink, IconEye, IconEyeOff, IconServer } from "@tabler/icons-react"; + +import type { CoolifyServer } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { getBadgeColor } from "./coolify-utils"; + +interface ServersSectionProps { + servers: CoolifyServer[]; + serverResourceCounts: Map; + baseUrl: string; + isTiny: boolean; + showIp: boolean; + onToggleIp: () => void; +} + +export function ServersSection({ + servers, + serverResourceCounts, + baseUrl, + isTiny, + showIp, + onToggleIp, +}: ServersSectionProps) { + const t = useScopedI18n("widget.coolify"); + const tCommon = useScopedI18n("common"); + const onlineServers = servers.filter((server) => server.is_reachable !== false).length; + + return ( + + }> + + + {tCommon("servers")} + + {onlineServers} / {servers.length} + + + { + event.stopPropagation(); + onToggleIp(); + }} + > + {showIp ? : } + + + + + {servers.length > 0 ? ( + + {servers.map((server) => ( + + ))} + + ) : ( + + {t("empty.servers")} + + )} + + + ); +} + +interface ServerRowProps { + server: CoolifyServer; + counts: { apps: number; services: number }; + baseUrl: string; + isTiny: boolean; + showIp: boolean; +} + +function ServerRow({ server, counts, baseUrl, isTiny, showIp }: ServerRowProps) { + const t = useScopedI18n("widget.coolify"); + const isBuildServer = server.settings?.is_build_server === true; + const isOnline = server.is_reachable !== false; + const serverUrl = `${baseUrl}/server/${server.uuid}`; + + return ( + + + + + {server.name} + + {isBuildServer ? ( + + {t("server.buildServer")} + + ) : ( + + ({counts.apps} apps / {counts.services} svcs) + + )} + + + + + + + {showIp ? server.ip : "***.***.***.***"} + + + + ); +} diff --git a/packages/widgets/src/coolify/services-section.tsx b/packages/widgets/src/coolify/services-section.tsx new file mode 100644 index 000000000..c225db27d --- /dev/null +++ b/packages/widgets/src/coolify/services-section.tsx @@ -0,0 +1,48 @@ +"use client"; + +import { Accordion, Badge, Group, Stack, Text } from "@mantine/core"; +import { IconStack2 } from "@tabler/icons-react"; + +import type { CoolifyServiceWithContext } from "@homarr/integrations/types"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { getBadgeColor, parseStatus } from "./coolify-utils"; +import { ResourceRow } from "./resource-row"; + +interface ServicesSectionProps { + services: CoolifyServiceWithContext[]; + baseUrl: string; + isTiny: boolean; +} + +export function ServicesSection({ services, baseUrl, isTiny }: ServicesSectionProps) { + const t = useScopedI18n("widget.coolify"); + const tCommon = useScopedI18n("common"); + const runningServices = services.filter((svc) => parseStatus(svc.status ?? "") === "running").length; + + return ( + + }> + + {tCommon("services")} + + {runningServices} / {services.length} + + + + + {services.length > 0 ? ( + + {services.map((service) => ( + + ))} + + ) : ( + + {t("empty.services")} + + )} + + + ); +} diff --git a/packages/widgets/src/coolify/single-instance-layout.tsx b/packages/widgets/src/coolify/single-instance-layout.tsx new file mode 100644 index 000000000..af9948b13 --- /dev/null +++ b/packages/widgets/src/coolify/single-instance-layout.tsx @@ -0,0 +1,92 @@ +"use client"; + +import { Accordion, Anchor, Group, Image, ScrollArea, Stack, Text } from "@mantine/core"; +import { useLocalStorage } from "@mantine/hooks"; + +import { useTimeAgo } from "@homarr/common"; +import { useScopedI18n } from "@homarr/translation/client"; + +import { ApplicationsSection } from "./applications-section"; +import { buildServerResourceCounts } from "./coolify-utils"; +import { ServersSection } from "./servers-section"; +import { ServicesSection } from "./services-section"; +import type { CoolifyOptions, InstanceData } from "./types"; +import { COOLIFY_ICON_URL } from "./types"; + +interface SingleInstanceLayoutProps { + instance: InstanceData; + options: CoolifyOptions; + isTiny: boolean; + widgetKey: string; +} + +export function SingleInstanceLayout({ instance, options, isTiny, widgetKey }: SingleInstanceLayoutProps) { + const t = useScopedI18n("widget.coolify"); + const [showIp, setShowIp] = useLocalStorage({ + key: `coolify-show-ip-${widgetKey}`, + defaultValue: false, + }); + const [openSections, setOpenSections] = useLocalStorage({ + key: `coolify-sections-${widgetKey}`, + defaultValue: ["applications"], + }); + + const serverResourceCounts = buildServerResourceCounts( + instance.instanceInfo.servers, + instance.instanceInfo.applications, + instance.instanceInfo.services, + ); + + const baseUrl = instance.integrationUrl.replace(/\/+$/, ""); + const displayUrl = baseUrl.replace(/^https?:\/\//, ""); + const relativeTime = useTimeAgo(instance.updatedAt); + + return ( + + + + + Coolify + + oolify + + + + {displayUrl} + + + + + {options.showServers && ( + setShowIp((prev) => !prev)} + /> + )} + {options.showApplications && ( + + )} + {options.showServices && ( + + )} + + + + + Coolify + + v{instance.instanceInfo.version} + + + + {t("footer.updated", { when: relativeTime })} + + + + + ); +} diff --git a/packages/widgets/src/coolify/types.ts b/packages/widgets/src/coolify/types.ts new file mode 100644 index 000000000..a5982b695 --- /dev/null +++ b/packages/widgets/src/coolify/types.ts @@ -0,0 +1,15 @@ +import type { CoolifyInstanceInfo } from "@homarr/integrations/types"; + +import type { WidgetComponentProps } from "../definition"; + +export const COOLIFY_ICON_URL = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/coolify.svg"; + +export interface InstanceData { + integrationId: string; + integrationName: string; + integrationUrl: string; + instanceInfo: CoolifyInstanceInfo; + updatedAt: Date; +} + +export type CoolifyOptions = WidgetComponentProps<"coolify">["options"]; diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index d13888c6a..ec075d467 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -11,6 +11,7 @@ import * as app from "./app"; import * as bookmarks from "./bookmarks"; import * as calendar from "./calendar"; import * as clock from "./clock"; +import * as coolify from "./coolify"; import type { WidgetComponentProps } from "./definition"; import * as dnsHoleControls from "./dns-hole/controls"; import * as dnsHoleSummary from "./dns-hole/summary"; @@ -76,6 +77,7 @@ export const widgetImports = { notifications, mediaReleases, systemResources, + coolify, systemDisks, } satisfies WidgetImportRecord; From ff338e20a507bea34e4094f800851f5a88e46979 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:43:00 +0000 Subject: [PATCH 33/34] chore(deps): update dependency @types/node to ^24.10.9 (#4897) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- pnpm-lock.yaml | 110 +++++++++++++++++++-------------------- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 874bea353..79e82a675 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -94,7 +94,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.2", - "@types/node": "^24.10.8", + "@types/node": "^24.10.9", "@types/prismjs": "^1.26.5", "@types/react": "19.2.8", "@types/react-dom": "19.2.3", diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 4f8f56560..8dfb021f9 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -47,7 +47,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^24.10.8", + "@types/node": "^24.10.9", "dotenv-cli": "^11.0.0", "esbuild": "^0.27.2", "eslint": "^9.39.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4f46c9724..5556d8c51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,10 +63,10 @@ importers: version: 11.11.0 '@turbo/gen': specifier: ^2.7.5 - version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3) + version: 2.7.5(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.2(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + version: 5.1.2(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/coverage-v8': specifier: ^4.0.17 version: 4.0.17(vitest@4.0.17) @@ -102,10 +102,10 @@ importers: version: 5.9.3 vite-tsconfig-paths: specifier: ^6.0.4 - version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + version: 6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) vitest: specifier: ^4.0.17 - version: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + version: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: @@ -342,8 +342,8 @@ importers: specifier: 3.1.2 version: 3.1.2 '@types/node': - specifier: ^24.10.8 - version: 24.10.8 + specifier: ^24.10.9 + version: 24.10.9 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 @@ -451,8 +451,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^24.10.8 - version: 24.10.8 + specifier: ^24.10.9 + version: 24.10.9 dotenv-cli: specifier: ^11.0.0 version: 11.0.0 @@ -4953,8 +4953,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@24.10.8': - resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} + '@types/node@24.10.9': + resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -12263,7 +12263,7 @@ snapshots: '@kubernetes/client-node@1.4.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/node-fetch': 2.6.13 '@types/stream-buffers': 3.0.7 form-data: 4.0.5 @@ -13733,7 +13733,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3)': + '@turbo/gen@2.7.5(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3)': dependencies: '@turbo/workspaces': 2.7.5 commander: 10.0.0 @@ -13743,7 +13743,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3) update-check: 1.5.4 validate-npm-package-name: 5.0.0 transitivePeerDependencies: @@ -13769,7 +13769,7 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/aws-lambda@8.10.146': {} @@ -13796,16 +13796,16 @@ snapshots: '@types/bcrypt@6.0.0': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/chai@5.2.2': dependencies: @@ -13815,7 +13815,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/cookie@0.4.1': {} @@ -13824,11 +13824,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/cors@2.8.17': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/crypto-js@4.2.2': {} @@ -13868,19 +13868,19 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.47': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/ssh2': 1.15.1 '@types/dockerode@4.0.0': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13891,7 +13891,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13906,7 +13906,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/hast@3.0.4': dependencies: @@ -13950,7 +13950,7 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 form-data: 4.0.5 '@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)': @@ -13961,7 +13961,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@24.10.8': + '@types/node@24.10.9': dependencies: undici-types: 7.16.0 @@ -13969,7 +13969,7 @@ snapshots: '@types/pg@8.16.0': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -13996,21 +13996,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/ssh2@0.5.52': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -14019,7 +14019,7 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/swagger-ui-react@5.18.0': dependencies: @@ -14027,7 +14027,7 @@ snapshots: '@types/through@0.0.33': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/tinycolor2@1.4.6': {} @@ -14046,11 +14046,11 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@types/xml2js@0.4.14': dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: @@ -14175,7 +14175,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitejs/plugin-react@5.1.2(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -14183,7 +14183,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.53 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -14199,7 +14199,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/expect@4.0.17': dependencies: @@ -14210,13 +14210,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@4.0.17(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@vitest/spy': 4.0.17 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/pretty-format@4.0.17': dependencies: @@ -14244,7 +14244,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vitest: 4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) '@vitest/utils@4.0.17': dependencies: @@ -15576,7 +15576,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 24.10.8 + '@types/node': 24.10.9 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -17233,7 +17233,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -18778,7 +18778,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.8 + '@types/node': 24.10.9 long: 5.2.3 proxmox-api@1.1.1: @@ -20234,14 +20234,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.8)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.9)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.8 + '@types/node': 24.10.9 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -20729,18 +20729,18 @@ snapshots: dependencies: global: 4.4.0 - vite-tsconfig-paths@6.0.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(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.4(typescript@5.9.3)(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.3) optionalDependencies: - vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - typescript - vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -20749,7 +20749,7 @@ snapshots: rollup: 4.48.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 fsevents: 2.3.3 sass: 1.97.2 sugarss: 5.0.0(postcss@8.5.6) @@ -20757,10 +20757,10 @@ snapshots: tsx: 4.20.5 yaml: 2.5.1 - vitest@4.0.17(@types/node@24.10.8)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1): + vitest@4.0.17(@types/node@24.10.9)(@vitest/ui@4.0.17)(jsdom@27.4.0(postcss@8.5.6))(sass@1.97.2)(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.17 - '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) + '@vitest/mocker': 4.0.17(vite@7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/pretty-format': 4.0.17 '@vitest/runner': 4.0.17 '@vitest/snapshot': 4.0.17 @@ -20777,10 +20777,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.1.12(@types/node@24.10.8)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.12(@types/node@24.10.9)(sass@1.97.2)(sugarss@5.0.0(postcss@8.5.6))(terser@5.44.1)(tsx@4.20.5)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.8 + '@types/node': 24.10.9 '@vitest/ui': 4.0.17(vitest@4.0.17) jsdom: 27.4.0(postcss@8.5.6) transitivePeerDependencies: From 5da5a83a412ae8665cf8644707901a8e030a12bf Mon Sep 17 00:00:00 2001 From: "homarr-update-contributors[bot]" <210161987+homarr-update-contributors[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:21:20 +0100 Subject: [PATCH 34/34] chore: update integrations list readme (#4899) Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com> --- docs/README.md | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/docs/README.md b/docs/README.md index 127ef95f8..5ae970f63 100644 --- a/docs/README.md +++ b/docs/README.md @@ -78,6 +78,13 @@ + + Coolify +
+

Coolify

+
+ + Dash.
@@ -97,15 +104,15 @@

Docker
Hub

- - + + Emby

Emby

- - + + Github
@@ -146,15 +153,15 @@

Jellyfin

- - + + Jellyseerr

Jellyseerr

- - + + Lidarr
@@ -195,15 +202,15 @@

NZBGet

- - + + OpenMediaVault

OpenMediaVault

- - + + OPNsense
@@ -244,15 +251,15 @@

Proxmox

- - + + qBittorrent

qBittorrent

- - + + Quay
@@ -293,15 +300,15 @@

Tdarr

- - + + Transmission

Transmission

- - + + TrueNAS