Compare commits

...
181 Commits
Author SHA1 Message Date
Releases Homarr 260e1931b1 chore(release): 1.26.0 [skip ci] 2025-06-27 19:15:20 +00:00
homarr-releases[bot] 2c2e60aee6 chore(release): automatic release v1.26.0 2025-06-27 19:14:04 +00:00
homarr-renovate[bot] a737331d20 fix(deps): update tanstack-query monorepo to ^5.81.4 (#3493)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-27 14:20:56 +00:00
homarr-update-contributors[bot] e9e3d93eea chore: update contributors (#3492)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-06-27 12:34:43 +00:00
homarr-renovate[bot] 670de0f5fb fix(deps): update dependency drizzle-kit to ^0.31.4 (#3490)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-27 08:27:16 +00:00
homarr-renovate[bot] d326f3b4b3 fix(deps): update trpc monorepo to ^11.4.3 (#3491)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-27 08:26:30 +00:00
homarr-renovate[bot] 60786bf9ac fix(deps): update dependency prettier to ^3.6.2 (#3489)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-27 03:23:27 +00:00
homarr-crowdin[bot] 22e420c9bc chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-27 00:54:38 +00:00
homarr-renovate[bot] b027f3a180 fix(deps): update tiptap monorepo to v2.23.0 (#3487)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 23:21:55 +00:00
homarr-renovate[bot] e83c514c1d chore(deps): update dependency proxmox-api&gt;undici to v7.11.0 (#3485)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 23:20:43 +00:00
homarr-renovate[bot] 01fdd79559 fix(deps): update dependency undici to v7.11.0 (#3486)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 22:21:30 +00:00
homarr-renovate[bot] 7477d02cad fix(deps): update dependency dotenv to ^16.6.0 (#3484)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 19:18:13 +00:00
homarr-renovate[bot] 7e8cfc38e9 chore(deps): update pnpm to v10.12.4 (#3483)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 18:26:59 +00:00
homarr-renovate[bot] 7d0ac46753 fix(deps): update dependency drizzle-kit to ^0.31.3 (#3482)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 15:22:11 +00:00
homarr-renovate[bot] 114de40634 fix(deps): update dependency ldapts to v8.0.2 (#3481)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 13:35:12 +00:00
homarr-renovate[bot] 0c304c4310 chore(deps): update dependency @semantic-release/npm to ^12.0.2 (#3480)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 12:36:28 +00:00
homarr-renovate[bot] 1cd9fa8e82 fix(deps): update dependency swagger-ui-react to ^5.25.3 (#3479)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 11:19:24 +00:00
homarr-renovate[bot] 98ea5cd2cf chore(deps): update dependency prettier-plugin-packagejson to ^2.5.16 (#3477)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-26 04:31:20 +00:00
homarr-crowdin[bot] 5e5fecb4a0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-26 00:53:24 +00:00
homarr-renovate[bot] 5e6dfb3a5c fix(deps): update mantine monorepo to ^8.1.2 (#3471)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-25 10:23:20 +00:00
homarr-crowdin[bot] 3889d63651 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-25 09:02:59 +00:00
homarr-renovate[bot] eadec21236 fix(deps): update dependency better-sqlite3 to ^12.1.1 (#3470)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-25 08:51:39 +00:00
homarr-renovate[bot] 34faa9e58c fix(deps): update dependency prettier to ^3.6.1 (#3469)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-25 07:23:14 +00:00
homarr-renovate[bot] dfc1c65a34 chore(deps): update node.js to v22.17.0 (#3468)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-25 01:18:49 +00:00
homarr-renovate[bot] 177fa88998 chore(deps): update dependency @types/node to ^22.15.33 (#3466)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-24 17:22:32 +00:00
homarr-renovate[bot] 5d9674412e fix(deps): update dependency next-intl to v4.3.1 (#3465)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-24 13:37:44 +00:00
homarr-renovate[bot] e22096c7bc chore(deps): update pnpm to v10.12.3 (#3464)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-24 11:19:28 +00:00
Meier Lukas 468c04da8a ci: remove conventional semantic commit workflow (#3459) 2025-06-24 12:10:07 +02:00
homarr-crowdin[bot] 62c78f191c chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-24 00:53:32 +00:00
homarr-renovate[bot] fa421b3778 fix(deps): update dependency better-sqlite3 to ^12.1.0 (#3462)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 23:18:16 +00:00
homarr-renovate[bot] 1813d4435e fix(deps): update dependency typescript-eslint to ^8.35.0 (#3460)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 18:28:28 +00:00
MeowandMeier Lukas e110a84fdd feat: add ntfy integration (#2900)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-06-23 19:40:49 +02:00
homarr-renovate[bot] 95be0391a6 fix(deps): update dependency better-sqlite3 to v12 (#3441)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 17:46:04 +02:00
Meier Lukas 6b474c3df4 fix(jellyseerr): add missing deleted media status (#3439) 2025-06-23 17:45:00 +02:00
homarr-renovate[bot] ded39930ca fix(deps): update dependency next-intl to v4.3.0 (#3458)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 13:38:40 +00:00
homarr-renovate[bot] 86d4585035 fix(deps): update dependency next-intl to v4.2.0 (#3457)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 12:38:37 +00:00
homarr-renovate[bot] 4e892efab7 fix(deps): update dependency maria2 to ^0.4.1 (#3456)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 12:36:55 +00:00
homarr-renovate[bot] 8ffbbd6bf9 fix(deps): update dependency drizzle-kit to ^0.31.2 (#3455)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 11:20:29 +00:00
homarr-renovate[bot] 17763208df chore(deps): update dependency @vitejs/plugin-react to ^4.6.0 (#3453)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 04:36:49 +00:00
homarr-renovate[bot] 07ce1c1a2d fix(deps): update dependency prettier to ^3.6.0 (#3452)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 03:30:32 +00:00
homarr-renovate[bot] 14c116cef4 chore(deps): update pnpm to v10.12.2 (#3451)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-23 01:20:41 +00:00
homarr-renovate[bot] 7b8dc1670d fix(deps): update dependency @auth/drizzle-adapter to ^1.10.0 (#3449)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-22 13:30:35 +00:00
homarr-renovate[bot] da2d22b1b9 fix(deps): update dependency next-auth to v5.0.0-beta.29 (#3447)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-22 13:29:17 +00:00
homarr-renovate[bot] 2c7f5de192 fix(deps): update dependency @auth/core to ^0.40.0 (#3448)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-22 12:33:14 +00:00
homarr-renovate[bot] 319bee99b7 chore(deps): update dependency concurrently to ^9.2.0 (#3446)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-22 07:21:15 +00:00
homarr-crowdin[bot] 4bf69874ec chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-22 00:58:51 +00:00
homarr-renovate[bot] add73a1a3c fix(deps): update tiptap monorepo to v2.22.3 (#3443)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 23:20:53 +00:00
homarr-renovate[bot] 3f0e9c3738 fix(deps): update tanstack-query monorepo to ^5.81.2 (#3442)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 23:19:59 +00:00
homarr-renovate[bot] b8b71da291 fix(deps): update tanstack-query monorepo to ^5.81.1 (#3440)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 20:21:19 +00:00
homarr-renovate[bot] f677bd6b12 fix(deps): update tiptap monorepo to v2.22.2 (#3438)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 19:36:36 +00:00
homarr-renovate[bot] e6f05f9d94 fix(deps): update tanstack-query monorepo to ^5.81.0 (#3437)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 13:30:12 +00:00
homarr-renovate[bot] 86608f5a9f fix(deps): update tanstack-query monorepo to ^5.80.12 (#3436)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 12:32:11 +00:00
homarr-renovate[bot] f6039a5976 fix(deps): update dependency @tiptap/extension-highlight to v2.22.1 (#3433)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 09:20:54 +00:00
homarr-renovate[bot] 8ccbe7ff52 fix(deps): update tiptap monorepo to v2.22.1 (#3432)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-21 08:24:30 +00:00
Meier Lukas eede932884 chore(issue-template): add version 1.25.0 2025-06-21 09:38:28 +02:00
homarr-renovate[bot] a7052bb16f fix(deps): update dependency eslint-plugin-import to ^2.32.0 (#3430)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-20 22:21:00 +00:00
homarr-renovate[bot] caedac490e fix(deps): update dependency recharts to ^2.15.4 (#3429)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-20 22:19:43 +00:00
Releases Homarr c4db07915e chore(release): 1.25.0 [skip ci] 2025-06-20 19:15:40 +00:00
homarr-releases[bot] 795e5f1157 chore(release): automatic release v1.25.0 2025-06-20 19:14:38 +00:00
homarr-renovate[bot] f6a99ffedd fix(deps): update dependency node-cron to ^4.1.1 (#3427)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-20 18:26:03 +00:00
homarr-renovate[bot] ec4dde64fd fix(deps): update tiptap monorepo to v2.22.0 (#3425)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-20 09:22:31 +00:00
homarr-renovate[bot] 9e4b4635bc fix(deps): update tiptap monorepo to v2.14.1 (#3423)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-19 22:20:39 +00:00
homarr-renovate[bot] 7c58e8ac9b fix(deps): update tanstack-query monorepo to ^5.80.10 (#3422)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-19 09:22:29 +00:00
homarr-renovate[bot] 3759a9831c fix(deps): update nextjs monorepo to v15.3.4 (#3421)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-18 17:22:28 +00:00
Andre Silva 73fff02ad0 fix(widget-integration-select): fixed error about <p> being descendant of <p> (#3418) 2025-06-18 16:42:49 +00:00
homarr-renovate[bot] 8e428e20a7 fix(deps): update trpc monorepo to ^11.4.2 (#3419)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-18 13:36:17 +00:00
homarr-renovate[bot] 02cd7a50da fix(deps): update dependency swagger-ui-react to ^5.25.2 (#3420)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-18 12:36:14 +00:00
homarr-renovate[bot] 430f671434 fix(deps): update dependency zod-validation-error to ^3.5.2 (#3417)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-18 07:22:08 +00:00
homarr-renovate[bot] 7d6d85d563 chore(deps): update vitest monorepo to ^3.2.4 (#3415)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-17 18:28:09 +00:00
Meier Lukas b5ef7e5194 fix(downloads): not updating automatically (#3412) 2025-06-17 18:24:36 +02:00
homarr-renovate[bot] 6bcfe78956 fix(deps): update dependency tsdav to ^2.1.5 (#3414)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-17 16:22:32 +00:00
homarr-renovate[bot] 56ca8b7b0b fix(deps): update dependency zod to ^3.25.67 (#3413)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 23:21:14 +00:00
homarr-renovate[bot] 9224540761 chore(deps): update dependency @types/dockerode to ^3.3.41 (#3411)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 19:19:01 +00:00
homarr-renovate[bot] a8c9c075f0 fix(deps): update dependency zod to ^3.25.65 (#3410)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 18:28:18 +00:00
homarr-renovate[bot] 637bfb8b47 fix(deps): update dependency typescript-eslint to ^8.34.1 (#3409)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 18:27:37 +00:00
homarr-renovate[bot] adbef252c6 fix(deps): update dependency zod-validation-error to ^3.5.1 (#3406)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 15:23:09 +00:00
homarr-renovate[bot] f97a261973 fix(deps): update mantine monorepo to ^8.1.1 (#3404)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 14:21:12 +00:00
homarr-renovate[bot] bdca92036a fix(deps): update dependency swagger-ui-react to ^5.24.2 (#3405)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 13:36:23 +00:00
homarr-renovate[bot] 9a81689143 chore(deps): update dependency @types/node to ^22.15.32 (#3403)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-16 09:25:07 +00:00
Meier Lukas e6cb35b7c2 feat(integrations): add support for self-signed-cert-in-chain request error (#3399) 2025-06-15 21:42:25 +02:00
homarr-renovate[bot] cad59aed00 chore(deps): update dependency eslint to ^9.29.0 (#3396)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-13 21:19:59 +00:00
Meier Lukas e56ffb9244 chore(issue-template): add version 1.24.0 2025-06-13 22:47:13 +02:00
Releases Homarr 5c75960176 chore(release): 1.24.0 [skip ci] 2025-06-13 19:15:33 +00:00
homarr-releases[bot] c2acbdc229 chore(release): automatic release v1.24.0 2025-06-13 19:14:43 +00:00
homarr-renovate[bot] 6d9992d711 fix(deps): update trpc monorepo to ^11.4.1 (#3395)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-13 15:22:15 +00:00
homarr-update-contributors[bot] eb3454fb75 chore: update contributors (#3394)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-06-13 12:34:38 +00:00
homarr-renovate[bot] c9097a95e2 fix(deps): update dependency tsx to v4.20.3 (#3393)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-13 09:23:06 +00:00
homarr-renovate[bot] 5dc0ee8842 fix(deps): update dependency zod to ^3.25.64 (#3392)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-13 07:21:17 +00:00
homarr-renovate[bot] f16efac05a fix(deps): update dependency glob to ^11.0.3 (#3391)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 21:20:19 +00:00
homarr-renovate[bot] c5cc8f1d37 fix(deps): update tanstack-query monorepo to ^5.80.7 (#3385)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 13:36:18 +00:00
homarr-renovate[bot] 153c2ef8a0 fix(deps): update dependency zod to ^3.25.63 (#3386)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 13:35:25 +00:00
homarr-renovate[bot] 3bf4f9e058 fix(deps): update trpc monorepo to ^11.4.0 (#3389)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 12:35:17 +00:00
homarr-renovate[bot] 747d034114 fix(deps): update dependency zod-validation-error to ^3.5.0 (#3388)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 08:27:52 +00:00
homarr-renovate[bot] 79519ec0eb fix(deps): update dependency tsx to v4.20.2 (#3387)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-12 08:27:03 +00:00
homarr-renovate[bot] 0b200dc9e2 fix(deps): update dependency zod to ^3.25.62 (#3382)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 19:19:05 +00:00
homarr-renovate[bot] 377f4302c0 chore(deps): update dependency @types/react to v19.1.8 (#3381)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 14:20:18 +00:00
homarr-crowdin[bot] 740e9a5082 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-11 12:05:38 +00:00
homarr-renovate[bot] e7652ea4eb fix(deps): update dependency tsx to v4.20.1 (#3380)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 09:23:20 +00:00
homarr-renovate[bot] 863f935ef4 fix(deps): update dependency zod to ^3.25.61 (#3379)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 08:27:30 +00:00
homarr-renovate[bot] 7388c907a5 fix(deps): update dependency zod to ^3.25.60 (#3378)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 07:22:06 +00:00
homarr-renovate[bot] 3d07306e7d fix(deps): update dependency tsx to v4.20.0 (#3375)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-11 03:21:10 +00:00
homarr-renovate[bot] f37fc0edfe fix(deps): update dependency zod to ^3.25.58 (#3373)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 23:21:00 +00:00
Meier Lukas c59cdeda47 fix: csp prevents external videos (#3372) 2025-06-10 22:14:43 +02:00
homarr-renovate[bot] ad444e8fa7 fix(deps): update testcontainers-node monorepo to ^11.0.3 (#3369)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 18:41:04 +00:00
homarr-renovate[bot] fa52b55828 fix(deps): update dependency swagger-ui-react to ^5.24.1 (#3368)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 06:28:24 +00:00
homarr-renovate[bot] 1ce1113a8c chore(deps): update dependency @vitejs/plugin-react to ^4.5.2 (#3366)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 04:30:15 +00:00
homarr-renovate[bot] e7a9797484 fix(deps): update dependency zod to ^3.25.57 (#3367)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 03:23:52 +00:00
homarr-renovate[bot] d104aea8b8 chore(deps): update dependency @types/node to ^22.15.31 (#3365)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 03:22:22 +00:00
homarr-renovate[bot] ab3ee3bac1 fix(deps): update dependency @t3-oss/env-nextjs to ^0.13.8 (#3364)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-10 01:18:38 +00:00
homarr-crowdin[bot] 838066ac75 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-10 00:52:45 +00:00
homarr-renovate[bot] b1a559d801 fix(deps): update dependency sass to ^1.89.2 (#3362)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 20:24:11 +00:00
homarr-renovate[bot] eecf50d461 chore(deps): update dependency @types/react to v19.1.7 (#3361)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 20:23:08 +00:00
homarr-renovate[bot] d862ae03e3 fix(deps): update mantine monorepo to ^8.1.0 (#3360)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 18:28:49 +00:00
homarr-renovate[bot] f6da091577 fix(deps): update dependency typescript-eslint to ^8.34.0 (#3359)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 18:28:06 +00:00
homarr-renovate[bot] 22f0cd885e fix(deps): update dependency @t3-oss/env-nextjs to ^0.13.7 (#3357)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 16:25:59 +00:00
homarr-renovate[bot] 08c6ce9071 chore(deps): update vitest monorepo to ^3.2.3 (#3356)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-09 12:36:15 +00:00
homarr-renovate[bot] c3e1a53d09 chore(deps): update pnpm to v10.12.1 (#3354)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-08 15:20:30 +00:00
homarr-renovate[bot] 9e86de6e17 fix(deps): update dependency fast-xml-parser to ^5.2.5 (#3353)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-08 08:25:10 +00:00
homarr-renovate[bot] 98c4cd1e39 fix(deps): update testcontainers-node monorepo to ^11.0.2 (#3352)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-07 20:21:39 +00:00
Manuel f67702e1d3 feat: reduce cron job intervals (#3235) 2025-06-07 17:32:39 +00:00
Meier Lukas a9e68e13d5 fix(pi-hole): cached session not invalidated when changing password (#3351) 2025-06-07 16:20:21 +02:00
Meier Lukas 1b3770aafb fix: module not found sshcrypto.node during development (#3349) 2025-06-07 16:19:09 +02:00
homarr-renovate[bot] 7928f15452 chore(deps): update dependency @types/dockerode to ^3.3.40 (#3347)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-07 10:21:45 +00:00
Meier Lukas 80327337ce chore(issue-template): add version 1.23.0 2025-06-07 12:11:33 +02:00
homarr-crowdin[bot] f72a994fb3 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-07 10:08:14 +00:00
homarr-renovate[bot] 1910786f5b chore(deps): update dependency @types/cookies to v0.9.1 (#3346)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-07 03:16:21 +00:00
homarr-renovate[bot] 6ec66b1fe2 fix(deps): update testcontainers-node monorepo to ^11.0.1 (#3343)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 21:43:01 +00:00
homarr-renovate[bot] aafd883c32 fix(deps): update dependency zod to ^3.25.56 (#3340)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 21:47:12 +02:00
Releases Homarr f32242bf79 chore(release): 1.23.0 [skip ci] 2025-06-06 19:16:16 +00:00
homarr-releases[bot] 62aeb043b5 chore(release): automatic release v1.23.0 2025-06-06 19:15:09 +00:00
Kaotic3andMeier Lukas ffd2f802bb fix(nextcloud): correct calendar event date mapping and support showU… (#3330)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-06-06 20:00:22 +02:00
lthomsen 3e7bf62500 fix: Allow nullable on cpuModelName and default to "Unknown CPU" if null in OMV Integration (#3310) 2025-06-06 20:00:09 +02:00
Andre Silva 7071d76c52 feat(releases-widget): add import from docker functionality (#3130) 2025-06-06 19:59:46 +02:00
Meier Lukas c7a21b1a5f fix: csp prevents external stylesheets (#3337) 2025-06-06 19:58:37 +02:00
homarr-renovate[bot] 6274a66048 fix(deps): update tiptap monorepo to v2.14.0 (#3334)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 15:20:46 +00:00
homarr-renovate[bot] 07f81cee92 fix(deps): update dependency dockerode to ^4.0.7 (#3331)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 15:19:53 +00:00
homarr-renovate[bot] 3ad72e63b1 fix(deps): update dependency fast-xml-parser to ^5.2.4 (#3336)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 14:21:15 +00:00
homarr-renovate[bot] ed3f848e8a fix(deps): update dependency zod to ^3.25.55 (#3332)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-06 08:26:48 +00:00
homarr-renovate[bot] 8484daaf75 fix(deps): update trpc monorepo to ^11.3.1 (#3329)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 21:20:00 +00:00
homarr-renovate[bot] aeed7dbfd0 chore(deps): update dependency @types/node to ^22.15.30 (#3328)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 19:18:20 +00:00
homarr-renovate[bot] 68881e7ee5 chore(deps): update vitest monorepo to ^3.2.2 (#3327)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 14:22:21 +00:00
homarr-renovate[bot] 61553cfc8e fix(deps): update tanstack-query monorepo to ^5.80.6 (#3326)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 13:35:26 +00:00
homarr-renovate[bot] cf7336ba87 fix(deps): update dependency swagger-ui-react to ^5.24.0 (#3325)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 10:23:04 +00:00
homarr-renovate[bot] dac82347e8 fix(deps): update tiptap monorepo to v2.13.0 (#3323)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-05 07:21:55 +00:00
homarr-renovate[bot] 74aa561f47 fix(deps): update trpc monorepo to ^11.3.0 (#3322)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 20:19:56 +00:00
homarr-renovate[bot] cb77a7dc6d fix(deps): update tanstack-query monorepo to ^5.80.5 (#3321)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 19:18:58 +00:00
homarr-renovate[bot] 81509fd96d fix(deps): update dependency video.js to ^8.23.3 (#3320)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 17:20:30 +00:00
homarr-renovate[bot] 960dc33af8 chore(deps): update dependency @types/react-dom to v19.1.6 (#3319)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 13:37:17 +00:00
homarr-renovate[bot] c051a42791 fix(deps): update tanstack-query monorepo to ^5.80.3 (#3317)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 10:22:38 +00:00
homarr-renovate[bot] a542ee0798 fix(deps): update dependency zod to ^3.25.51 (#3316)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 08:26:44 +00:00
homarr-renovate[bot] 9ac9042564 fix(deps): update dependency drizzle-orm to ^0.44.2 (#3315)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-04 07:21:31 +00:00
homarr-crowdin[bot] 2fe3dcb01b chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-04 00:52:41 +00:00
homarr-renovate[bot] a0a0449c70 fix(deps): update dependency zod to ^3.25.50 (#3312)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-03 22:21:28 +00:00
homarr-renovate[bot] d4afafe0f7 chore(deps): update vitest monorepo to ^3.2.1 (#3309)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-03 17:21:20 +00:00
homarr-renovate[bot] cae0cad92f fix(deps): update tanstack-query monorepo to ^5.80.2 (#3308)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-03 12:35:44 +00:00
homarr-renovate[bot] df2a9a5329 fix(deps): update tanstack-query monorepo to ^5.80.0 (#3307)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-03 10:23:13 +00:00
homarr-renovate[bot] 8f6cc6fa60 chore(deps): update dependency @vitejs/plugin-react to ^4.5.1 (#3306)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-03 04:28:26 +00:00
homarr-crowdin[bot] d699aad529 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-06-03 00:53:41 +00:00
homarr-renovate[bot] 0362487156 fix(deps): update dependency zod to ^3.25.49 (#3304)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 23:21:48 +00:00
homarr-renovate[bot] 5b354aca20 fix(deps): update dependency @tabler/icons-react to ^3.34.0 (#3303)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 18:27:59 +00:00
homarr-renovate[bot] 124e8de6c5 fix(deps): update dependency typescript-eslint to ^8.33.1 (#3302)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 18:27:20 +00:00
homarr-renovate[bot] a0585e3dd7 fix(deps): update tanstack-query monorepo to ^5.79.2 (#3301)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 17:20:23 +00:00
homarr-renovate[bot] a3deed3b09 fix(deps): update tanstack-query monorepo to ^5.79.1 (#3300)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 16:24:59 +00:00
homarr-renovate[bot] ae5aebda20 chore(deps): update pnpm to v10.11.1 (#3299)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 14:20:59 +00:00
homarr-renovate[bot]andMeier Lukas 362c663060 chore(deps): update vitest monorepo to ^3.2.0 (#3298)
* chore(deps): update vitest monorepo to ^3.2.0

* fix: reduce flakyness of nzbget test

---------

Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-06-02 12:07:37 +00:00
homarr-renovate[bot]andMeier Lukas 0d1e3a625a fix(deps): update testcontainers-node monorepo to v11 (major) (#3250)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-06-02 13:58:49 +02:00
homarr-renovate[bot] ccd8a85e0f fix(deps): update dependency zod to ^3.25.48 (#3297)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 11:17:12 +00:00
homarr-renovate[bot] f0ba693077 fix(deps): update trpc monorepo to ^11.2.0 (#3293)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 07:22:04 +00:00
homarr-renovate[bot] 94f176d544 fix(deps): update dependency zod to ^3.25.47 (#3296)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-02 06:28:59 +00:00
Meier Lukas a86fc5bcb8 chore(pr-template): add task for updating documentation 2025-06-01 10:43:32 +02:00
Meier Lukas 9bdbe6f425 chore(issue-template): add version 1.22.0 2025-06-01 10:40:32 +02:00
homarr-renovate[bot] 1b1671e0e6 fix(deps): update dependency zod to ^3.25.46 (#3292)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-01 08:24:52 +00:00
homarr-renovate[bot] 3337cfa3c7 fix(deps): update dependency zod to ^3.25.45 (#3291)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-06-01 03:35:28 +00:00
homarr-renovate[bot] 161fc86770 fix(deps): update dependency zod to ^3.25.43 (#3290)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-31 23:20:35 +00:00
homarr-renovate[bot] 76ae423fd9 chore(deps): update dependency prettier-plugin-packagejson to ^2.5.15 (#3289)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-31 12:32:21 +00:00
homarr-renovate[bot] 1f408685e6 fix(deps): update dependency node-cron to ^4.1.0 (#3286)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-31 03:14:01 +00:00
homarr-renovate[bot] b608ffe490 fix(deps): update dependency sass to ^1.89.1 (#3285)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-31 01:14:48 +00:00
homarr-crowdin[bot] f579b283f2 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-05-31 00:50:38 +00:00
homarr-renovate[bot] 9518ebb088 chore(deps): update dependency eslint to ^9.28.0 (#3283)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-30 21:20:21 +00:00
homarr-renovate[bot] 9895c1b3ff fix(deps): update dependency drizzle-orm to ^0.44.1 (#3280)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-30 20:22:34 +00:00
homarr-renovate[bot] 7e5ca418cc chore(deps): update dependency @types/node to ^22.15.29 (#3281)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-05-30 19:24:39 +00:00
124 changed files with 5309 additions and 3367 deletions

No files matched your search

+4
View File
@@ -31,6 +31,10 @@ body:
label: Version
description: What version of Homarr are you running?
options:
- 1.25.0
- 1.24.0
- 1.23.0
- 1.22.0
- 1.21.0
- 1.20.0
- 1.19.1
+4 -4
View File
@@ -6,8 +6,8 @@
**Thank you for your contribution. Please ensure that your pull request meets the following pull request:**
- [ ] Builds without warnings or errors (``pnpm build``, autofix with ``pnpm format:fix``)
- [ ] Pull request targets ``dev`` branch
- [ ] Builds without warnings or errors (`pnpm build`, autofix with `pnpm format:fix`)
- [ ] Pull request targets `dev` branch
- [ ] Commits follow the [conventional commits guideline](https://www.conventionalcommits.org/en/v1.0.0/)
- [ ] No shorthand variable names are used (eg. ``x``, ``y``, ``i`` or any abbrevation)
- [ ] No shorthand variable names are used (eg. `x`, `y`, `i` or any abbrevation)
- [ ] Documentation is up to date. Create a pull request [here](https://github.com/homarr-labs/documentation/).
@@ -1,14 +0,0 @@
# https://github.com/webiny/action-conventional-commits?tab=readme-ov-file
name: "[Conventions] Semantic Commits"
on:
pull_request:
branches: [ dev ]
jobs:
build:
name: Conventional Commits
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: webiny/action-conventional-commits@v1.3.0
+1 -1
View File
@@ -1 +1 @@
22.16.0
22.17.0
+154
View File
@@ -1,3 +1,157 @@
## [1.26.0](https://github.com/homarr-labs/homarr/compare/v1.25.0...v1.26.0) (2025-06-27)
### Features
* add ntfy integration ([#2900](https://github.com/homarr-labs/homarr/issues/2900)) ([e110a84](https://github.com/homarr-labs/homarr/commit/e110a84fdd5fa2468786e1505043d8a7dc5cfa1b))
### Bug Fixes
* **deps:** update dependency @auth/core to ^0.40.0 ([#3448](https://github.com/homarr-labs/homarr/issues/3448)) ([2c7f5de](https://github.com/homarr-labs/homarr/commit/2c7f5de19271f7c65a9979b37d9602bb84c68564))
* **deps:** update dependency @auth/drizzle-adapter to ^1.10.0 ([#3449](https://github.com/homarr-labs/homarr/issues/3449)) ([7b8dc16](https://github.com/homarr-labs/homarr/commit/7b8dc1670d0c8473524f71e1ee872e6ea7d2e0ce))
* **deps:** update dependency @tiptap/extension-highlight to v2.22.1 ([#3433](https://github.com/homarr-labs/homarr/issues/3433)) ([f6039a5](https://github.com/homarr-labs/homarr/commit/f6039a5976da70388cb32eecfbf57ac02e6fc050))
* **deps:** update dependency better-sqlite3 to ^12.1.0 ([#3462](https://github.com/homarr-labs/homarr/issues/3462)) ([fa421b3](https://github.com/homarr-labs/homarr/commit/fa421b3778c00b30b68ceadfb370803eba1a72f2))
* **deps:** update dependency better-sqlite3 to ^12.1.1 ([#3470](https://github.com/homarr-labs/homarr/issues/3470)) ([eadec21](https://github.com/homarr-labs/homarr/commit/eadec212369b8ee81eec00b3ecbd40d1c90972d7))
* **deps:** update dependency better-sqlite3 to v12 ([#3441](https://github.com/homarr-labs/homarr/issues/3441)) ([95be039](https://github.com/homarr-labs/homarr/commit/95be0391a651b59a2611ca5ffa7825c6b337a996))
* **deps:** update dependency dotenv to ^16.6.0 ([#3484](https://github.com/homarr-labs/homarr/issues/3484)) ([7477d02](https://github.com/homarr-labs/homarr/commit/7477d02cadd88608f33edf0836f7d7e164800dde))
* **deps:** update dependency drizzle-kit to ^0.31.2 ([#3455](https://github.com/homarr-labs/homarr/issues/3455)) ([8ffbbd6](https://github.com/homarr-labs/homarr/commit/8ffbbd6bf9bb1c329943ae5033029eed115b43dd))
* **deps:** update dependency drizzle-kit to ^0.31.3 ([#3482](https://github.com/homarr-labs/homarr/issues/3482)) ([7d0ac46](https://github.com/homarr-labs/homarr/commit/7d0ac46753b1cf6bee1f53297b0011e4e86fdffd))
* **deps:** update dependency drizzle-kit to ^0.31.4 ([#3490](https://github.com/homarr-labs/homarr/issues/3490)) ([670de0f](https://github.com/homarr-labs/homarr/commit/670de0f5fbb9faf950fdb38e4f4cfb57f21257c4))
* **deps:** update dependency eslint-plugin-import to ^2.32.0 ([#3430](https://github.com/homarr-labs/homarr/issues/3430)) ([a7052bb](https://github.com/homarr-labs/homarr/commit/a7052bb16f52ccb47d2c8ac205fdf01cf8e8c01e))
* **deps:** update dependency ldapts to v8.0.2 ([#3481](https://github.com/homarr-labs/homarr/issues/3481)) ([114de40](https://github.com/homarr-labs/homarr/commit/114de40634b501ecea7be8d9ae1d2a19686845c1))
* **deps:** update dependency maria2 to ^0.4.1 ([#3456](https://github.com/homarr-labs/homarr/issues/3456)) ([4e892ef](https://github.com/homarr-labs/homarr/commit/4e892efab7f456b93e993c2c3cb6068f06ea1e4f))
* **deps:** update dependency next-auth to v5.0.0-beta.29 ([#3447](https://github.com/homarr-labs/homarr/issues/3447)) ([da2d22b](https://github.com/homarr-labs/homarr/commit/da2d22b1b9b87fe7aa1cbac76909af2d2ef57d3f))
* **deps:** update dependency next-intl to v4.2.0 ([#3457](https://github.com/homarr-labs/homarr/issues/3457)) ([86d4585](https://github.com/homarr-labs/homarr/commit/86d4585035c5604a219fd0be404104f62a0be0b2))
* **deps:** update dependency next-intl to v4.3.0 ([#3458](https://github.com/homarr-labs/homarr/issues/3458)) ([ded3993](https://github.com/homarr-labs/homarr/commit/ded39930ca1d8c4868f9541c7fad18a234ceeb3f))
* **deps:** update dependency next-intl to v4.3.1 ([#3465](https://github.com/homarr-labs/homarr/issues/3465)) ([5d96744](https://github.com/homarr-labs/homarr/commit/5d9674412e6e99af1fb1fce7143ce4b6717ff29b))
* **deps:** update dependency prettier to ^3.6.0 ([#3452](https://github.com/homarr-labs/homarr/issues/3452)) ([07ce1c1](https://github.com/homarr-labs/homarr/commit/07ce1c1a2d197f981818a9b1e567102f0772271d))
* **deps:** update dependency prettier to ^3.6.1 ([#3469](https://github.com/homarr-labs/homarr/issues/3469)) ([34faa9e](https://github.com/homarr-labs/homarr/commit/34faa9e58ce061c4c99d207cfc6c56cbb7045c03))
* **deps:** update dependency prettier to ^3.6.2 ([#3489](https://github.com/homarr-labs/homarr/issues/3489)) ([60786bf](https://github.com/homarr-labs/homarr/commit/60786bf9ac81ce13b6304f5284fb6049e2d7d7dc))
* **deps:** update dependency recharts to ^2.15.4 ([#3429](https://github.com/homarr-labs/homarr/issues/3429)) ([caedac4](https://github.com/homarr-labs/homarr/commit/caedac490ed3aaf8f6a815d799ba9fafe9de18a2))
* **deps:** update dependency swagger-ui-react to ^5.25.3 ([#3479](https://github.com/homarr-labs/homarr/issues/3479)) ([1cd9fa8](https://github.com/homarr-labs/homarr/commit/1cd9fa8e82eef1f69be06855d076a364883914df))
* **deps:** update dependency typescript-eslint to ^8.35.0 ([#3460](https://github.com/homarr-labs/homarr/issues/3460)) ([1813d44](https://github.com/homarr-labs/homarr/commit/1813d4435e08f6a800ee76561e66e6371b30ec80))
* **deps:** update dependency undici to v7.11.0 ([#3486](https://github.com/homarr-labs/homarr/issues/3486)) ([01fdd79](https://github.com/homarr-labs/homarr/commit/01fdd7955906c661a620b8fac148693dc4632ebd))
* **deps:** update mantine monorepo to ^8.1.2 ([#3471](https://github.com/homarr-labs/homarr/issues/3471)) ([5e6dfb3](https://github.com/homarr-labs/homarr/commit/5e6dfb3a5c2d456fa20fbcd07f98c01d0ab7c4b7))
* **deps:** update tanstack-query monorepo to ^5.80.12 ([#3436](https://github.com/homarr-labs/homarr/issues/3436)) ([86608f5](https://github.com/homarr-labs/homarr/commit/86608f5a9ffe9ea2c57a9191175994a24eea5dc7))
* **deps:** update tanstack-query monorepo to ^5.81.0 ([#3437](https://github.com/homarr-labs/homarr/issues/3437)) ([e6f05f9](https://github.com/homarr-labs/homarr/commit/e6f05f9d94912ef5f38ad4ab222e20d433c627eb))
* **deps:** update tanstack-query monorepo to ^5.81.1 ([#3440](https://github.com/homarr-labs/homarr/issues/3440)) ([b8b71da](https://github.com/homarr-labs/homarr/commit/b8b71da291541b714e053ea1bda4e49053261936))
* **deps:** update tanstack-query monorepo to ^5.81.2 ([#3442](https://github.com/homarr-labs/homarr/issues/3442)) ([3f0e9c3](https://github.com/homarr-labs/homarr/commit/3f0e9c37385ae23370618f1a11870642a9b3d030))
* **deps:** update tanstack-query monorepo to ^5.81.4 ([#3493](https://github.com/homarr-labs/homarr/issues/3493)) ([a737331](https://github.com/homarr-labs/homarr/commit/a737331d207abfd4ab8a8869c70257b5f5d50d5a))
* **deps:** update tiptap monorepo to v2.22.1 ([#3432](https://github.com/homarr-labs/homarr/issues/3432)) ([8ccbe7f](https://github.com/homarr-labs/homarr/commit/8ccbe7ff52eff742031c528bcc1e15916ba1fe81))
* **deps:** update tiptap monorepo to v2.22.2 ([#3438](https://github.com/homarr-labs/homarr/issues/3438)) ([f677bd6](https://github.com/homarr-labs/homarr/commit/f677bd6b12630130d8cf95a4f2462e4bab1226db))
* **deps:** update tiptap monorepo to v2.22.3 ([#3443](https://github.com/homarr-labs/homarr/issues/3443)) ([add73a1](https://github.com/homarr-labs/homarr/commit/add73a1a3c19e0efd2d417463e4f4d72a9fd1c02))
* **deps:** update tiptap monorepo to v2.23.0 ([#3487](https://github.com/homarr-labs/homarr/issues/3487)) ([b027f3a](https://github.com/homarr-labs/homarr/commit/b027f3a18084743b452dd35ff8e0fa30f59acd85))
* **deps:** update trpc monorepo to ^11.4.3 ([#3491](https://github.com/homarr-labs/homarr/issues/3491)) ([d326f3b](https://github.com/homarr-labs/homarr/commit/d326f3b4b3f5fc342404a12b25380d9dd6cd924a))
* **jellyseerr:** add missing deleted media status ([#3439](https://github.com/homarr-labs/homarr/issues/3439)) ([6b474c3](https://github.com/homarr-labs/homarr/commit/6b474c3df470450598b6b9472bf9f52740b8ed21))
## [1.25.0](https://github.com/homarr-labs/homarr/compare/v1.24.0...v1.25.0) (2025-06-20)
### Features
* **integrations:** add support for self-signed-cert-in-chain request error ([#3399](https://github.com/homarr-labs/homarr/issues/3399)) ([e6cb35b](https://github.com/homarr-labs/homarr/commit/e6cb35b7c2dc45349a9cf0819aa21228aea03e26))
### Bug Fixes
* **deps:** update dependency node-cron to ^4.1.1 ([#3427](https://github.com/homarr-labs/homarr/issues/3427)) ([f6a99ff](https://github.com/homarr-labs/homarr/commit/f6a99ffedd690c01e18f445ade6343f1ca476b27))
* **deps:** update dependency swagger-ui-react to ^5.24.2 ([#3405](https://github.com/homarr-labs/homarr/issues/3405)) ([bdca920](https://github.com/homarr-labs/homarr/commit/bdca92036a3dde7f655735c305e55c5c15b63440))
* **deps:** update dependency swagger-ui-react to ^5.25.2 ([#3420](https://github.com/homarr-labs/homarr/issues/3420)) ([02cd7a5](https://github.com/homarr-labs/homarr/commit/02cd7a50dad9e954cfd569b0f1efcc4fe4fd5da4))
* **deps:** update dependency tsdav to ^2.1.5 ([#3414](https://github.com/homarr-labs/homarr/issues/3414)) ([6bcfe78](https://github.com/homarr-labs/homarr/commit/6bcfe789561c518e7ce6c78a9be95412a50f04dd))
* **deps:** update dependency typescript-eslint to ^8.34.1 ([#3409](https://github.com/homarr-labs/homarr/issues/3409)) ([637bfb8](https://github.com/homarr-labs/homarr/commit/637bfb8b47b7dc6c70163bd481c47bca9bd93d55))
* **deps:** update dependency zod to ^3.25.65 ([#3410](https://github.com/homarr-labs/homarr/issues/3410)) ([a8c9c07](https://github.com/homarr-labs/homarr/commit/a8c9c075f08bca4b86307e98156cae7167ef6ab1))
* **deps:** update dependency zod to ^3.25.67 ([#3413](https://github.com/homarr-labs/homarr/issues/3413)) ([56ca8b7](https://github.com/homarr-labs/homarr/commit/56ca8b7b0b1c0187457c085af1c7f4504d72ed9a))
* **deps:** update dependency zod-validation-error to ^3.5.1 ([#3406](https://github.com/homarr-labs/homarr/issues/3406)) ([adbef25](https://github.com/homarr-labs/homarr/commit/adbef252c61c29fbbc8c7b0e325a0e9d69bb3191))
* **deps:** update dependency zod-validation-error to ^3.5.2 ([#3417](https://github.com/homarr-labs/homarr/issues/3417)) ([430f671](https://github.com/homarr-labs/homarr/commit/430f6714345b5b90859fd3302f76fd3d14956148))
* **deps:** update mantine monorepo to ^8.1.1 ([#3404](https://github.com/homarr-labs/homarr/issues/3404)) ([f97a261](https://github.com/homarr-labs/homarr/commit/f97a2619734dcf3b326c69587fa2f4e170cb9c88))
* **deps:** update nextjs monorepo to v15.3.4 ([#3421](https://github.com/homarr-labs/homarr/issues/3421)) ([3759a98](https://github.com/homarr-labs/homarr/commit/3759a9831c6fe54b0b0eb0e101c8eb912b752b41))
* **deps:** update tanstack-query monorepo to ^5.80.10 ([#3422](https://github.com/homarr-labs/homarr/issues/3422)) ([7c58e8a](https://github.com/homarr-labs/homarr/commit/7c58e8ac9bdb2868637648b43b7965189421b295))
* **deps:** update tiptap monorepo to v2.14.1 ([#3423](https://github.com/homarr-labs/homarr/issues/3423)) ([9e4b463](https://github.com/homarr-labs/homarr/commit/9e4b4635bc582e4d92821844d58fdb3d057f7fec))
* **deps:** update tiptap monorepo to v2.22.0 ([#3425](https://github.com/homarr-labs/homarr/issues/3425)) ([ec4dde6](https://github.com/homarr-labs/homarr/commit/ec4dde64fdd4302b091a0255ec1bcdc6b2caca89))
* **deps:** update trpc monorepo to ^11.4.2 ([#3419](https://github.com/homarr-labs/homarr/issues/3419)) ([8e428e2](https://github.com/homarr-labs/homarr/commit/8e428e20a764c54c15fc44b57f85fa684cfbc00e))
* **downloads:** not updating automatically ([#3412](https://github.com/homarr-labs/homarr/issues/3412)) ([b5ef7e5](https://github.com/homarr-labs/homarr/commit/b5ef7e5194a828abfddcac5eb492910de5f1f7d8))
* **widget-integration-select:** fixed error about `<p>` being descendant of `<p>` ([#3418](https://github.com/homarr-labs/homarr/issues/3418)) ([73fff02](https://github.com/homarr-labs/homarr/commit/73fff02ad0a3a710aa39cda7dccf9206569c2879))
## [1.24.0](https://github.com/homarr-labs/homarr/compare/v1.23.0...v1.24.0) (2025-06-13)
### Features
* reduce cron job intervals ([#3235](https://github.com/homarr-labs/homarr/issues/3235)) ([f67702e](https://github.com/homarr-labs/homarr/commit/f67702e1d32954b4f6db28c02b1a25e56122d779))
### Bug Fixes
* csp prevents external videos ([#3372](https://github.com/homarr-labs/homarr/issues/3372)) ([c59cded](https://github.com/homarr-labs/homarr/commit/c59cdeda47a504069c09634dafe36a9bc80c922f))
* **deps:** update dependency @t3-oss/env-nextjs to ^0.13.7 ([#3357](https://github.com/homarr-labs/homarr/issues/3357)) ([22f0cd8](https://github.com/homarr-labs/homarr/commit/22f0cd885e6b3f0cd15daa60840554a545eb2532))
* **deps:** update dependency @t3-oss/env-nextjs to ^0.13.8 ([#3364](https://github.com/homarr-labs/homarr/issues/3364)) ([ab3ee3b](https://github.com/homarr-labs/homarr/commit/ab3ee3bac186913cbc76c1381c90b3c90a447185))
* **deps:** update dependency fast-xml-parser to ^5.2.5 ([#3353](https://github.com/homarr-labs/homarr/issues/3353)) ([9e86de6](https://github.com/homarr-labs/homarr/commit/9e86de6e1781ef2c088f83af1ba341baecb496da))
* **deps:** update dependency glob to ^11.0.3 ([#3391](https://github.com/homarr-labs/homarr/issues/3391)) ([f16efac](https://github.com/homarr-labs/homarr/commit/f16efac05a17b77303f4c41b8910d491d237add2))
* **deps:** update dependency sass to ^1.89.2 ([#3362](https://github.com/homarr-labs/homarr/issues/3362)) ([b1a559d](https://github.com/homarr-labs/homarr/commit/b1a559d80161f59114ba3098005c3334662987eb))
* **deps:** update dependency swagger-ui-react to ^5.24.1 ([#3368](https://github.com/homarr-labs/homarr/issues/3368)) ([fa52b55](https://github.com/homarr-labs/homarr/commit/fa52b5582880075cd76826641547ccbf42b56f7a))
* **deps:** update dependency tsx to v4.20.0 ([#3375](https://github.com/homarr-labs/homarr/issues/3375)) ([3d07306](https://github.com/homarr-labs/homarr/commit/3d07306e7d3bf90db7f7c02d68550a137c5554bc))
* **deps:** update dependency tsx to v4.20.1 ([#3380](https://github.com/homarr-labs/homarr/issues/3380)) ([e7652ea](https://github.com/homarr-labs/homarr/commit/e7652ea4eb1ddaf8373c02abfcdb5440bf55c236))
* **deps:** update dependency tsx to v4.20.2 ([#3387](https://github.com/homarr-labs/homarr/issues/3387)) ([79519ec](https://github.com/homarr-labs/homarr/commit/79519ec0ebf4ff101fa1cd395f974e023d1af3c3))
* **deps:** update dependency tsx to v4.20.3 ([#3393](https://github.com/homarr-labs/homarr/issues/3393)) ([c9097a9](https://github.com/homarr-labs/homarr/commit/c9097a95e2072ed619e93301f8d4644aaadce2dd))
* **deps:** update dependency typescript-eslint to ^8.34.0 ([#3359](https://github.com/homarr-labs/homarr/issues/3359)) ([f6da091](https://github.com/homarr-labs/homarr/commit/f6da0915773dd60b40475f258d90e5f3dbdb6729))
* **deps:** update dependency zod to ^3.25.56 ([#3340](https://github.com/homarr-labs/homarr/issues/3340)) ([aafd883](https://github.com/homarr-labs/homarr/commit/aafd883c3250ddf3438877d82b4b63a6a15eadda))
* **deps:** update dependency zod to ^3.25.57 ([#3367](https://github.com/homarr-labs/homarr/issues/3367)) ([e7a9797](https://github.com/homarr-labs/homarr/commit/e7a9797484e9e2cd595d31e6db4cdf63e25e3b82))
* **deps:** update dependency zod to ^3.25.58 ([#3373](https://github.com/homarr-labs/homarr/issues/3373)) ([f37fc0e](https://github.com/homarr-labs/homarr/commit/f37fc0edfee45386b3469bac11c91e4f17c83673))
* **deps:** update dependency zod to ^3.25.60 ([#3378](https://github.com/homarr-labs/homarr/issues/3378)) ([7388c90](https://github.com/homarr-labs/homarr/commit/7388c907a57c7999a48118d96a3f34d2c3656f79))
* **deps:** update dependency zod to ^3.25.61 ([#3379](https://github.com/homarr-labs/homarr/issues/3379)) ([863f935](https://github.com/homarr-labs/homarr/commit/863f935ef4c27f87a632a5e0b376fe088f4e8a04))
* **deps:** update dependency zod to ^3.25.62 ([#3382](https://github.com/homarr-labs/homarr/issues/3382)) ([0b200dc](https://github.com/homarr-labs/homarr/commit/0b200dc9e2239060ddf2670f8508f68e624e821e))
* **deps:** update dependency zod to ^3.25.63 ([#3386](https://github.com/homarr-labs/homarr/issues/3386)) ([153c2ef](https://github.com/homarr-labs/homarr/commit/153c2ef8a0098cbe2d998c98a25a0c5880f0da5d))
* **deps:** update dependency zod to ^3.25.64 ([#3392](https://github.com/homarr-labs/homarr/issues/3392)) ([5dc0ee8](https://github.com/homarr-labs/homarr/commit/5dc0ee8842dbd4bde468c5762cf5dc0d73958242))
* **deps:** update dependency zod-validation-error to ^3.5.0 ([#3388](https://github.com/homarr-labs/homarr/issues/3388)) ([747d034](https://github.com/homarr-labs/homarr/commit/747d034114bd2a3b381aa7318c59015b21811353))
* **deps:** update mantine monorepo to ^8.1.0 ([#3360](https://github.com/homarr-labs/homarr/issues/3360)) ([d862ae0](https://github.com/homarr-labs/homarr/commit/d862ae03e319d173468cd7797bd74be022cbc966))
* **deps:** update tanstack-query monorepo to ^5.80.7 ([#3385](https://github.com/homarr-labs/homarr/issues/3385)) ([c5cc8f1](https://github.com/homarr-labs/homarr/commit/c5cc8f1d375d5a582b169da706a5b433a0181c20))
* **deps:** update testcontainers-node monorepo to ^11.0.1 ([#3343](https://github.com/homarr-labs/homarr/issues/3343)) ([6ec66b1](https://github.com/homarr-labs/homarr/commit/6ec66b1fe2d5779b2267532d75d6933b3460ffd5))
* **deps:** update testcontainers-node monorepo to ^11.0.2 ([#3352](https://github.com/homarr-labs/homarr/issues/3352)) ([98c4cd1](https://github.com/homarr-labs/homarr/commit/98c4cd1e39286164c09f7d8e961488e26fa2c562))
* **deps:** update testcontainers-node monorepo to ^11.0.3 ([#3369](https://github.com/homarr-labs/homarr/issues/3369)) ([ad444e8](https://github.com/homarr-labs/homarr/commit/ad444e8fa7a186710deafd98f2aa48717de1ec80))
* **deps:** update trpc monorepo to ^11.4.0 ([#3389](https://github.com/homarr-labs/homarr/issues/3389)) ([3bf4f9e](https://github.com/homarr-labs/homarr/commit/3bf4f9e0588440d74dfaf7016acc66c1ed40843a))
* **deps:** update trpc monorepo to ^11.4.1 ([#3395](https://github.com/homarr-labs/homarr/issues/3395)) ([6d9992d](https://github.com/homarr-labs/homarr/commit/6d9992d7114f97c24e02c40dcaf11fad90608a1c))
* module not found sshcrypto.node during development ([#3349](https://github.com/homarr-labs/homarr/issues/3349)) ([1b3770a](https://github.com/homarr-labs/homarr/commit/1b3770aafbe4e903e6235dc681edac556a36e4e0))
* **pi-hole:** cached session not invalidated when changing password ([#3351](https://github.com/homarr-labs/homarr/issues/3351)) ([a9e68e1](https://github.com/homarr-labs/homarr/commit/a9e68e13d53c8e06d150ecba085680cd248d4f64))
## [1.23.0](https://github.com/homarr-labs/homarr/compare/v1.22.0...v1.23.0) (2025-06-06)
### Features
* **releases-widget:** add `import from docker` functionality ([#3130](https://github.com/homarr-labs/homarr/issues/3130)) ([7071d76](https://github.com/homarr-labs/homarr/commit/7071d76c526f1b59a955abcc595894975d574218))
### Bug Fixes
* Allow nullable on cpuModelName and default to "Unknown CPU" if null in OMV Integration ([#3310](https://github.com/homarr-labs/homarr/issues/3310)) ([3e7bf62](https://github.com/homarr-labs/homarr/commit/3e7bf62500f4ce0a8662104e2a656ea98cf2558f))
* csp prevents external stylesheets ([#3337](https://github.com/homarr-labs/homarr/issues/3337)) ([c7a21b1](https://github.com/homarr-labs/homarr/commit/c7a21b1a5f4e7c9d994d81b75a3fd4fa7c013daf))
* **deps:** update dependency @tabler/icons-react to ^3.34.0 ([#3303](https://github.com/homarr-labs/homarr/issues/3303)) ([5b354ac](https://github.com/homarr-labs/homarr/commit/5b354aca2047e8316b331e327cf6031690dcfef9))
* **deps:** update dependency dockerode to ^4.0.7 ([#3331](https://github.com/homarr-labs/homarr/issues/3331)) ([07f81ce](https://github.com/homarr-labs/homarr/commit/07f81cee92627e3b6ee4b2bbf084657f9a83ac34))
* **deps:** update dependency drizzle-orm to ^0.44.1 ([#3280](https://github.com/homarr-labs/homarr/issues/3280)) ([9895c1b](https://github.com/homarr-labs/homarr/commit/9895c1b3ff028a7ea7273ab2625620c9132f5213))
* **deps:** update dependency drizzle-orm to ^0.44.2 ([#3315](https://github.com/homarr-labs/homarr/issues/3315)) ([9ac9042](https://github.com/homarr-labs/homarr/commit/9ac90425647bf1f10d3f299f043c5d40067347bc))
* **deps:** update dependency fast-xml-parser to ^5.2.4 ([#3336](https://github.com/homarr-labs/homarr/issues/3336)) ([3ad72e6](https://github.com/homarr-labs/homarr/commit/3ad72e63b1adecd18c53897a6023f09d6f5d011c))
* **deps:** update dependency node-cron to ^4.1.0 ([#3286](https://github.com/homarr-labs/homarr/issues/3286)) ([1f40868](https://github.com/homarr-labs/homarr/commit/1f408685e69397fa9e3a69bd4331a8240da3713b))
* **deps:** update dependency sass to ^1.89.1 ([#3285](https://github.com/homarr-labs/homarr/issues/3285)) ([b608ffe](https://github.com/homarr-labs/homarr/commit/b608ffe4900a5dd97ceb2669464c477404d090e7))
* **deps:** update dependency swagger-ui-react to ^5.24.0 ([#3325](https://github.com/homarr-labs/homarr/issues/3325)) ([cf7336b](https://github.com/homarr-labs/homarr/commit/cf7336ba87c617578ab52e2ece94fd84df3fc623))
* **deps:** update dependency typescript-eslint to ^8.33.1 ([#3302](https://github.com/homarr-labs/homarr/issues/3302)) ([124e8de](https://github.com/homarr-labs/homarr/commit/124e8de6c584b0efca91d92079f8b3c400bccab2))
* **deps:** update dependency video.js to ^8.23.3 ([#3320](https://github.com/homarr-labs/homarr/issues/3320)) ([81509fd](https://github.com/homarr-labs/homarr/commit/81509fd96dfe0561964eb58d3d21c02400db2e8c))
* **deps:** update dependency zod to ^3.25.43 ([#3290](https://github.com/homarr-labs/homarr/issues/3290)) ([161fc86](https://github.com/homarr-labs/homarr/commit/161fc867703c4cf634eaaeec1b73f5e3cbfa7fec))
* **deps:** update dependency zod to ^3.25.45 ([#3291](https://github.com/homarr-labs/homarr/issues/3291)) ([3337cfa](https://github.com/homarr-labs/homarr/commit/3337cfa3c7e34debcccdbb95ee0bc39f2af98a91))
* **deps:** update dependency zod to ^3.25.46 ([#3292](https://github.com/homarr-labs/homarr/issues/3292)) ([1b1671e](https://github.com/homarr-labs/homarr/commit/1b1671e0e6d808469ba7f8185c4590cf2f2f6f44))
* **deps:** update dependency zod to ^3.25.47 ([#3296](https://github.com/homarr-labs/homarr/issues/3296)) ([94f176d](https://github.com/homarr-labs/homarr/commit/94f176d544272e0378e65255aba58b05d56019b2))
* **deps:** update dependency zod to ^3.25.48 ([#3297](https://github.com/homarr-labs/homarr/issues/3297)) ([ccd8a85](https://github.com/homarr-labs/homarr/commit/ccd8a85e0fcd2cf40dbfb6058787d24a02680b93))
* **deps:** update dependency zod to ^3.25.49 ([#3304](https://github.com/homarr-labs/homarr/issues/3304)) ([0362487](https://github.com/homarr-labs/homarr/commit/0362487156457ae825cac501e7d53db58c31ab0b))
* **deps:** update dependency zod to ^3.25.50 ([#3312](https://github.com/homarr-labs/homarr/issues/3312)) ([a0a0449](https://github.com/homarr-labs/homarr/commit/a0a0449c704ff57725ab5e0b459eb209fc929446))
* **deps:** update dependency zod to ^3.25.51 ([#3316](https://github.com/homarr-labs/homarr/issues/3316)) ([a542ee0](https://github.com/homarr-labs/homarr/commit/a542ee079871c7609ed97c76aa2017305adbfdc9))
* **deps:** update dependency zod to ^3.25.55 ([#3332](https://github.com/homarr-labs/homarr/issues/3332)) ([ed3f848](https://github.com/homarr-labs/homarr/commit/ed3f848e8afb57cc1b9249551f0260eb52bbd4a6))
* **deps:** update tanstack-query monorepo to ^5.79.1 ([#3300](https://github.com/homarr-labs/homarr/issues/3300)) ([a3deed3](https://github.com/homarr-labs/homarr/commit/a3deed3b090aed0df0f45a9bd04c006640691e05))
* **deps:** update tanstack-query monorepo to ^5.79.2 ([#3301](https://github.com/homarr-labs/homarr/issues/3301)) ([a0585e3](https://github.com/homarr-labs/homarr/commit/a0585e3dd7d9cfbccf8ff5535ae2c753a8b92764))
* **deps:** update tanstack-query monorepo to ^5.80.0 ([#3307](https://github.com/homarr-labs/homarr/issues/3307)) ([df2a9a5](https://github.com/homarr-labs/homarr/commit/df2a9a5329e06847904af56a0d058c0da59f6380))
* **deps:** update tanstack-query monorepo to ^5.80.2 ([#3308](https://github.com/homarr-labs/homarr/issues/3308)) ([cae0cad](https://github.com/homarr-labs/homarr/commit/cae0cad92f68f716887e077194d4e30402466d57))
* **deps:** update tanstack-query monorepo to ^5.80.3 ([#3317](https://github.com/homarr-labs/homarr/issues/3317)) ([c051a42](https://github.com/homarr-labs/homarr/commit/c051a42791de4eae4baf20360efe5b0c8925c22b))
* **deps:** update tanstack-query monorepo to ^5.80.5 ([#3321](https://github.com/homarr-labs/homarr/issues/3321)) ([cb77a7d](https://github.com/homarr-labs/homarr/commit/cb77a7dc6d60560250765d129aac9bd236693e2b))
* **deps:** update tanstack-query monorepo to ^5.80.6 ([#3326](https://github.com/homarr-labs/homarr/issues/3326)) ([61553cf](https://github.com/homarr-labs/homarr/commit/61553cfc8e48a1179a148007fb970b1f4e6d509c))
* **deps:** update testcontainers-node monorepo to v11 (major) ([#3250](https://github.com/homarr-labs/homarr/issues/3250)) ([0d1e3a6](https://github.com/homarr-labs/homarr/commit/0d1e3a625a04abd5f667640ab40e01d28e017488))
* **deps:** update tiptap monorepo to v2.13.0 ([#3323](https://github.com/homarr-labs/homarr/issues/3323)) ([dac8234](https://github.com/homarr-labs/homarr/commit/dac82347e86dd7faacb24adbfc61ace9c917b8cd))
* **deps:** update tiptap monorepo to v2.14.0 ([#3334](https://github.com/homarr-labs/homarr/issues/3334)) ([6274a66](https://github.com/homarr-labs/homarr/commit/6274a66048163513e3faaf7011d7d6aa6ad9f161))
* **deps:** update trpc monorepo to ^11.2.0 ([#3293](https://github.com/homarr-labs/homarr/issues/3293)) ([f0ba693](https://github.com/homarr-labs/homarr/commit/f0ba693077a0c7f7897c81f02ad66b77fce52f1c))
* **deps:** update trpc monorepo to ^11.3.0 ([#3322](https://github.com/homarr-labs/homarr/issues/3322)) ([74aa561](https://github.com/homarr-labs/homarr/commit/74aa561f470f0f76421f356998caa91dc8bb65a1))
* **deps:** update trpc monorepo to ^11.3.1 ([#3329](https://github.com/homarr-labs/homarr/issues/3329)) ([8484daa](https://github.com/homarr-labs/homarr/commit/8484daaf7516ad72dd9e7de3117b5e0d50415dbb))
* **nextcloud:** correct calendar event date mapping and support showU… ([#3330](https://github.com/homarr-labs/homarr/issues/3330)) ([ffd2f80](https://github.com/homarr-labs/homarr/commit/ffd2f802bb777f13eac1ee45e1b5f0ca2b596672))
## [1.22.0](https://github.com/homarr-labs/homarr/compare/v1.21.0...v1.22.0) (2025-05-30)
### Features
+6 -20
View File
@@ -17,31 +17,16 @@ const withNextIntl = createNextIntlPlugin({
requestConfig: "../../packages/translation/src/request.ts",
});
interface WebpackConfig {
module: {
rules: {
test: RegExp;
loader: string;
}[];
};
}
const nextConfig: NextConfig = {
output: "standalone",
reactStrictMode: true,
/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },
webpack: (config: WebpackConfig, { isServer }) => {
if (isServer) {
config.module.rules.push({
test: /\.node$/,
loader: "node-loader",
});
}
return config;
},
/**
* dockerode is required in the external server packages because of https://github.com/homarr-labs/homarr/issues/612
*/
serverExternalPackages: ["dockerode"],
experimental: {
optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"],
},
@@ -62,12 +47,13 @@ const nextConfig: NextConfig = {
script-src * 'unsafe-inline' 'unsafe-eval';
base-uri 'self';
connect-src *;
style-src 'self' 'unsafe-inline';
style-src * 'unsafe-inline';
frame-ancestors *;
frame-src *;
form-action 'self';
img-src * data:;
font-src * data:;
media-src * data:;
`
.replace(/\s{2,}/g, " ")
.trim(),
+26 -26
View File
@@ -48,59 +48,59 @@
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@homarr/widgets": "workspace:^0.1.0",
"@mantine/colors-generator": "^8.0.2",
"@mantine/core": "^8.0.2",
"@mantine/dropzone": "^8.0.2",
"@mantine/hooks": "^8.0.2",
"@mantine/modals": "^8.0.2",
"@mantine/tiptap": "^8.0.2",
"@mantine/colors-generator": "^8.1.2",
"@mantine/core": "^8.1.2",
"@mantine/dropzone": "^8.1.2",
"@mantine/hooks": "^8.1.2",
"@mantine/modals": "^8.1.2",
"@mantine/tiptap": "^8.1.2",
"@million/lint": "1.0.14",
"@tabler/icons-react": "^3.33.0",
"@tanstack/react-query": "^5.79.0",
"@tanstack/react-query-devtools": "^5.79.0",
"@tanstack/react-query-next-experimental": "^5.79.0",
"@trpc/client": "^11.1.4",
"@trpc/next": "^11.1.4",
"@trpc/react-query": "^11.1.4",
"@trpc/server": "^11.1.4",
"@tabler/icons-react": "^3.34.0",
"@tanstack/react-query": "^5.81.4",
"@tanstack/react-query-devtools": "^5.81.4",
"@tanstack/react-query-next-experimental": "^5.81.4",
"@trpc/client": "^11.4.3",
"@trpc/next": "^11.4.3",
"@trpc/react-query": "^11.4.3",
"@trpc/server": "^11.4.3",
"@xterm/addon-canvas": "^0.7.0",
"@xterm/addon-fit": "0.10.0",
"@xterm/xterm": "^5.5.0",
"chroma-js": "^3.1.2",
"clsx": "^2.1.1",
"dayjs": "^1.11.13",
"dotenv": "^16.5.0",
"dotenv": "^16.6.0",
"flag-icons": "^7.5.0",
"glob": "^11.0.2",
"glob": "^11.0.3",
"jotai": "^2.12.5",
"mantine-react-table": "2.0.0-beta.9",
"next": "15.3.3",
"next": "15.3.4",
"postcss-preset-mantine": "^1.17.0",
"prismjs": "^1.30.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-error-boundary": "^6.0.0",
"react-simple-code-editor": "^0.14.1",
"sass": "^1.89.0",
"sass": "^1.89.2",
"superjson": "2.2.2",
"swagger-ui-react": "^5.22.0",
"swagger-ui-react": "^5.25.3",
"use-deep-compare-effect": "^1.8.1",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/chroma-js": "3.1.1",
"@types/node": "^22.15.28",
"@types/node": "^22.15.33",
"@types/prismjs": "^1.26.5",
"@types/react": "19.1.6",
"@types/react-dom": "19.1.5",
"@types/react": "19.1.8",
"@types/react-dom": "19.1.6",
"@types/swagger-ui-react": "^5.18.0",
"concurrently": "^9.1.2",
"eslint": "^9.27.0",
"concurrently": "^9.2.0",
"eslint": "^9.29.0",
"node-loader": "^2.1.0",
"prettier": "^3.5.3",
"prettier": "^3.6.2",
"typescript": "^5.8.3"
}
}
@@ -1,4 +1,4 @@
import { IconGrid3x3, IconKey, IconPassword, IconServer, IconUser } from "@tabler/icons-react";
import { IconGrid3x3, IconKey, IconMessage, IconPassword, IconServer, IconUser } from "@tabler/icons-react";
import type { IntegrationSecretKind } from "@homarr/definitions";
import type { TablerIcon } from "@homarr/ui";
@@ -9,4 +9,5 @@ export const integrationSecretIcons = {
password: IconPassword,
realm: IconServer,
tokenId: IconGrid3x3,
topic: IconMessage,
} satisfies Record<IntegrationSecretKind, TablerIcon>;
@@ -30,6 +30,8 @@ export const CertificateErrorDetails = ({ error, url }: CertificateErrorDetailsP
const { mutateAsync: trustHostnameAsync } = clientApi.certificates.trustHostnameMismatch.useMutation();
const { mutateAsync: addCertificateAsync } = clientApi.certificates.addCertificate.useMutation();
const rootCertificate = getHeighestCertificate(error.data.certificate);
const handleTrustHostname = () => {
const { hostname } = new URL(url);
openConfirmModal({
@@ -72,7 +74,7 @@ export const CertificateErrorDetails = ({ error, url }: CertificateErrorDetailsP
const formData = new FormData();
formData.append(
"file",
new File([error.data.certificate.pem], `${hostname}-${createId()}.crt`, {
new File([rootCertificate.pem], `${hostname}-${createId()}.crt`, {
type: "application/x-x509-ca-cert",
}),
);
@@ -110,11 +112,11 @@ export const CertificateErrorDetails = ({ error, url }: CertificateErrorDetailsP
<>
{description}
<CertificateDetailsCard certificate={error.data.certificate} />
<CertificateDetailsCard certificate={rootCertificate} />
{error.data.reason === "hostnameMismatch" && <HostnameMismatchAlert />}
{!error.data.certificate.isSelfSigned && error.data.reason === "untrusted" && <CertificateExtractAlert />}
{!rootCertificate.isSelfSigned && error.data.reason === "untrusted" && <CertificateExtractAlert />}
{showRetryButton && (
<Button
@@ -127,7 +129,7 @@ export const CertificateErrorDetails = ({ error, url }: CertificateErrorDetailsP
</Button>
)}
{(error.data.reason === "untrusted" && error.data.certificate.isSelfSigned) ||
{(error.data.reason === "untrusted" && rootCertificate.isSelfSigned) ||
error.data.reason === "hostnameMismatch" ? (
<Button
variant="default"
@@ -137,7 +139,7 @@ export const CertificateErrorDetails = ({ error, url }: CertificateErrorDetailsP
{tError("certificate.action.trust.label")}
</Button>
) : null}
{error.data.reason === "untrusted" && !error.data.certificate.isSelfSigned ? (
{error.data.reason === "untrusted" && !rootCertificate.isSelfSigned ? (
<Button
variant="default"
fullWidth
@@ -325,3 +327,8 @@ const PemContentModal = createModal<{ content: string }>(({ actions, innerProps
},
size: "lg",
});
const getHeighestCertificate = (certificate: MappedCertificate): MappedCertificate => {
if (certificate.issuerCertificate) return getHeighestCertificate(certificate.issuerCertificate);
return certificate;
};
+6 -6
View File
@@ -36,20 +36,20 @@
"@homarr/validation": "workspace:^0.1.0",
"@homarr/widgets": "workspace:^0.1.0",
"dayjs": "^1.11.13",
"dotenv": "^16.5.0",
"dotenv": "^16.6.0",
"superjson": "2.2.2",
"undici": "7.10.0"
"undici": "7.11.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node": "^22.15.28",
"@types/node": "^22.15.33",
"dotenv-cli": "^8.0.0",
"esbuild": "^0.25.5",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"tsx": "4.19.4",
"eslint": "^9.29.0",
"prettier": "^3.6.2",
"tsx": "4.20.3",
"typescript": "^5.8.3"
}
}
+4 -4
View File
@@ -25,8 +25,8 @@
"@homarr/log": "workspace:^",
"@homarr/redis": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"dotenv": "^16.5.0",
"tsx": "4.19.4",
"dotenv": "^16.6.0",
"tsx": "4.20.3",
"ws": "^8.18.2"
},
"devDependencies": {
@@ -35,8 +35,8 @@
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/ws": "^8.18.1",
"esbuild": "^0.25.5",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"eslint": "^9.29.0",
"prettier": "^3.6.2",
"typescript": "^5.8.3"
}
}
+11 -11
View File
@@ -1,6 +1,6 @@
{
"name": "homarr",
"version": "1.22.0",
"version": "1.26.0",
"private": true,
"scripts": {
"build": "cross-env CI=true turbo build",
@@ -36,26 +36,26 @@
"@semantic-release/commit-analyzer": "^13.0.1",
"@semantic-release/git": "^10.0.1",
"@semantic-release/github": "^11.0.3",
"@semantic-release/npm": "^12.0.1",
"@semantic-release/npm": "^12.0.2",
"@semantic-release/release-notes-generator": "^14.0.3",
"@turbo/gen": "^2.5.4",
"@vitejs/plugin-react": "^4.5.0",
"@vitest/coverage-v8": "^3.1.4",
"@vitest/ui": "^3.1.4",
"@vitejs/plugin-react": "^4.6.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/ui": "^3.2.4",
"conventional-changelog-conventionalcommits": "^9.0.0",
"cross-env": "^7.0.3",
"jsdom": "^26.1.0",
"prettier": "^3.5.3",
"prettier": "^3.6.2",
"semantic-release": "^24.2.5",
"testcontainers": "^10.28.0",
"testcontainers": "^11.0.3",
"turbo": "^2.5.4",
"typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.1.4"
"vitest": "^3.2.4"
},
"packageManager": "pnpm@10.11.0",
"packageManager": "pnpm@10.12.4",
"engines": {
"node": ">=22.16.0"
"node": ">=22.17.0"
},
"pnpm": {
"onlyBuiltDependencies": [
@@ -70,7 +70,7 @@
"tree-sitter-json"
],
"overrides": {
"proxmox-api>undici": "7.10.0"
"proxmox-api>undici": "7.11.0"
},
"allowUnusedPatches": true,
"ignoredBuiltDependencies": [
+1 -1
View File
@@ -32,7 +32,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+9 -9
View File
@@ -41,25 +41,25 @@
"@homarr/server-settings": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@kubernetes/client-node": "^1.3.0",
"@tanstack/react-query": "^5.79.0",
"@trpc/client": "^11.1.4",
"@trpc/react-query": "^11.1.4",
"@trpc/server": "^11.1.4",
"@trpc/tanstack-react-query": "^11.1.4",
"@tanstack/react-query": "^5.81.4",
"@trpc/client": "^11.4.3",
"@trpc/react-query": "^11.4.3",
"@trpc/server": "^11.4.3",
"@trpc/tanstack-react-query": "^11.4.3",
"lodash.clonedeep": "^4.5.0",
"next": "15.3.3",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"superjson": "2.2.2",
"trpc-to-openapi": "^2.3.1",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"eslint": "^9.29.0",
"prettier": "^3.6.2",
"typescript": "^5.8.3"
}
}
@@ -36,6 +36,7 @@ const mapError = (error: Error): MappedError => {
export interface MappedCertificate {
isSelfSigned: boolean;
issuer: string;
issuerCertificate?: MappedCertificate;
subject: string;
serialNumber: string;
validFrom: Date;
@@ -47,6 +48,7 @@ export interface MappedCertificate {
const mapCertificate = (certificate: X509Certificate, code: RequestErrorCode): MappedCertificate => ({
isSelfSigned: certificate.ca || code === "DEPTH_ZERO_SELF_SIGNED_CERT",
issuer: certificate.issuer,
issuerCertificate: certificate.issuerCertificate ? mapCertificate(certificate.issuerCertificate, code) : undefined,
subject: certificate.subject,
serialNumber: certificate.serialNumber,
validFrom: certificate.validFromDate,
+2
View File
@@ -11,6 +11,7 @@ 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";
@@ -37,4 +38,5 @@ export const widgetRouter = createTRPCRouter({
options: optionsRouter,
releases: releasesRouter,
networkController: networkControllerRouter,
notifications: notificationsRouter,
});
@@ -0,0 +1,64 @@
import { observable } from "@trpc/server/observable";
import type { Modify } from "@homarr/common/types";
import type { Integration } from "@homarr/db/schema";
import type { IntegrationKindByCategory } from "@homarr/definitions";
import { getIntegrationKindsByCategory } from "@homarr/definitions";
import type { Notification } from "@homarr/integrations";
import { notificationsRequestHandler } from "@homarr/request-handler/notifications";
import type { IntegrationAction } from "../../middlewares/integration";
import { createManyIntegrationMiddleware } from "../../middlewares/integration";
import { createTRPCRouter, publicProcedure } from "../../trpc";
const createNotificationsIntegrationMiddleware = (action: IntegrationAction) =>
createManyIntegrationMiddleware(action, ...getIntegrationKindsByCategory("notifications"));
export const notificationsRouter = createTRPCRouter({
getNotifications: publicProcedure
.unstable_concat(createNotificationsIntegrationMiddleware("query"))
.query(async ({ ctx }) => {
return await Promise.all(
ctx.integrations.map(async (integration) => {
const innerHandler = notificationsRequestHandler.handler(integration, {});
const { data, timestamp } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
return {
integration: {
id: integration.id,
name: integration.name,
kind: integration.kind,
updatedAt: timestamp,
},
data,
};
}),
);
}),
subscribeNotifications: publicProcedure
.unstable_concat(createNotificationsIntegrationMiddleware("query"))
.subscription(({ ctx }) => {
return observable<{
integration: Modify<Integration, { kind: IntegrationKindByCategory<"notifications"> }>;
data: Notification[];
}>((emit) => {
const unsubscribes: (() => void)[] = [];
for (const integrationWithSecrets of ctx.integrations) {
const { decryptedSecrets: _, ...integration } = integrationWithSecrets;
const innerHandler = notificationsRequestHandler.handler(integrationWithSecrets, {});
const unsubscribe = innerHandler.subscribe((data) => {
emit.next({
integration,
data,
});
});
unsubscribes.push(unsubscribe);
}
return () => {
unsubscribes.forEach((unsubscribe) => {
unsubscribe();
});
};
});
}),
});
+9 -9
View File
@@ -23,8 +23,8 @@
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@auth/core": "^0.39.1",
"@auth/drizzle-adapter": "^1.9.1",
"@auth/core": "^0.40.0",
"@auth/drizzle-adapter": "^1.10.0",
"@homarr/certificates": "workspace:^0.1.0",
"@homarr/common": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
@@ -34,21 +34,21 @@
"@homarr/validation": "workspace:^0.1.0",
"bcrypt": "^6.0.0",
"cookies": "^0.9.1",
"ldapts": "8.0.1",
"next": "15.3.3",
"next-auth": "5.0.0-beta.28",
"ldapts": "8.0.2",
"next": "15.3.4",
"next-auth": "5.0.0-beta.29",
"react": "19.1.0",
"react-dom": "19.1.0",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/bcrypt": "5.0.2",
"@types/cookies": "0.9.0",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"@types/cookies": "0.9.1",
"eslint": "^9.29.0",
"prettier": "^3.6.2",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -32,7 +32,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+2 -2
View File
@@ -24,13 +24,13 @@
"dependencies": {
"@homarr/common": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"undici": "7.10.0"
"undici": "7.11.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+2 -2
View File
@@ -28,14 +28,14 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"dotenv": "^16.5.0"
"dotenv": "^16.6.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"esbuild": "^0.25.5",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+5 -5
View File
@@ -30,18 +30,18 @@
"@homarr/env": "workspace:^0.1.0",
"@homarr/log": "workspace:^0.1.0",
"dayjs": "^1.11.13",
"next": "15.3.3",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"undici": "7.10.0",
"zod": "^3.25.42",
"zod-validation-error": "^3.4.1"
"undici": "7.11.0",
"zod": "^3.25.67",
"zod-validation-error": "^3.5.2"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
@@ -36,7 +36,12 @@ export const requestErrorMap = {
expired: ["CERT_HAS_EXPIRED"],
hostnameMismatch: ["ERR_TLS_CERT_ALTNAME_INVALID", "CERT_COMMON_NAME_INVALID"],
notYetValid: ["CERT_NOT_YET_VALID"],
untrusted: ["DEPTH_ZERO_SELF_SIGNED_CERT", "UNABLE_TO_VERIFY_LEAF_SIGNATURE", "UNABLE_TO_GET_ISSUER_CERT_LOCALLY"],
untrusted: [
"DEPTH_ZERO_SELF_SIGNED_CERT",
"UNABLE_TO_VERIFY_LEAF_SIGNATURE",
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
"SELF_SIGNED_CERT_IN_CHAIN",
],
},
connection: {
hostUnreachable: "EHOSTUNREACH",
+2 -2
View File
@@ -10,11 +10,11 @@ const calculateTimeAgo = (timestamp: Date) => {
return dayjs().to(timestamp);
};
export const useTimeAgo = (timestamp: Date) => {
export const useTimeAgo = (timestamp: Date, updateFrequency = 1000) => {
const [timeAgo, setTimeAgo] = useState(calculateTimeAgo(timestamp));
useEffect(() => {
const intervalId = setInterval(() => setTimeAgo(calculateTimeAgo(timestamp)), 1000); // update every second
const intervalId = setInterval(() => setTimeAgo(calculateTimeAgo(timestamp)), updateFrequency);
return () => clearInterval(intervalId); // clear interval on hook unmount
}, [timestamp]);
+1 -1
View File
@@ -33,7 +33,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1
View File
@@ -25,6 +25,7 @@ export const cronJobs = {
minecraftServerStatus: { preventManualExecution: false },
networkController: { preventManualExecution: false },
dockerContainers: { preventManualExecution: false },
refreshNotifications: { preventManualExecution: false },
} satisfies Record<JobGroupKeys, { preventManualExecution?: boolean }>;
/**
+1 -1
View File
@@ -29,7 +29,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+2 -2
View File
@@ -25,14 +25,14 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@homarr/common": "workspace:^0.1.0",
"node-cron": "^4.0.7"
"node-cron": "^4.1.1"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node-cron": "^3.0.11",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -44,7 +44,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+2
View File
@@ -11,6 +11,7 @@ import { mediaRequestListJob, mediaRequestStatsJob } from "./jobs/integrations/m
import { mediaServerJob } from "./jobs/integrations/media-server";
import { mediaTranscodingJob } from "./jobs/integrations/media-transcoding";
import { networkControllerJob } from "./jobs/integrations/network-controller";
import { refreshNotificationsJob } from "./jobs/integrations/notifications";
import { minecraftServerStatusJob } from "./jobs/minecraft-server-status";
import { pingJob } from "./jobs/ping";
import { rssFeedsJob } from "./jobs/rss-feeds";
@@ -38,6 +39,7 @@ export const jobGroup = createCronJobGroup({
minecraftServerStatus: minecraftServerStatusJob,
dockerContainers: dockerContainersJob,
networkController: networkControllerJob,
refreshNotifications: refreshNotificationsJob,
});
export type JobGroupKeys = ReturnType<(typeof jobGroup)["getKeys"]>[number];
@@ -1,10 +1,10 @@
import { EVERY_5_SECONDS } from "@homarr/cron-jobs-core/expressions";
import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions";
import { dnsHoleRequestHandler } from "@homarr/request-handler/dns-hole";
import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler";
import { createCronJob } from "../../lib";
export const dnsHoleJob = createCronJob("dnsHole", EVERY_5_SECONDS).withCallback(
export const dnsHoleJob = createCronJob("dnsHole", EVERY_MINUTE).withCallback(
createRequestIntegrationJobHandler(dnsHoleRequestHandler.handler, {
widgetKinds: ["dnsHoleSummary", "dnsHoleControls"],
getInput: {
@@ -0,0 +1,14 @@
import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions";
import { createRequestIntegrationJobHandler } from "@homarr/request-handler/lib/cached-request-integration-job-handler";
import { notificationsRequestHandler } from "@homarr/request-handler/notifications";
import { createCronJob } from "../../lib";
export const refreshNotificationsJob = createCronJob("refreshNotifications", EVERY_5_MINUTES).withCallback(
createRequestIntegrationJobHandler(notificationsRequestHandler.handler, {
widgetKinds: ["notifications"],
getInput: {
notifications: (options) => options,
},
}),
);
+2 -2
View File
@@ -1,6 +1,6 @@
import SuperJSON from "superjson";
import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions";
import { EVERY_10_MINUTES } from "@homarr/cron-jobs-core/expressions";
import { db, eq } from "@homarr/db";
import { items } from "@homarr/db/schema";
import { logger } from "@homarr/log";
@@ -10,7 +10,7 @@ import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds";
import type { WidgetComponentProps } from "../../../widgets";
import { createCronJob } from "../lib";
export const rssFeedsJob = createCronJob("rssFeeds", EVERY_5_MINUTES).withCallback(async () => {
export const rssFeedsJob = createCronJob("rssFeeds", EVERY_10_MINUTES).withCallback(async () => {
const rssItems = await db.query.items.findMany({
where: eq(items.kind, "rssFeed"),
});
+10 -10
View File
@@ -38,19 +38,19 @@
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@auth/core": "^0.39.1",
"@auth/core": "^0.40.0",
"@homarr/common": "workspace:^0.1.0",
"@homarr/definitions": "workspace:^0.1.0",
"@homarr/env": "workspace:^0.1.0",
"@homarr/log": "workspace:^0.1.0",
"@homarr/server-settings": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@mantine/core": "^8.1.2",
"@paralleldrive/cuid2": "^2.2.2",
"@testcontainers/mysql": "^10.28.0",
"better-sqlite3": "^11.10.0",
"dotenv": "^16.5.0",
"drizzle-kit": "^0.31.1",
"drizzle-orm": "^0.44.0",
"@testcontainers/mysql": "^11.0.3",
"better-sqlite3": "^12.1.1",
"dotenv": "^16.6.0",
"drizzle-kit": "^0.31.4",
"drizzle-orm": "^0.44.2",
"drizzle-zod": "^0.7.1",
"mysql2": "3.14.1"
},
@@ -61,9 +61,9 @@
"@types/better-sqlite3": "7.6.13",
"dotenv-cli": "^8.0.0",
"esbuild": "^0.25.5",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"tsx": "4.19.4",
"eslint": "^9.29.0",
"prettier": "^3.6.2",
"tsx": "4.20.3",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -9,7 +9,7 @@ import * as mysqlSchema from "../schema/mysql";
describe("Mysql Migration", () => {
test("should add all tables and keys specified in migration files", async () => {
const mysqlContainer = await new MySqlContainer().start();
const mysqlContainer = await new MySqlContainer("mysql:latest").start();
const connection = mysql.createConnection({
host: mysqlContainer.getHost(),
+4 -4
View File
@@ -24,15 +24,15 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@homarr/common": "workspace:^0.1.0",
"fast-xml-parser": "^5.2.3",
"zod": "^3.25.42"
"fast-xml-parser": "^5.2.5",
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"tsx": "4.19.4",
"eslint": "^9.29.0",
"tsx": "4.20.3",
"typescript": "^5.8.3"
}
}
+9 -1
View File
@@ -7,6 +7,7 @@ export const integrationSecretKindObject = {
password: { isPublic: false },
tokenId: { isPublic: true },
realm: { isPublic: true },
topic: { isPublic: true },
} satisfies Record<string, { isPublic: boolean }>;
export const integrationSecretKinds = objectKeys(integrationSecretKindObject);
@@ -169,6 +170,12 @@ export const integrationDefs = {
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/png/unifi.png",
category: ["networkController"],
},
ntfy: {
name: "ntfy",
secretKinds: [["topic"], ["topic", "apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/ntfy.svg",
category: ["notifications"],
},
} as const satisfies Record<string, integrationDefinition>;
export const integrationKinds = objectKeys(integrationDefs) as AtLeastOneOf<IntegrationKind>;
@@ -223,4 +230,5 @@ export type IntegrationCategory =
| "healthMonitoring"
| "search"
| "mediaTranscoding"
| "networkController";
| "networkController"
| "notifications";
+1
View File
@@ -25,5 +25,6 @@ export const widgetKinds = [
"healthMonitoring",
"releases",
"dockerContainers",
"notifications",
] as const;
export type WidgetKind = (typeof widgetKinds)[number];
+3 -3
View File
@@ -26,14 +26,14 @@
"dependencies": {
"@homarr/common": "workspace:^0.1.0",
"@homarr/env": "workspace:^0.1.0",
"dockerode": "^4.0.6"
"dockerode": "^4.0.7"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/dockerode": "^3.3.39",
"eslint": "^9.27.0",
"@types/dockerode": "^3.3.41",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -23,14 +23,14 @@
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@t3-oss/env-nextjs": "^0.13.6",
"zod": "^3.25.42"
"@t3-oss/env-nextjs": "^0.13.8",
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -26,14 +26,14 @@
"@homarr/common": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/form": "^8.0.2",
"zod": "^3.25.42"
"@mantine/form": "^8.1.2",
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -29,15 +29,15 @@
"@homarr/notifications": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@mantine/core": "^8.1.2",
"react": "19.1.0",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -31,7 +31,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+5 -5
View File
@@ -38,13 +38,13 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@jellyfin/sdk": "^0.11.0",
"maria2": "^0.4.0",
"maria2": "^0.4.1",
"node-ical": "^0.20.1",
"proxmox-api": "1.1.1",
"tsdav": "^2.1.4",
"undici": "7.10.0",
"tsdav": "^2.1.5",
"undici": "7.11.0",
"xml2js": "^0.6.2",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
@@ -52,7 +52,7 @@
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/node-unifi": "^2.5.1",
"@types/xml2js": "^0.4.14",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
@@ -21,6 +21,7 @@ import { ReadarrIntegration } from "../media-organizer/readarr/readarr-integrati
import { SonarrIntegration } from "../media-organizer/sonarr/sonarr-integration";
import { TdarrIntegration } from "../media-transcoding/tdarr-integration";
import { NextcloudIntegration } from "../nextcloud/nextcloud.integration";
import { NTFYIntegration } from "../ntfy/ntfy-integration";
import { OpenMediaVaultIntegration } from "../openmediavault/openmediavault-integration";
import { OverseerrIntegration } from "../overseerr/overseerr-integration";
import { createPiHoleIntegrationAsync } from "../pi-hole/pi-hole-integration-factory";
@@ -92,6 +93,7 @@ export const integrationCreators = {
emby: EmbyIntegration,
nextcloud: NextcloudIntegration,
unifiController: UnifiControllerIntegration,
ntfy: NTFYIntegration,
} satisfies Record<IntegrationKind, IntegrationInstance | [(input: IntegrationInput) => Promise<Integration>]>;
type IntegrationInstanceOfKind<TKind extends keyof typeof integrationCreators> = {
+6 -4
View File
@@ -1,26 +1,27 @@
// General integrations
export { AdGuardHomeIntegration } from "./adguard-home/adguard-home-integration";
export { Aria2Integration } from "./download-client/aria2/aria2-integration";
export { DelugeIntegration } from "./download-client/deluge/deluge-integration";
export { NzbGetIntegration } from "./download-client/nzbget/nzbget-integration";
export { QBitTorrentIntegration } from "./download-client/qbittorrent/qbittorrent-integration";
export { SabnzbdIntegration } from "./download-client/sabnzbd/sabnzbd-integration";
export { TransmissionIntegration } from "./download-client/transmission/transmission-integration";
export { Aria2Integration } from "./download-client/aria2/aria2-integration";
export { HomeAssistantIntegration } from "./homeassistant/homeassistant-integration";
export { DownloadClientIntegration } from "./interfaces/downloads/download-client-integration";
export { JellyfinIntegration } from "./jellyfin/jellyfin-integration";
export { JellyseerrIntegration } from "./jellyseerr/jellyseerr-integration";
export { LidarrIntegration } from "./media-organizer/lidarr/lidarr-integration";
export { RadarrIntegration } from "./media-organizer/radarr/radarr-integration";
export { ReadarrIntegration } from "./media-organizer/readarr/readarr-integration";
export { SonarrIntegration } from "./media-organizer/sonarr/sonarr-integration";
export { NextcloudIntegration } from "./nextcloud/nextcloud.integration";
export { NTFYIntegration } from "./ntfy/ntfy-integration";
export { OpenMediaVaultIntegration } from "./openmediavault/openmediavault-integration";
export { OverseerrIntegration } from "./overseerr/overseerr-integration";
export { PiHoleIntegrationV5 } from "./pi-hole/v5/pi-hole-integration-v5";
export { PiHoleIntegrationV6 } from "./pi-hole/v6/pi-hole-integration-v6";
export { PlexIntegration } from "./plex/plex-integration";
export { ProwlarrIntegration } from "./prowlarr/prowlarr-integration";
export { LidarrIntegration } from "./media-organizer/lidarr/lidarr-integration";
export { ReadarrIntegration } from "./media-organizer/readarr/readarr-integration";
export { NextcloudIntegration } from "./nextcloud/nextcloud.integration";
// Types
export type { IntegrationInput } from "./base/integration";
@@ -34,6 +35,7 @@ export type { StreamSession } from "./interfaces/media-server/session";
export type { TdarrQueue } from "./interfaces/media-transcoding/queue";
export type { TdarrPieSegment, TdarrStatistics } from "./interfaces/media-transcoding/statistics";
export type { TdarrWorker } from "./interfaces/media-transcoding/workers";
export type { Notification } from "./interfaces/notifications/notification";
// Schemas
export { downloadClientItemSchema } from "./interfaces/downloads/download-client-items";
@@ -43,6 +43,7 @@ export interface MediaRequestStats {
users: RequestUser[];
}
// https://github.com/fallenbagel/jellyseerr/blob/0fd03f38480f853e7015ad9229ed98160e37602e/server/constants/media.ts#L1
export enum MediaRequestStatus {
PendingApproval = 1,
Approved = 2,
@@ -51,6 +52,7 @@ export enum MediaRequestStatus {
Completed = 5,
}
// https://github.com/fallenbagel/jellyseerr/blob/0fd03f38480f853e7015ad9229ed98160e37602e/server/constants/media.ts#L14
export enum MediaAvailability {
Unknown = 1,
Pending = 2,
@@ -58,4 +60,5 @@ export enum MediaAvailability {
PartiallyAvailable = 4,
Available = 5,
Blacklisted = 6,
Deleted = 7,
}
@@ -0,0 +1,6 @@
export interface Notification {
id: string;
time: Date;
title: string;
body: string;
}
@@ -0,0 +1,6 @@
import { Integration } from "../../base/integration";
import type { Notification } from "./notification";
export abstract class NotificationsIntegration extends Integration {
public abstract getNotificationsAsync(): Promise<Notification[]>;
}
@@ -1,6 +1,3 @@
import dayjs from "dayjs";
import objectSupport from "dayjs/plugin/objectSupport";
import utc from "dayjs/plugin/utc";
import * as ical from "node-ical";
import { DAVClient } from "tsdav";
import type { Dispatcher, RequestInit as UndiciFetchRequestInit } from "undici";
@@ -15,9 +12,6 @@ import { Integration } from "../base/integration";
import type { TestingResult } from "../base/test-connection/test-connection-service";
import type { CalendarEvent } from "../calendar-types";
dayjs.extend(utc);
dayjs.extend(objectSupport);
@HandleIntegrationErrors([integrationTsdavHttpErrorHandler])
export class NextcloudIntegration extends Integration {
protected async testingAsync(input: IntegrationTestingInput): Promise<TestingResult> {
@@ -27,7 +21,7 @@ export class NextcloudIntegration extends Integration {
return { success: true };
}
public async getCalendarEventsAsync(start: Date, end: Date): Promise<CalendarEvent[]> {
public async getCalendarEventsAsync(start: Date, end: Date, _showUnmonitored?: boolean): Promise<CalendarEvent[]> {
const client = await this.createCalendarClientAsync();
await client.login();
@@ -57,14 +51,7 @@ export class NextcloudIntegration extends Integration {
logger.debug(`Converting VEVENT event to ${event.etag} from Nextcloud: ${JSON.stringify(veventObject)}`);
const date = dayjs.utc({
days: veventObject.start.getDay(),
month: veventObject.start.getMonth(),
year: veventObject.start.getFullYear(),
hours: veventObject.start.getHours(),
minutes: veventObject.start.getMinutes(),
seconds: veventObject.start.getSeconds(),
});
const date = veventObject.start;
const eventUrlWithoutHost = new URL(event.url).pathname;
const dateInMillis = veventObject.start.valueOf();
@@ -75,7 +62,7 @@ export class NextcloudIntegration extends Integration {
return {
name: veventObject.summary,
date: date.toDate(),
date,
subName: "",
description: veventObject.description,
links: [
@@ -0,0 +1,65 @@
import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server";
import { ResponseError } from "@homarr/common/server";
import type { IntegrationTestingInput } from "../base/integration";
import type { TestingResult } from "../base/test-connection/test-connection-service";
import type { Notification } from "../interfaces/notifications/notification";
import { NotificationsIntegration } from "../interfaces/notifications/notifications-integration";
import { ntfyNotificationSchema } from "./ntfy-schema";
export class NTFYIntegration extends NotificationsIntegration {
public async testingAsync(input: IntegrationTestingInput): Promise<TestingResult> {
await input.fetchAsync(this.url("/v1/account"), { headers: this.getHeaders() });
return { success: true };
}
private getTopicURL() {
return this.url(`/${encodeURIComponent(super.getSecretValue("topic"))}/json`, { poll: 1 });
}
private getHeaders() {
return this.hasSecretValue("apiKey") ? { Authorization: `Bearer ${super.getSecretValue("apiKey")}` } : {};
}
public async getNotificationsAsync() {
const url = this.getTopicURL();
const notifications = await Promise.all(
(
await fetchWithTrustedCertificatesAsync(url, { headers: this.getHeaders() })
.then((response) => {
if (!response.ok) throw new ResponseError(response);
return response.text();
})
.catch((error) => {
if (error instanceof Error) throw error;
else {
throw new Error("Error communicating with ntfy");
}
})
)
// response is provided as individual lines of JSON
.split("\n")
.map(async (line) => {
// ignore empty lines
if (line.length === 0) return null;
const json = JSON.parse(line) as unknown;
const parsed = await ntfyNotificationSchema.parseAsync(json);
if (parsed.event === "message") return parsed;
// ignore non-event messages
else return null;
}),
);
return notifications
.filter((notification) => notification !== null)
.map((notification): Notification => {
const topicURL = this.url(`/${notification.topic}`);
return {
id: notification.id,
time: new Date(notification.time * 1000),
title: notification.title ?? topicURL.hostname + topicURL.pathname,
body: notification.message,
};
});
}
}
@@ -0,0 +1,12 @@
import { z } from "zod";
// There are more properties, see: https://docs.ntfy.sh/subscribe/api/#json-message-format
// Not all properties are required for this use case.
export const ntfyNotificationSchema = z.object({
id: z.string(),
time: z.number(),
event: z.string(), // we only care about "message"
topic: z.string(),
title: z.optional(z.string()),
message: z.string(),
});
@@ -66,7 +66,7 @@ export class OpenMediaVaultIntegration extends Integration {
return {
version: systemResult.data.response.version,
cpuModelName: systemResult.data.response.cpuModelName,
cpuModelName: systemResult.data.response.cpuModelName ?? "Unknown CPU",
cpuUtilization: systemResult.data.response.cpuUtilization,
memUsed: systemResult.data.response.memUsed,
memAvailable: systemResult.data.response.memAvailable,
@@ -4,7 +4,7 @@ import { z } from "zod";
export const systemInformationSchema = z.object({
response: z.object({
version: z.string(),
cpuModelName: z.string(),
cpuModelName: z.string().nullable(),
cpuUtilization: z.number(),
memUsed: z.string(),
memAvailable: z.string(),
@@ -77,6 +77,7 @@ export class PiHoleIntegrationV6 extends Integration implements DnsHoleSummaryIn
protected async testingAsync({ fetchAsync }: IntegrationTestingInput): Promise<TestingResult> {
const sessionId = await this.getSessionAsync(fetchAsync);
await this.clearSessionAsync(sessionId, fetchAsync);
await this.sessionStore.clearAsync();
return { success: true };
}
@@ -64,26 +64,29 @@ describe("Home Assistant integration", () => {
const prepareHomeAssistantContainerAsync = async () => {
const homeAssistantContainer = createHomeAssistantContainer();
const startedContainer = await homeAssistantContainer.start();
await startedContainer.exec(["unzip", "-o", "/tmp/config.zip", "-d", "/config"]);
await startedContainer.restart();
return startedContainer;
};
const createHomeAssistantContainer = () => {
return new GenericContainer(IMAGE_NAME)
.withCopyFilesToContainer([
{
source: join(__dirname, "/volumes/home-assistant-config.zip"),
target: "/tmp/config.zip",
},
])
.withPrivilegedMode()
.withExposedPorts(8123)
.withWaitStrategy(Wait.forHttp("/", 8123));
return (
new GenericContainer(IMAGE_NAME)
.withCopyFilesToContainer([
{
source: join(__dirname, "/volumes/home-assistant-config.zip"),
target: "/tmp/config.zip",
},
])
.withPrivilegedMode()
.withExposedPorts(8123)
// This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode))
.withWaitStrategy(Wait.forHttp("/onboarding.html", 8123))
);
};
const createHomeAssistantIntegration = (container: StartedTestContainer, apiKeyOverride?: string) => {
console.log("Creating Home Assistant integration...");
return new HomeAssistantIntegration({
id: "1",
decryptedSecrets: [
+2 -2
View File
@@ -145,8 +145,8 @@ describe("Nzbget integration", () => {
// Assert
await expect(actAsync()).resolves.not.toThrow();
// NzbGet is slow and we wait for a second before querying the items. Test was flaky without this.
await new Promise((resolve) => setTimeout(resolve, 1000));
// NzbGet is slow and we wait for a few seconds before querying the items. Test was flaky without this.
await new Promise((resolve) => setTimeout(resolve, 5000));
const result = await nzbGetIntegration.getClientJobsAndStatusAsync({ limit: 99 });
expect(result.items).toHaveLength(0);
+9 -6
View File
@@ -211,12 +211,15 @@ const createPiHoleIntegrationV5 = (container: StartedTestContainer, apiKey: stri
};
const createPiHoleV6Container = (password: string) => {
return new GenericContainer("pihole/pihole:latest")
.withEnvironment({
FTLCONF_webserver_api_password: password,
})
.withExposedPorts(80)
.withWaitStrategy(Wait.forHttp("/admin", 80));
return (
new GenericContainer("pihole/pihole:latest")
.withEnvironment({
FTLCONF_webserver_api_password: password,
})
.withExposedPorts(80)
// This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode))
.withWaitStrategy(Wait.forHttp("/admin/login", 80))
);
};
const createPiHoleIntegrationV6 = (container: StartedTestContainer, apiKey: string) => {
+13 -10
View File
@@ -192,16 +192,19 @@ describe("Sabnzbd integration", () => {
});
const createSabnzbdContainer = () => {
return new GenericContainer(IMAGE_NAME)
.withCopyFilesToContainer([
{
source: join(__dirname, "/volumes/usenet/sabnzbd.ini"),
target: "/config/sabnzbd.ini",
},
])
.withExposedPorts(1212)
.withEnvironment({ PUID: "0", PGID: "0" })
.withWaitStrategy(Wait.forHttp("/", 1212));
return (
new GenericContainer(IMAGE_NAME)
.withCopyFilesToContainer([
{
source: join(__dirname, "/volumes/usenet/sabnzbd.ini"),
target: "/config/sabnzbd.ini",
},
])
.withExposedPorts(1212)
.withEnvironment({ PUID: "0", PGID: "0" })
// This has to be a page that is not redirected (or a status code has to be defined withStatusCode(statusCode))
.withWaitStrategy(Wait.forHttp("/sabnzbd/wizard/", 1212))
);
};
const createSabnzbdIntegration = (container: StartedTestContainer, apiKey: string) => {
+2 -2
View File
@@ -27,13 +27,13 @@
"ioredis": "5.6.1",
"superjson": "2.2.2",
"winston": "3.17.0",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+5 -5
View File
@@ -33,19 +33,19 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@tabler/icons-react": "^3.33.0",
"@mantine/core": "^8.1.2",
"@tabler/icons-react": "^3.34.0",
"dayjs": "^1.11.13",
"next": "15.3.3",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -24,15 +24,15 @@
"dependencies": {
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@mantine/hooks": "^8.0.2",
"@mantine/core": "^8.1.2",
"@mantine/hooks": "^8.1.2",
"react": "19.1.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -24,14 +24,14 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@homarr/ui": "workspace:^0.1.0",
"@mantine/notifications": "^8.0.2",
"@tabler/icons-react": "^3.33.0"
"@mantine/notifications": "^8.1.2",
"@tabler/icons-react": "^3.34.0"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+5 -5
View File
@@ -37,14 +37,14 @@
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@mantine/hooks": "^8.0.2",
"@mantine/core": "^8.1.2",
"@mantine/hooks": "^8.1.2",
"adm-zip": "0.5.16",
"next": "15.3.3",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"superjson": "2.2.2",
"zod": "^3.25.42",
"zod": "^3.25.67",
"zod-form-data": "^2.0.7"
},
"devDependencies": {
@@ -52,7 +52,7 @@
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"@types/adm-zip": "0.5.7",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+2 -2
View File
@@ -23,13 +23,13 @@
"prettier": "@homarr/prettier-config",
"dependencies": {
"@homarr/common": "workspace:^0.1.0",
"zod": "^3.25.42"
"zod": "^3.25.67"
},
"devDependencies": {
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -30,7 +30,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -33,7 +33,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+1 -1
View File
@@ -37,7 +37,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
@@ -0,0 +1,20 @@
import dayjs from "dayjs";
import type { IntegrationKindByCategory } from "@homarr/definitions";
import type { Notification } from "@homarr/integrations";
import { createIntegrationAsync } from "@homarr/integrations";
import { createCachedIntegrationRequestHandler } from "./lib/cached-integration-request-handler";
export const notificationsRequestHandler = createCachedIntegrationRequestHandler<
Notification[],
IntegrationKindByCategory<"notifications">,
Record<string, never>
>({
async requestAsync(integration) {
const integrationInstance = await createIntegrationAsync(integration);
return await integrationInstance.getNotificationsAsync();
},
cacheDuration: dayjs.duration(5, "minutes"),
queryKey: "notificationsJobStatus",
});
+1 -1
View File
@@ -29,7 +29,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -26,8 +26,8 @@
"@homarr/api": "workspace:^0.1.0",
"@homarr/db": "workspace:^0.1.0",
"@homarr/server-settings": "workspace:^0.1.0",
"@mantine/dates": "^8.0.2",
"next": "15.3.3",
"@mantine/dates": "^8.1.2",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0"
},
@@ -35,7 +35,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+6 -6
View File
@@ -33,12 +33,12 @@
"@homarr/settings": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@mantine/core": "^8.0.2",
"@mantine/hooks": "^8.0.2",
"@mantine/spotlight": "^8.0.2",
"@tabler/icons-react": "^3.33.0",
"@mantine/core": "^8.1.2",
"@mantine/hooks": "^8.1.2",
"@mantine/spotlight": "^8.1.2",
"@tabler/icons-react": "^3.34.0",
"jotai": "^2.12.5",
"next": "15.3.3",
"next": "15.3.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"use-deep-compare-effect": "^1.8.1"
@@ -47,7 +47,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+3 -3
View File
@@ -32,8 +32,8 @@
"dayjs": "^1.11.13",
"deepmerge": "4.3.1",
"mantine-react-table": "2.0.0-beta.9",
"next": "15.3.3",
"next-intl": "4.1.0",
"next": "15.3.4",
"next-intl": "4.3.1",
"react": "19.1.0",
"react-dom": "19.1.0"
},
@@ -41,7 +41,7 @@
"@homarr/eslint-config": "workspace:^0.2.0",
"@homarr/prettier-config": "workspace:^0.1.0",
"@homarr/tsconfig": "workspace:^0.1.0",
"eslint": "^9.27.0",
"eslint": "^9.29.0",
"typescript": "^5.8.3"
}
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "",
"available": ""
"available": "",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+199 -172
View File
@@ -263,14 +263,14 @@
}
},
"removeImage": {
"label": "删除图像",
"label": "删除头像",
"confirm": "确定要移除这张图片吗?",
"notification": {
"success": {
"message": "图像删除成功"
},
"error": {
"message": "无法删除图像"
"message": "无法删除头像"
}
}
}
@@ -612,17 +612,17 @@
"select": {
"label": "选择应用",
"notFound": "未找到应用",
"search": "",
"noResults": "",
"action": "",
"title": ""
"search": "搜索应用",
"noResults": "没有结果",
"action": "选择 {app}",
"title": "选择一个应用程序添加到此面板"
},
"create": {
"title": "",
"description": "",
"action": ""
"title": "创建应用",
"description": "创建应用 ",
"action": "打开应用创建"
},
"add": ""
"add": "添加应用"
}
},
"integration": {
@@ -705,125 +705,125 @@
"error": {
"common": {
"cause": {
"title": ""
"title": "更多详情"
}
},
"unknown": {
"title": "",
"description": ""
"title": "未知错误",
"description": "发生未知错误,打开下面的原因以查看更多详情"
},
"parse": {
"title": "",
"description": ""
"title": "解析错误",
"description": "无法解析该响应。请确认URL指向服务的基本URL。"
},
"authorization": {
"title": "",
"description": ""
"title": "授权错误",
"description": "请求未被授权。请验证凭据是否正确,并且您拥有足够的权限。"
},
"statusCode": {
"title": "",
"description": "",
"otherDescription": "",
"title": "响应错误",
"description": "收到来自<url></url>的意外{statusCode} ({reason})响应。请验证URL是否指向集成的基本URL。",
"otherDescription": "从<url></url>收到意外的{statusCode}响应。请验证URL是否指向集成的基本URL。",
"reason": {
"badRequest": "",
"notFound": "",
"tooManyRequests": "",
"internalServerError": "",
"serviceUnavailable": "",
"gatewayTimeout": ""
"badRequest": "错误请求",
"notFound": "未找到",
"tooManyRequests": "请求过于频繁",
"internalServerError": "服务器内部错误",
"serviceUnavailable": "服务暂时不可用",
"gatewayTimeout": "网关超时"
}
},
"certificate": {
"title": "",
"title": "证书错误",
"description": {
"expired": "",
"notYetValid": "",
"untrusted": "",
"hostnameMismatch": ""
"expired": "此证书已经过期。",
"notYetValid": "此证书尚未生效。",
"untrusted": "此证书不受信任。",
"hostnameMismatch": "证书主机名与 URL 不匹配。"
},
"alert": {
"permission": {
"title": "",
"message": ""
"title": "权限不足",
"message": "您无权信任或上传证书。请与您的管理员联系上传必要的根证书。"
},
"hostnameMismatch": {
"title": "",
"message": ""
"title": "主机名不匹配",
"message": "证书中的主机名与您连接的主机名不匹配。 这可能会显示安全风险,但您仍然可以选择信任此证书。"
},
"extract": {
"title": "",
"message": ""
"title": "CA证书提取失败",
"message": "只有自签署证书链可以自动获取。如果使用的是自签名证书,请确保手动上传CA证书。您可以找到有关如何执行此操作的说明<docsLink></docsLink>。"
}
},
"action": {
"retry": {
"label": ""
"label": "重试创建"
},
"trust": {
"label": ""
"label": "信任证书"
},
"upload": {
"label": ""
"label": "上传证书"
}
},
"hostnameMismatch": {
"confirm": {
"title": "",
"message": ""
"title": "信任主机名不匹配",
"message": "您确定要信任主机名不匹配的证书吗?"
},
"notification": {
"success": {
"title": "",
"message": ""
"title": "可信证书",
"message": "将主机名添加到受信任证书列表中"
},
"error": {
"title": "",
"message": ""
"title": "信任证书失败",
"message": "主机名不匹配的证书不可信"
}
}
},
"selfSigned": {
"confirm": {
"title": "",
"message": ""
"title": "信任自签名证书",
"message": "您确定要信任此自签名证书吗?"
},
"notification": {
"success": {
"title": "",
"message": ""
"title": "可信证书",
"message": "已添加证书到可信证书列表"
},
"error": {
"title": "",
"message": ""
"title": "信任证书失败",
"message": "向受信任证书列表添加证书失败"
}
}
},
"details": {
"title": "",
"description": "",
"title": "详情",
"description": "在决定信任证书信息之前,请检查该证书信息。",
"content": {
"action": "",
"title": ""
"action": "显示内容",
"title": "PEM 证书"
}
}
},
"request": {
"title": "",
"title": "错误请求",
"description": {
"connection": {
"hostUnreachable": "",
"networkUnreachable": "",
"refused": "",
"reset": ""
"hostUnreachable": "无法连接到服务器。这通常意味着主机离线或无法从您的网络访问。",
"networkUnreachable": "网络不可达。请检查网络连接或网络配置。",
"refused": "服务器拒绝连接。它可能没有运行或正在拒绝指定端口上的请求。",
"reset": "服务器意外关闭了连接。如果服务器不稳定或重新启动,就会发生这种情况。"
},
"dns": {
"notFound": "",
"timeout": "",
"noAnswer": ""
"notFound": "找不到服务器地址。请检查URL是否有拼写错误或无效的域名。",
"timeout": "DNS查找超时。这可能是暂时的问题,请稍后再试。",
"noAnswer": "DNS服务器没有返回有效的响应。域可能存在,但没有有效记录。"
},
"timeout": {
"aborted": "",
"timeout": ""
"aborted": "请求在完成之前被中止。这可能是由于用户操作或系统超时造成的。",
"timeout": "请求耗时太长。请检查您的网络或稍后再试。"
}
}
}
@@ -895,8 +895,8 @@
"message": "该路径可能不正确"
},
"tooManyRequests": {
"title": "",
"message": ""
"title": "指定时间内请求过多",
"message": "请求太多了。您可能会受到速率限制或被目标系统拒绝"
}
}
},
@@ -936,6 +936,10 @@
"realm": {
"label": "领域",
"newLabel": "新领域"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -1004,7 +1008,7 @@
"cancel": "取消",
"delete": "删除",
"discard": "Discard",
"close": "",
"close": "关闭",
"confirm": "确认",
"continue": "继续",
"previous": "上一步",
@@ -1220,7 +1224,7 @@
"label": "集成"
},
"title": {
"label": ""
"label": "标题"
},
"customCssClasses": {
"label": "自定义 CSS 类"
@@ -1758,7 +1762,7 @@
"label": "显示内存信息"
},
"showUptime": {
"label": ""
"label": "显示运行时间"
},
"fileSystem": {
"label": "显示文件系统信息"
@@ -1767,7 +1771,7 @@
"label": "默认标签"
},
"visibleClusterSections": {
"label": ""
"label": "可见集群部分"
},
"sectionIndicatorRequirement": {
"label": "部分指标要求"
@@ -1839,11 +1843,11 @@
}
},
"dockerContainers": {
"name": "",
"description": "",
"name": "Docker 状态",
"description": "您的容器状态 (这个小部件只能用管理员权限添加)",
"option": {},
"error": {
"internalServerError": ""
"internalServerError": "获取容器统计信息失败"
}
},
"common": {
@@ -1912,8 +1916,8 @@
"description": "显示媒体服务器上的当前流",
"option": {
"showOnlyPlaying": {
"label": "",
"description": ""
"label": "只显示当前正在播放",
"description": "禁用此功能对plex不起作用"
}
},
"items": {
@@ -1946,7 +1950,7 @@
"label": "显示标记为已完成的 Torrent 条目"
},
"showCompletedHttp": {
"label": ""
"label": "显示标记为已完成的杂项"
},
"activeTorrentThreshold": {
"label": "隐藏在此阈值下已完成的 Torrent (kiB/s)"
@@ -1961,8 +1965,8 @@
"label": "使用过滤器来计算比率"
},
"limitPerIntegration": {
"label": "",
"description": ""
"label": "限制每个集成的项目",
"description": "这将限制每个集成显示的项目数量,而不是全局项目"
}
},
"errors": {
@@ -2088,14 +2092,16 @@
"pending": "等待处理",
"processing": "处理中",
"partiallyAvailable": "部分",
"available": "可用"
"available": "可用",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "待处理",
"approved": "已批准",
"declined": "已拒绝",
"failed": "失败",
"completed": ""
"completed": "已完成"
},
"toBeDetermined": "待定"
},
@@ -2199,94 +2205,106 @@
}
},
"releases": {
"name": "",
"description": "",
"name": "发布",
"description": "显示特定版本正则表达式中当前版本的列表。",
"option": {
"newReleaseWithin": {
"label": "",
"description": ""
"label": "内部新版本",
"description": "使用示例:1w(1周),10M(10个月)。支持单位类型h(小时),d(天),w(周),M(月),y(年)。留空不突出显示新版本。"
},
"staleReleaseWithin": {
"label": "",
"description": ""
"label": "内部过期发布",
"description": "使用示例:1w(1周),10M(10个月)。支持单位类型h(小时),d(天),w(周),M(月),y(年)。留空不突出显示过时的版本。"
},
"showOnlyHighlighted": {
"label": "",
"description": ""
"label": "只显示高亮显示",
"description": "只显示新的或过时的版本。如上所述。"
},
"showDetails": {
"label": ""
"label": "展开详情"
},
"topReleases": {
"label": "",
"description": ""
"label": "热门发布",
"description": "要显示的最新版本的最大数量。零表示没有限制。"
},
"repositories": {
"label": "",
"addRRepository": {
"label": ""
"label": "仓库",
"addRepository": {
"label": "添加仓库"
},
"importRepositories": {
"label": "从 Docker 导入",
"loading": "正在加载 docker 映像",
"noImagesFound": "没有找到 docker 映像",
"listFoundImages": "找到的映像列表",
"listAlreadyImportedImages": "已导入的映像列表",
"allImagesAlreadyImported": "所有映像已导入",
"onlyAdminCanImport": "只有管理员才能从 docker 导入"
},
"provider": {
"label": ""
"label": "提供者"
},
"identifier": {
"label": "",
"placeholder": ""
"label": "标识符",
"placeholder": "姓名或所有者名称"
},
"name": {
"label": ""
"label": "名称"
},
"versionFilter": {
"label": "",
"label": "版本过滤器",
"prefix": {
"label": ""
"label": "前缀"
},
"precision": {
"label": "",
"label": "精度",
"options": {
"none": ""
"none": "空"
}
},
"suffix": {
"label": ""
"label": "后缀"
},
"regex": {
"label": ""
"label": "正则表达式"
}
},
"edit": {
"label": ""
"label": "编辑"
},
"editForm": {
"title": "",
"title": "编辑仓库",
"cancel": {
"label": ""
"label": "取消"
},
"confirm": {
"label": ""
"label": "确认"
}
},
"example": {
"label": ""
"importForm": {
"title": "从 Docker 导入"
},
"invalid": ""
"example": {
"label": "示例"
},
"invalid": "仓库定义无效,请检查值"
}
},
"not-found": "",
"pre-release": "",
"archived": "",
"forked": "",
"starsCount": "",
"forksCount": "",
"issuesCount": "",
"openProjectPage": "",
"openReleasePage": "",
"releaseDescription": "",
"created": "",
"not-found": "未找到",
"pre-release": "预发行",
"archived": "已归档",
"forked": "复刻成功",
"starsCount": "星",
"forksCount": "复刻",
"issuesCount": "打开问题",
"openProjectPage": "打开项目页面",
"openReleasePage": "打开发布页面",
"releaseDescription": "发布说明",
"created": "已创建",
"error": {
"label": "",
"label": "错误",
"options": {
"noMatchingVersion": ""
"noMatchingVersion": "没有找到匹配的版本"
}
}
},
@@ -2294,57 +2312,63 @@
"option": {},
"card": {
"vpn": {
"countConnected": ""
"countConnected": "{count} 已连接"
}
},
"error": {
"integrationsDisconnected": "",
"unknownContentOption": ""
"integrationsDisconnected": "没有可用的数据,所有集成已断开",
"unknownContentOption": "网络控制器摘要小部件的未知内容选项: "
},
"name": "",
"description": ""
"name": "网络控制器概述",
"description": "显示网络控制器摘要(如Unifi Controller)"
},
"networkControllerStatus": {
"card": {
"variants": {
"wired": {
"name": ""
"name": "有线"
},
"wifi": {
"name": ""
"name": "Wi-Fi"
}
},
"users": {
"label": ""
"label": "用户数"
},
"guests": {
"label": ""
"label": "游客"
}
},
"option": {
"content": {
"option": {
"wifi": {
"label": ""
"label": "Wi-Fi"
},
"wired": {
"label": ""
"label": "有线"
}
},
"label": ""
"label": "小部件内容"
}
},
"error": {
"integrationsDisconnected": "",
"unknownContentOption": ""
"integrationsDisconnected": "没有可用的数据,所有集成已断开",
"unknownContentOption": "网络状态小部件的未知内容选项: "
},
"name": "",
"description": ""
"name": "网络状态",
"description": "在网络上显示已连接的设备"
},
"networkController": {
"error": {
"internalServerError": ""
"internalServerError": "获取网络控制器概述失败"
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -2466,10 +2490,10 @@
},
"backgroundImageUrl": {
"label": "背景图片 URL",
"placeholder": "",
"placeholder": "开始输入以搜索本地映像",
"group": {
"your": "你的图像",
"other": ""
"your": "你的映像",
"other": "其他映像"
}
},
"backgroundImageAttachment": {
@@ -3110,8 +3134,11 @@
"networkController": {
"label": "网络控制器"
},
"dockerContainers": {
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": "Docker 容器"
}
}
},
@@ -3177,7 +3204,7 @@
"updated": "已更新 {when}",
"search": "搜索 {count} 容器",
"selected": "{totalCount} 容器的 {selectCount}",
"footer": ""
"footer": "总计 {count} 容器"
},
"field": {
"name": {
@@ -3197,10 +3224,10 @@
},
"stats": {
"cpu": {
"label": ""
"label": "CPU"
},
"memory": {
"label": ""
"label": "内存"
}
},
"containerImage": {
@@ -3211,7 +3238,7 @@
}
},
"action": {
"title": "",
"title": "操作",
"start": {
"label": "开始",
"notification": {
@@ -3656,7 +3683,7 @@
"certificates": {
"label": "证书",
"hostnames": {
"label": ""
"label": "主机名"
}
}
},
@@ -4057,25 +4084,25 @@
"certificate": {
"field": {
"hostname": {
"label": ""
"label": "主机名"
},
"subject": {
"label": ""
"label": "主题"
},
"issuer": {
"label": ""
"label": "发行者"
},
"validFrom": {
"label": ""
"label": "有效期自"
},
"validTo": {
"label": ""
"label": "有效期至"
},
"serialNumber": {
"label": ""
"label": "序号"
},
"fingerprint": {
"label": ""
"label": "指纹"
}
},
"page": {
@@ -4086,19 +4113,19 @@
"title": "还没有证书"
},
"invalid": {
"title": "",
"description": ""
"title": "无效证书",
"description": "解析证书失败"
},
"expires": "到期时间 {when}",
"toHostnames": ""
"toHostnames": "信任的主机名"
},
"hostnames": {
"title": "",
"description": "",
"title": "信任的证书主机名",
"description": "某些证书不允许指定域名使用 Homarr 请求他们, 由于这个原因,所有信任的主机名及其证书缩略图都被用来绕过这些限制。",
"noResults": {
"title": ""
"title": "还没有主机名"
},
"toCertificates": ""
"toCertificates": "证书"
}
},
"action": {
@@ -4130,16 +4157,16 @@
}
},
"removeHostname": {
"label": "",
"confirm": "",
"label": "删除受信任的主机名",
"confirm": "您确定要删除此受信任的主机名吗?这可能会导致一些集成停止工作。",
"notification": {
"success": {
"title": "",
"message": ""
"title": "主机名已删除",
"message": "主机名已成功删除"
},
"error": {
"title": "",
"message": ""
"title": "主机名未删除",
"message": "无法删除主机名"
}
}
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Částečně dostupné",
"available": "K dispozici"
"available": "K dispozici",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Realm",
"newLabel": "Nyt realm"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "Afventende",
"processing": "Behandler",
"partiallyAvailable": "Delvis",
"available": "Tilgængelig"
"available": "Tilgængelig",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "Afventende",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "Repositories",
"addRRepository": {
"addRepository": {
"label": "Tilføj repository"
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": "Udbyder"
},
@@ -2266,6 +2281,9 @@
"label": "Bekræft"
}
},
"importForm": {
"title": ""
},
"example": {
"label": "Eksempel"
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": "Kunne ikke hente Netværkskontroloversigt"
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": "Netværkskontroller"
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": "Docker containers"
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Bereich",
"newLabel": "Neuer Bereich"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "Ausstehend",
"processing": "In Bearbeitung",
"partiallyAvailable": "Teilweise",
"available": "Verfügbar"
"available": "Verfügbar",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "Ausstehend",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+41 -14
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Bereich",
"newLabel": "Neuer Bereich"
},
"topic": {
"label": "Thema",
"newLabel": "Neues Thema erstellen"
}
}
},
@@ -1758,7 +1762,7 @@
"label": "Speicher-Info anzeigen"
},
"showUptime": {
"label": ""
"label": "Laufzeit anzeigen"
},
"fileSystem": {
"label": "Dateisystem Info anzeigen"
@@ -1767,7 +1771,7 @@
"label": "Standard Tab"
},
"visibleClusterSections": {
"label": ""
"label": "Sichtbare Cluster-Abschnitte"
},
"sectionIndicatorRequirement": {
"label": "Anforderung der Sektionsindikatoren"
@@ -1839,11 +1843,11 @@
}
},
"dockerContainers": {
"name": "",
"description": "",
"name": "Docker Statistiken",
"description": "Statistiken Ihrer Container (Dieses Widget kann nur mit Administratorrechten hinzugefügt werden)",
"option": {},
"error": {
"internalServerError": ""
"internalServerError": "Fehler beim Abrufen der Container Statistiken"
}
},
"common": {
@@ -1961,8 +1965,8 @@
"label": "Filter zur Berechnung des Verhältnisses verwenden"
},
"limitPerIntegration": {
"label": "",
"description": ""
"label": "Elemente pro Integration begrenzen",
"description": "Dies begrenzt die Anzahl der Elemente pro Integration, jedoch nicht global"
}
},
"errors": {
@@ -2088,7 +2092,9 @@
"pending": "Ausstehend",
"processing": "In Bearbeitung",
"partiallyAvailable": "Teilweise",
"available": "Verfügbar"
"available": "Verfügbar",
"blacklisted": "Gesperrt",
"deleted": "Gelöscht"
},
"status": {
"pending": "Ausstehend",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "Repositories",
"addRRepository": {
"addRepository": {
"label": "Repository hinzufügen"
},
"importRepositories": {
"label": "Von Docker importieren",
"loading": "Lade Docker Images",
"noImagesFound": "Keine Docker Images gefunden",
"listFoundImages": "Liste der gefundenen Images",
"listAlreadyImportedImages": "Liste der bereits importierten Images",
"allImagesAlreadyImported": "Alle Images wurden bereits importiert",
"onlyAdminCanImport": "Nur Administratoren können vom Docker importieren"
},
"provider": {
"label": "Anbieter"
},
@@ -2266,6 +2281,9 @@
"label": "Bestätigen"
}
},
"importForm": {
"title": "Von Docker importieren"
},
"example": {
"label": "Beispiel"
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": "Fehler beim Abrufen der Netzwerk Controller Zusammenfassung"
}
},
"notifications": {
"name": "Benachrichtigungen",
"description": "Benachrichtigungshistorie von einer Integration anzeigen",
"noItems": "Keine Benachrichtigungen zum Anzeigen.",
"option": {}
}
},
"widgetPreview": {
@@ -3110,8 +3134,11 @@
"networkController": {
"label": "Netzwerk Controller"
},
"refreshNotifications": {
"label": "Benachrichtigungs Updater"
},
"dockerContainers": {
"label": ""
"label": "Docker Container"
}
}
},
@@ -3177,7 +3204,7 @@
"updated": "Aktualisiert {when}",
"search": "{count} Container durchsuchen",
"selected": "{selectCount} von {totalCount} ausgewählten Containern",
"footer": ""
"footer": "Insgesamt {count} Container"
},
"field": {
"name": {
@@ -3197,10 +3224,10 @@
},
"stats": {
"cpu": {
"label": ""
"label": "CPU"
},
"memory": {
"label": ""
"label": "Speicher"
}
},
"containerImage": {
@@ -3211,7 +3238,7 @@
}
},
"action": {
"title": "",
"title": "Aktionen",
"start": {
"label": "Starten",
"notification": {
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Μερικώς",
"available": "Διαθέσιμο"
"available": "Διαθέσιμο",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Realm",
"newLabel": "New realm"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "",
"available": ""
"available": "",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Realm",
"newLabel": "New realm"
},
"topic": {
"label": "Topic",
"newLabel": "New topic"
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "Pending",
"processing": "Processing",
"partiallyAvailable": "Partial",
"available": "Available"
"available": "Available",
"blacklisted": "Blacklisted",
"deleted": "Deleted"
},
"status": {
"pending": "Pending",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "Repositories",
"addRRepository": {
"addRepository": {
"label": "Add repository"
},
"importRepositories": {
"label": "Import from docker",
"loading": "Loading docker images",
"noImagesFound": "No docker images found",
"listFoundImages": "List of found images",
"listAlreadyImportedImages": "List of already imported images",
"allImagesAlreadyImported": "All images already imported",
"onlyAdminCanImport": "Only administrators can import from docker"
},
"provider": {
"label": "Provider"
},
@@ -2266,6 +2281,9 @@
"label": "Confirm"
}
},
"importForm": {
"title": "Import from Docker"
},
"example": {
"label": "Example"
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": "Failed to fetch Network Controller Summary"
}
},
"notifications": {
"name": "Notifications",
"description": "Display notification history from an integration",
"noItems": "No notifications to display.",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": "Network Controller"
},
"refreshNotifications": {
"label": "Notification Updater"
},
"dockerContainers": {
"label": "Docker containers"
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Parcial",
"available": "Disponible"
"available": "Disponible",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "",
"available": ""
"available": "",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+30 -3
View File
@@ -747,7 +747,7 @@
"message": ""
},
"hostnameMismatch": {
"title": "",
"title": "Nom d'hôte incohérent",
"message": ""
},
"extract": {
@@ -936,6 +936,10 @@
"realm": {
"label": "Domaine",
"newLabel": "Nouveau domaine"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "En attente",
"processing": "Traitement en cours",
"partiallyAvailable": "Partiel",
"available": "Disponible"
"available": "Disponible",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "En attente",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+33 -6
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "תחום",
"newLabel": "תחום חדש"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -1758,7 +1762,7 @@
"label": "הצג מידע זיכרון"
},
"showUptime": {
"label": ""
"label": "הצג זמן פעולה"
},
"fileSystem": {
"label": "הצג מידע על מערכת הקבצים"
@@ -1767,7 +1771,7 @@
"label": "כרטיסיית ברירת מחדל"
},
"visibleClusterSections": {
"label": ""
"label": "מקטעי אשכול גלויים"
},
"sectionIndicatorRequirement": {
"label": "דרישת מציין מקטע"
@@ -1961,8 +1965,8 @@
"label": "השתמש במסנן כדי לחשב יחס"
},
"limitPerIntegration": {
"label": "",
"description": ""
"label": "הגבלת פריטים לכל אינטגרציה",
"description": "פעולה זו תגביל את מספר הפריטים המוצגים בכל אינטגרציה, לא באופן גלובלי"
}
},
"errors": {
@@ -2088,7 +2092,9 @@
"pending": "בהמתנה",
"processing": "מעבד",
"partiallyAvailable": "חלקי",
"available": "זמין"
"available": "זמין",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "ממתין",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "מאגרים",
"addRRepository": {
"addRepository": {
"label": "הוסף מאגר"
},
"importRepositories": {
"label": "ייבוא מדוקר",
"loading": "טוען תמונות דוקר",
"noImagesFound": "לא נמצאו תמונות דוקר",
"listFoundImages": "רשימת התמונות שנמצאו",
"listAlreadyImportedImages": "רשימת התמונות שכבר יובאו",
"allImagesAlreadyImported": "כל התמונות כבר יובאו",
"onlyAdminCanImport": "רק מנהלים יכולים לייבא מדוקר"
},
"provider": {
"label": "ספק"
},
@@ -2266,6 +2281,9 @@
"label": "אשר"
}
},
"importForm": {
"title": "ייבוא מדוקר"
},
"example": {
"label": "דוגמא"
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": "אחזור תקציר בקר הרשת נכשל"
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": "בקר רשת"
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": "מכולות דוקר"
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "",
"available": ""
"available": "",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "Feldolgozás",
"partiallyAvailable": "Részleges",
"available": "Elérhető"
"available": "Elérhető",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Parziale",
"available": "Disponibile"
"available": "Disponibile",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
File diff suppressed because it is too large. Load diff
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "",
"available": ""
"available": "",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Dalis",
"available": "Galima"
"available": "Galima",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Daļējs",
"available": "Pieejams"
"available": "Pieejams",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Realm",
"newLabel": "Nieuwe Realm"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "In afwachting",
"processing": "Verwerken",
"partiallyAvailable": "Gedeeltelijk",
"available": "Beschikbaar"
"available": "Beschikbaar",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "In afwachting",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": "Netwerkcontroller samenvatting ophalen mislukt"
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": "Netwerkcontroller"
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Område",
"newLabel": "Nytt område"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "Pågår",
"processing": "Prosesserer",
"partiallyAvailable": "Delvis",
"available": "Tilgjengelig"
"available": "Tilgjengelig",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "Venter",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "Oczekujący",
"processing": "Przetwarzanie",
"partiallyAvailable": "",
"available": "Dostępne"
"available": "Dostępne",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Parcial",
"available": "Disponível"
"available": "Disponível",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "",
"newLabel": ""
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "",
"processing": "",
"partiallyAvailable": "Parțial",
"available": "Disponibil"
"available": "Disponibil",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
+29 -2
View File
@@ -936,6 +936,10 @@
"realm": {
"label": "Область",
"newLabel": "Новая область"
},
"topic": {
"label": "",
"newLabel": ""
}
}
},
@@ -2088,7 +2092,9 @@
"pending": "В ожидании",
"processing": "Обработка",
"partiallyAvailable": "Частично доступно",
"available": "Доступно"
"available": "Доступно",
"blacklisted": "",
"deleted": ""
},
"status": {
"pending": "В ожидании",
@@ -2223,9 +2229,18 @@
},
"repositories": {
"label": "",
"addRRepository": {
"addRepository": {
"label": ""
},
"importRepositories": {
"label": "",
"loading": "",
"noImagesFound": "",
"listFoundImages": "",
"listAlreadyImportedImages": "",
"allImagesAlreadyImported": "",
"onlyAdminCanImport": ""
},
"provider": {
"label": ""
},
@@ -2266,6 +2281,9 @@
"label": ""
}
},
"importForm": {
"title": ""
},
"example": {
"label": ""
},
@@ -2345,6 +2363,12 @@
"error": {
"internalServerError": ""
}
},
"notifications": {
"name": "",
"description": "",
"noItems": "",
"option": {}
}
},
"widgetPreview": {
@@ -3110,6 +3134,9 @@
"networkController": {
"label": ""
},
"refreshNotifications": {
"label": ""
},
"dockerContainers": {
"label": ""
}
File diff suppressed because it is too large. Load diff
Loaded 100 of 124 files, more files were not shown because too many files have changed in this diff. Show more