Compare commits

...
1637 Commits
Author SHA1 Message Date
Thomas Camlong 15feac9aaa fix(old-import): add missing withBorder mapping for bookmarks widget
Restores typecheck after dev merge added the bookmarks withBorder option.
2026-06-04 23:14:38 +02:00
Thomas Camlong 5b1e3ce80e Merge branch 'dev' into feat/board-cache
Resolve _creator.tsx conflict: keep React cache via getBoardForParams.
2026-06-04 22:59:28 +02:00
Thomas 41fe5928f1 fix: add bookmark widget option to toggle card borders (#5854) 2026-06-04 11:07:31 +02:00
homarr-renovate[bot] 6eb59d6f53 chore(deps): update tiptap monorepo to v3.24.0 (#5858)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-04 08:58:12 +00:00
Afonso Jorge Ramos 2c6b7a818e fix(immich): respect app color scheme in server-stats widget (#5859) 2026-06-04 09:50:02 +02:00
Thomas fd10788838 fix(auth): relax password complexity requirements to suggestions-only (#5764) 2026-06-04 07:56:34 +02:00
Thomas fe4598f722 fix(docker): restore container selection toolbar broken by Mantine v9 (#5855) 2026-06-03 10:03:37 +02:00
Thomas a755692d81 fix(ui): restore pre-v9 light variant colors (#5856) 2026-06-03 06:49:38 +00:00
homarr-renovate[bot] 3ff0d72ba1 chore(deps): update dependency next-intl to v4.13.0 (#5853)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-03 04:21:57 +00:00
homarr-renovate[bot] a63a191203 chore(deps): update turbo monorepo to ^2.9.16 (#5851)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 23:54:09 +00:00
homarr-renovate[bot] 1be906a0cd chore(deps): update dependency isomorphic-dompurify to ^3.15.0 (#5852)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 21:55:53 +00:00
homarr-renovate[bot] 63d8fa8c26 chore(deps): update dependency @ctrl/qbittorrent to ^9.12.2 (#5834)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 18:47:29 +00:00
homarr-renovate[bot] b5dd6ae8ef chore(deps): update babel monorepo to >=7.29.7 (#5830)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 14:11:26 +00:00
homarr-renovate[bot] d540ad374a chore(deps): update pnpm to v10.34.0 (#5846)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 09:17:24 +00:00
homarr-renovate[bot] 6a971c1986 chore(deps): update mantine monorepo to ^9.2.2 (#5844)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-02 04:13:28 +00:00
homarr-crowdin[bot] d86fe3ddf0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-06-02 02:23:34 +00:00
homarr-renovate[bot] 06db8960a7 chore(deps): update turbo monorepo to ^2.9.15 (#5841)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-01 23:12:09 +00:00
homarr-renovate[bot] a5719acf34 chore(deps): update dependency tmp@<=0.2.3 to >=0.2.7 (#5848)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-01 21:06:21 +00:00
homarr-renovate[bot] d1d597c8e1 chore(deps): update testcontainers-node monorepo to ^12.0.1 (#5845)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-01 16:48:41 +00:00
homarr-renovate[bot] 657e42e4bb chore(deps): update dependency mysql2 to v3.22.4 (#5839)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-31 18:12:08 +00:00
homarr-renovate[bot] 256ebcb864 chore(deps): update dependency oxlint to ^1.67.0 (#5837)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-31 16:18:04 +00:00
homarr-renovate[bot] 72e86dee01 chore(deps): update dependency ioredis to v5.11.0 (#5838)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-31 14:53:18 +00:00
homarr-renovate[bot] b7910b16e0 chore(deps): update dependency oxfmt to ^0.52.0 (#5836)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-31 11:08:29 +00:00
homarr-renovate[bot] 5a83bb6e39 chore(deps): update dependency dayjs to ^1.11.21 (#5835)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-31 08:54:20 +00:00
homarr-renovate[bot] 433b66582d chore(deps): update dependency hono@<4.6.5 to >=4.12.23 (#5828)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-30 09:25:22 +00:00
homarr-renovate[bot] acbcb6818b chore(deps): update dependency react-error-boundary to ^6.1.2 (#5829)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-30 06:54:05 +00:00
homarr-crowdin[bot] 07d991a0a1 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-05-30 05:27:45 +00:00
homarr-renovate[bot] 92364e9574 chore(deps): update tanstack-query monorepo to ^5.100.14 (#5813)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-29 21:15:51 +00:00
ThomasandMeier Lukas 2991777b0a feat(users): rework general settings (#4915)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-29 21:22:55 +02:00
ThomasandMeier Lukas 6cc2ac56a9 fix: prevent GitHub releases check from blocking app on API failure (#5807)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-29 21:14:51 +02:00
homarr-update-contributors[bot] 92086e060f chore: update contributors (#5818) 2026-05-29 20:52:54 +02:00
homarr-renovate[bot] 2aa5ab95e6 chore(deps): update dependency trpc-to-openapi to ^3.3.0 (#5802)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-29 11:44:26 +00:00
Meier Lukas 650f761325 ci(format): fails to apply format due to conflict between --write and --check (#5815) 2026-05-29 11:07:48 +02:00
David be61602576 feat(auth): support custom token endpoint auth methods (#5806) 2026-05-29 10:51:28 +02:00
homarr-crowdin[bot] d01834d975 chore(lang): updated translations from crowdin (#5814) 2026-05-29 10:07:48 +02:00
Thomas Camlong 4a67bf0ef3 fix(ui): use imported theme instead of undefined createTheme
createTheme was called without being imported, causing a runtime
ReferenceError on every page load. Use the already-imported theme
object from @homarr/ui which contains the full Mantine configuration.
2026-05-28 15:54:37 +02:00
Thomas 4454e3fb7a fix: matine ui fixes for concistency (#5733) 2026-05-28 10:59:03 +02:00
Thomas c252b4f9ac feat(manage): unified management page layout (#5758) 2026-05-28 10:56:46 +02:00
homarr-renovate[bot] 4f2b3cf3ee chore(deps): update node.js to v24.16.0 (#5790)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-28 08:09:15 +00:00
Vivaan Dhawan b19549b601 fix: parse Speedtest Tracker created_at as local time (#5751) 2026-05-28 07:48:00 +00:00
homarr-renovate[bot] a0cc68798d chore(deps): update mantine monorepo to ^9.2.1 (#5801)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-28 03:50:55 +00:00
homarr-renovate[bot] 9a538941ee chore(deps): update dependency ws to ^8.21.0 (#5804)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 23:20:59 +00:00
homarr-renovate[bot] fc12500b3e chore(deps): update tanstack-query monorepo to ^5.100.13 (#5803)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 21:45:28 +00:00
homarr-renovate[bot] 64dccec362 chore(deps): update dependency oxfmt to ^0.51.0 (#5799)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 16:46:40 +00:00
homarr-renovate[bot]andThomas Camlong f7ea1b33a0 chore(deps): update mantine monorepo to v9 (#5411)
Co-authored-by: Thomas Camlong <thomas@ajnart.fr>
2026-05-27 17:29:52 +02:00
homarr-renovate[bot] fe3cebb902 chore(deps): update dependency hono@<4.6.5 to >=4.12.22 (#5797)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 13:06:33 +00:00
homarr-renovate[bot] ba1d213870 chore(deps): update dependency oxlint to ^1.66.0 (#5798)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 10:00:11 +00:00
Thomas 8f03a38de5 perf(boards): parallelize board page data fetching (#5736) 2026-05-27 07:44:37 +00:00
605af19cd8 refactor: replace ESLint + Prettier with OXC (oxlint + oxfmt) (#5741)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
Co-authored-by: Meierschlumpf <63781622+Meierschlumpf@users.noreply.github.com>
2026-05-27 09:37:44 +02:00
homarr-renovate[bot] b4921af60d chore(deps): update dependency sass to ^1.100.0 (#5795)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-27 05:24:00 +00:00
homarr-renovate[bot] 32385206ad chore(deps): update tiptap monorepo to v3.23.6 (#5793)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-26 21:03:11 +00:00
homarr-renovate[bot] 7e59ba3d5e chore(deps): update dependency vite@>=5.0.0 <=5.4.18 to >=8.0.14 (#5791)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-26 07:57:31 +00:00
Thomas Camlong 884fde245b fix(boards): replace global cache with React cache() per-request dedup
The unstable_cache approach bypassed throwIfActionForbiddenAsync and
dropped user-specific data (permissions, collapse states). Use React
cache() to deduplicate getInitialBoard within a single request instead,
preserving auth checks and all user data while reducing DB calls from
9 to 3 per board page load.
2026-05-25 11:01:07 +02:00
homarr-renovate[bot] 81caaa9d6c chore(deps): update vitest monorepo to ^4.1.7 (#5789)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-25 08:30:36 +00:00
homarr-renovate[bot] 09243148da chore(deps): update dependency ldapts to v8.1.8 (#5788)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-25 04:03:12 +00:00
homarr-update-contributors[bot] c7c57887cf chore: update contributors (#5771) 2026-05-24 22:44:36 +02:00
homarr-renovate[bot] 990a924631 chore(deps): update testcontainers-node monorepo to v12 (#5785) 2026-05-24 22:09:13 +02:00
homarr-renovate[bot] 83caf3ef4b chore(deps): update dependency @types/react to v19.2.15 (#5787)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-24 19:26:04 +00:00
homarr-renovate[bot] 991f07ae51 chore(deps): update tiptap monorepo to v3.23.5 (#5783)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-24 15:12:39 +00:00
homarr-renovate[bot] bc05128cd4 chore(deps): update dependency hono@<4.6.5 to >=4.12.21 (#5782)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-24 13:34:35 +00:00
homarr-renovate[bot] cf0fb8a879 chore(deps): update dependency hono@<4.6.5 to >=4.12.20 (#5780)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-24 11:25:35 +00:00
homarr-renovate[bot] 1f31735ee0 chore(deps): update dependency isomorphic-dompurify to ^3.14.0 (#5779)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-24 10:02:26 +00:00
homarr-crowdin[bot] ff974bf343 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-05-24 02:04:49 +00:00
homarr-renovate[bot] d42bbfce17 chore(deps): update tanstack-query monorepo to ^5.100.11 (#5777)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-23 20:13:50 +00:00
homarr-renovate[bot] 0130303e74 chore(deps): update dependency semver-parser to ^4.2.0 (#5766)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-23 15:08:34 +00:00
AustinandClaude Sonnet 4.6 66212b4e47 feat(board): persist category collapse state in localStorage for guests (#5714)
* feat(board): persist category collapse state in localStorage for guests

Authenticated users already had their collapse state saved server-side.
This extends the same behaviour to unauthenticated (guest) users by
reading/writing localStorage keyed by section ID.

On mount, if the user is a guest, the stored value is applied to the
disclosure. On toggle, guests write to localStorage instead of calling
the protected API mutation.

Closes #3355

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: set localStorage value as useDisclosure default instead of useEffect

Replaces the useEffect that read localStorage after mount with a direct
initial value computation passed to useDisclosure. Removes the effect,
the open/close destructuring, and the useEffect import.

Note: initialCollapsed is computed during render rather than post-mount,
which may cause a hydration mismatch on SSR if localStorage differs from
the server-provided section.collapsed. The typeof window guard handles
the SSR case.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 16:25:10 +02:00
Thomas f10bb3ae23 feat: auto-open widget settings on add with all integrations pre-selected (#5767)
When adding a widget from the "Choose item to add" modal, the widget
edit modal now opens immediately after placement, allowing the user to
configure options and integrations before the widget renders.

All available integrations for the widget are selected by default.
2026-05-23 16:19:36 +02:00
homarr-renovate[bot] af1991a4a3 chore(deps): update dependency pg to ^8.21.0 (#5776)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-23 13:35:11 +00:00
homarr-releases[bot] 9a9551130c chore: update bug report template (#5775)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-05-22 21:01:54 +00:00
Meier Lukas a93f03eae4 Merge branch 'main' into dev 2026-05-22 22:46:15 +02:00
Thomas df4b57bd41 perf(boards): remove loading overlay and show board immediately (#5735) 2026-05-22 07:06:48 +00:00
ThomasandManuel dade477b32 feat(seed): add demo mode with pre-seeded user (#5739)
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com>
2026-05-21 16:08:46 +02:00
Thomas 79f88dc3b8 ci: add --affected filtering and fix Turbo cache invalidation (#5740)
* ci: add --affected filtering and fix Turbo cache invalidation

- Remove globalDependencies **/.env which invalidated all caches on any .env change
- Move 40+ env vars from globalEnv to build-specific env (lint/format/typecheck don't need DB_URL etc.)
- Add per-task inputs with test file exclusions so test changes don't trigger build/typecheck
- Enable affectedUsingTaskInputs for task-level --affected detection
- Add --affected to all turbo commands in CI (lint, format, typecheck, build)
- Add fetch-depth: 0 for proper git history comparison
- Add Docker Buildx + GHA layer caching for E2E builds

* ci: add Cloudflare remote cache for Turborepo

Configure turborepo-remote-cache-cloudflare as the remote cache backend.
This commit can be reverted independently to disable remote caching.

* fix(ci): set TURBO_SCM_BASE for --affected to work in PRs

Turbo defaults to comparing against `main`, but PRs target `dev`.
Without explicit base/head refs, --affected falls back to running
all tasks. Use the PR base SHA for pull_requests, the before SHA
for pushes, and HEAD~1 as a last resort.

* perf(typecheck): exclude bundled .cjs/.css from tsc

websocket (835K lines) and tasks (755K lines) had bundled output
files being typechecked due to `include: ["."]` in their tsconfig.
Full typecheck drops from ~70s to ~26s.

* perf(turbo): scope topo task inputs to package.json only

The topo virtual task had no explicit inputs, defaulting to all files.
This caused any source change to cascade cache invalidation through
all dependent packages via ^topo. Since topo is only for dependency
ordering, its hash should only change when dependencies change.

* fix(turbo): disable remote cache signature verification

The cache lives on a private CF worker, signature verification
just adds noise without security benefit.

* fix(turbo): remove runtime env vars from build cache key

These env vars (DB_*, AUTH_*, DOCKER_*, etc.) are all runtime
configuration provided by users when running the Docker container.
They don't influence the build output since Next.js standalone mode
reads process.env at runtime and SKIP_ENV_VALIDATION=true skips
validation during build. Listing them in build.env caused unnecessary
cache busting in local dev.

Also restores coverage report comments per review feedback.

* fix(turbo): include test files in typecheck cache inputs

Test files must be typechecked — excluding them from typecheck inputs
caused changed tests to skip type validation.
2026-05-21 14:11:27 +02:00
homarr-renovate[bot] 4a12f8be61 chore(deps): update dependency hono@<4.6.5 to >=4.12.19 (#5762)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-21 11:33:05 +00:00
homarr-renovate[bot] 044ad9edf9 fix(deps): update dependency better-sqlite3 to ^12.10.0 (#5727) 2026-05-21 07:16:58 +02:00
homarr-renovate[bot] 57d2c6a7e1 chore(deps): update dependency eslint to ^10.4.0 (#5761)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-20 16:59:38 +00:00
homarr-renovate[bot]andMeier Lukas 46f6301fdd chore(deps): update turbo monorepo to ^2.9.14 (#5754)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-20 17:05:07 +02:00
homarr-renovate[bot]andMeier Lukas c3f300d87d chore(deps): update dependency turbo to v2.9.14 [security] (#5760)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-20 16:54:18 +02:00
homarr-renovate[bot] 1de558dd51 chore(deps): update dependency vite@>=5.0.0 <=5.4.18 to >=8.0.13 (#5749)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-20 13:46:33 +00:00
homarr-renovate[bot] 2711f3db13 chore(deps): update dependency turbo to v2.9.14 [security] (#5759)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-20 10:57:42 +00:00
homarr-renovate[bot] ff3933b335 chore(deps): update dependency rollup@>=4.0.0 <4.22.4 to >=4.60.4 (#5752)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-20 07:50:23 +00:00
Thomas fa737638a8 fix: exclude .env files from Docker build context (#5738) 2026-05-20 09:05:02 +02:00
homarr-renovate[bot] 97b7c417ab chore(deps): update dependency isomorphic-dompurify to ^3.13.0 (#5750)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-19 12:46:32 +00:00
homarr-renovate[bot] 58d8005d38 chore(deps): update dependency tsdav to ^2.2.2 (#5748)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-19 05:08:44 +00:00
homarr-renovate[bot] 507ac5181f chore(deps): update dependency @playwright/test to ^1.60.0 (#5746)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-19 00:14:25 +00:00
homarr-renovate[bot] b0cdb81533 chore(deps): update tiptap monorepo to v3.23.4 (#5743)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-18 22:10:37 +00:00
homarr-renovate[bot] fc0367a32f chore(deps): update dependency hono@<4.6.5 to >=4.12.18 (#5745)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-18 20:31:45 +00:00
Releases Homarr 48ef8eb6c0 chore(release): 1.61.1 [skip ci] 2026-05-18 19:45:44 +00:00
Meier Lukas 7cd30b640c fix(docker): improve icon matching (#5693)
* fix(docker): improve icon matching

* fix: unused import
2026-05-18 21:45:33 +02:00
Austin e9142c0dbc fix(downloads-widget): increase name column default width ratio 2026-05-18 21:44:47 +02:00
Meier LukasandThomas a9855fe8d3 chore(deps): remove deprecated million lint (#5671)
* chore(deps): remove deprecated million lint

* fix: install now missing playwright dependency

* fix: broken lockfile

* fix: broken lockfile

---------

Co-authored-by: Thomas <thomas@ajnart.fr>
2026-05-18 21:42:02 +02:00
StrandedTurtleandMeier Lukas 7a1272146c fix(tracearr): support absolute image urls (#5654)
* Update base URL handling for tracearr integration

* fix: remove unnecessary prefix from bcrypt hashing

* refactor: add is-absolute-url check

* test: add unit tests

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-18 21:39:01 +02:00
homarr-renovate[bot] db61b6f390 chore(deps): update dependency next-intl to v4.12.0 (#5734)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-18 19:02:14 +00:00
homarr-renovate[bot] 887c294191 chore(deps): update dependency axios@>=1.0.0 <1.8.2 to >=1.16.1 (#5742)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-18 16:31:32 +00:00
Thomas Camlong 689da2fb91 fix: format files and fix revalidateTag signature for Next 16
- Run prettier on all modified files
- Add required cache profile arg to revalidateTag
- Suppress require-await for server action (must be async)
2026-05-18 15:01:01 +02:00
Thomas Camlong 22af9e2c3e feat(boards): cache named board data with tag-based invalidation
Named boards are now served from Next.js unstable_cache (1h TTL,
tag `board-{name}`). A new `getSharedBoardWithWhereAsync` helper
fetches the board without per-user data so the result is safe to
share across requests.

Cache is busted via `invalidateBoardCacheAsync` (revalidateTag +
revalidatePath) from board save, layout save, and partial settings
mutations.
2026-05-18 14:51:44 +02:00
Thomas Camlong 2c388bd449 perf(boards): parallelize board page data fetching
Board fetch + auth() now run concurrently via Promise.all instead of
sequentially. Widget prefetches for all kinds also run in parallel
alongside integration permission loading.
2026-05-18 14:49:07 +02:00
homarr-renovate[bot] 2f2a6291a2 chore(deps): update dependency linkifyjs@<4.3.2 to >=4.3.3 (#5732)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-18 04:30:21 +00:00
homarr-renovate[bot] 1b3353118d chore(deps): update tiptap monorepo to v3.23.2 (#5731)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-17 18:06:09 +00:00
homarr-renovate[bot] e03f56ac31 chore(deps): update dependency ws to ^8.20.1 (#5729)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-17 16:10:10 +00:00
homarr-renovate[bot] d571a7f75e chore(deps): update dependency swagger-ui-react to ^5.32.6 (#5726)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-17 11:13:32 +00:00
homarr-renovate[bot] e3b765b9bd chore(deps): update dependency fast-xml-parser to ^5.8.0 (#5725)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-17 06:51:41 +00:00
homarr-renovate[bot] 4da313826d chore(deps): update dependency @types/node to ^24.12.4 (#5724)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 22:53:08 +00:00
homarr-renovate[bot] 948ed7a7fa chore(deps): update vitest monorepo to ^4.1.6 (#5723)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 16:08:51 +00:00
homarr-renovate[bot] f7fc64ebc4 chore(deps): update tanstack-query monorepo to ^5.100.10 (#5722)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 15:04:21 +00:00
homarr-renovate[bot] b7f51d6f5c chore(deps): update dependency next-intl to v4.11.2 (#5721)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 11:58:47 +00:00
homarr-renovate[bot] e185eeb6d7 chore(deps): update dependency yaml to v2.9.0 (#5720)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 10:25:24 +00:00
homarr-renovate[bot] 90d703b870 chore(deps): update dependency vite@>=5.0.0 <=5.4.18 to >=8.0.12 (#5719)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-16 08:54:57 +00:00
75640f21e0 chore: merge current beta into dev (#5718)
* ci: support releases on next branch (#5599)

Co-authored-by: Copilot <copilot@github.com>

* perf(memory): combine 3 node processes into one (#5600)

Co-authored-by: Copilot <copilot@github.com>

* ci: add beta release workflow (#5601)

Co-authored-by: Copilot <copilot@github.com>

* chore(release): 1.60.1-beta.1 [skip ci]

* chore: retrigger release v1.60.1-beta.1

* chore(release): 1.60.1-beta.1 [skip ci]

* ci: disable package-manager cache

* chore(release): 1.60.1-beta.1 [skip ci]

* perf: (next branch) reduce idle memory on startup (#5637)

* chore(release): 1.60.1-beta.2 [skip ci]

* chore(release): 1.61.1-beta.1 [skip ci]

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: homarr-releases[bot] <175486441+homarr-releases[bot]@users.noreply.github.com>
Co-authored-by: Thomas <thomas@ajnart.fr>
2026-05-15 19:35:55 +02:00
Meier Lukas 4aa43ae27a Merge branch 'dev' into beta [skip-ci] 2026-05-15 19:25:38 +02:00
homarr-update-contributors[bot] 6b67671e29 chore: update contributors (#5717)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-05-15 13:59:07 +00:00
homarr-renovate[bot] 220f361b69 chore(deps): update turbo monorepo to ^2.9.12 (#5712)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-14 10:24:19 +00:00
homarr-renovate[bot] a1d6457ced chore(deps): update semantic-release monorepo (#5709)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-14 07:50:20 +00:00
homarr-renovate[bot] f7ade3c676 chore(deps): update dependency @tabler/icons-react to ^3.44.0 (#5711)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-14 04:15:07 +00:00
homarr-renovate[bot] f656d9ca2d chore(deps): update turbo monorepo to ^2.9.11 (#5710)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-14 00:07:48 +00:00
homarr-renovate[bot] cefd90385d chore(deps): update dependency next-intl to v4.11.1 (#5707)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-13 15:51:14 +00:00
homarr-renovate[bot] e5021b1d78 chore(deps): update tiptap monorepo to v3.23.1 (#5708)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-13 12:16:00 +00:00
homarr-renovate[bot] f0bd5132a3 chore(deps): update dependency brace-expansion@>=2.0.0 <=2.0.1 to >=5.0.6 (#5706)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-13 09:52:26 +00:00
homarr-renovate[bot] d356fa41a0 chore(deps): update dependency brace-expansion@>=1.0.0 <=1.1.11 to >=5.0.6 (#5705)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-13 06:55:25 +00:00
homarr-renovate[bot] a9e9ac1cfa chore(deps): update dependency @types/node to ^24.12.3 (#5704)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-12 23:09:48 +00:00
homarr-renovate[bot] 1b3e720701 chore(deps): update dependency vite@>=5.0.0 <=5.4.18 to >=8.0.11 (#5701)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-12 21:28:14 +00:00
homarr-renovate[bot] 2461363d4f chore(deps): update dependency @next/eslint-plugin-next to v16.2.6 (#5703)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-12 20:02:16 +00:00
homarr-renovate[bot] f29e74b6f4 chore(deps): update turbo monorepo to ^2.9.10 (#5702)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-12 17:19:38 +00:00
homarr-renovate[bot] 89dfe82fe9 chore(deps): update dependency @tabler/icons-react to ^3.43.0 (#5700)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 23:02:13 +00:00
homarr-renovate[bot] 48a0f75c31 chore(deps): update react monorepo to v19.2.6 (#5698)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 21:25:44 +00:00
homarr-renovate[bot] 37103cf414 chore(deps): update dependency next to v16.2.6 [security] (#5699)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 19:56:51 +00:00
homarr-renovate[bot] dec34916b2 chore(deps): update nextjs monorepo to v16.2.5 (#5697)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 21:03:28 +02:00
homarr-renovate[bot] 64a4c196c0 chore(deps): update dependency tsdav to ^2.2.1 (#5696)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 17:33:08 +00:00
homarr-renovate[bot] 41d596a1c9 chore(deps): update pnpm to v10.33.4 (#5695)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 15:01:42 +00:00
homarr-renovate[bot] bac0bc7b84 chore(deps): update dependency jotai to ^2.20.0 (#5694)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-11 14:00:57 +00:00
homarr-renovate[bot] 1ac6774821 chore(deps): update pnpm to v10.33.3 (#5689)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-10 15:00:34 +00:00
homarr-renovate[bot] 7adb21ca59 chore(deps): update dependency @tabler/icons-react to ^3.42.0 (#5691)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-10 13:27:39 +00:00
homarr-renovate[bot] 4daf2729e5 chore(deps): update dependency rollup@>=4.0.0 <4.22.4 to >=4.60.3 (#5688)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-10 11:59:24 +00:00
homarr-renovate[bot] 1942c32128 chore(deps): update turbo monorepo to ^2.9.9 (#5690)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-10 10:24:31 +00:00
homarr-renovate[bot] b061a59433 chore(deps): update dependency fast-xml-parser to ^5.7.3 (#5692)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-10 09:01:25 +00:00
Meier Lukas ab867a9e50 chore: remove temporary ts-expect-error 2026-05-10 10:40:29 +02:00
homarr-crowdin[bot] 968338aa97 chore(lang): updated translations from crowdin (#5685)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-05-10 10:38:59 +02:00
Releases Homarr b34102a973 chore(release): 1.61.1-beta.1 [skip ci] 2026-05-08 21:55:01 +00:00
homarr-releases[bot] 378d1e1f1f chore(release): release v1.61.1-beta 2026-05-08 21:53:57 +00:00
Meier Lukas 3a8abe4415 chore(docs): update sitemap 2026-05-08 23:48:31 +02:00
Meier Lukas 6feb37dfd4 Merge branch 'main' into next 2026-05-08 23:46:21 +02:00
Meier Lukas 8042a18dc1 Merge branch 'main' into dev 2026-05-08 22:20:35 +02:00
homarr-releases[bot] c78bf05fc3 chore: update bug report template (#5682)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-05-08 20:17:34 +00:00
Releases Homarr 4635c51fe1 chore(release): 1.61.0 [skip ci] 2026-05-08 20:06:52 +00:00
homarr-releases[bot] 5cc0f97aa2 chore(release): automatic release v1.61.0 2026-05-08 20:05:49 +00:00
homarr-renovate[bot] b581f9b11a chore(deps): update dependency @extractus/feed-extractor to v7.2.1 (#5670)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-08 19:26:12 +00:00
Meier Lukas 756e8d1724 feat(qbittorrent): add api-key support (#5677) 2026-05-08 20:08:37 +02:00
homarr-renovate[bot] 7c64de5cbc chore(deps): update turbo monorepo to ^2.9.8 (#5669)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-08 17:25:39 +00:00
Ashton BattyandMeier Lukas 56af6bcaf0 feat(docker): Podman compatibility, multi-socket support, per-host error isolation (#5425)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-08 17:31:56 +02:00
homarr-renovate[bot] 84b269a80d chore(deps): update tanstack-query monorepo to ^5.100.9 (#5678)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-08 15:30:26 +00:00
Borislaw SotnikowandMeier Lukas 4d30a2e8c4 feat(installations): support secrets file for all environment variables (#5125)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-08 17:11:08 +02:00
Meier Lukas 2d15b3d407 chore(deps): update dependency zod to v4.4.3 (#5675) 2026-05-08 17:10:22 +02:00
Manuel 44a2973b1a revert(deps): downgrade pnpm to v10 (#5673) 2026-05-08 16:03:12 +02:00
Manuel 00a055283e fix(qbittorrent): support version 5.2 (#5672) 2026-05-08 15:44:04 +02:00
Manuel a474dcd961 chore: exclude renovate managed files from codeowners (#5676) 2026-05-08 15:37:41 +02:00
homarr-update-contributors[bot] 69fe180968 chore: update contributors (#5674)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-05-08 13:25:53 +00:00
036f6aa185 chore(deps): update dependency recharts to v3 (#4302)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-08 15:02:52 +02:00
homarr-crowdin[bot]andMeier Lukas 12a1bd7e2e chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-08 13:54:36 +02:00
homarr-renovate[bot] c4ec45a9d0 chore(deps): update pnpm to v11.0.4 (#5668)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-08 03:04:44 +00:00
homarr-renovate[bot]andMeier Lukas b8e0123893 chore(deps): update pnpm to v11 (#5660)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-07 22:46:55 +02:00
homarr-renovate[bot] df953771a7 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.16.0 (#5665)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-07 20:22:00 +00:00
44bd16d677 fix(calendar): keep working integrations when one fails (#5629)
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-07 22:02:21 +02:00
sharpsalatandsharpsalat 277a509f49 feat: add pwa support (#5530)
* feat: add pwa support

* fix: deepsource warning

* fix: format warning

* fix: lint error

---------

Co-authored-by: sharpsalat <deniska.xrenov23@yandex.ru>
2026-05-07 21:53:17 +02:00
homarr-crowdin[bot]andMeier Lukas a9ad991892 chore(lang): updated translations from crowdin (#5623)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-07 21:04:10 +02:00
Meier Lukas 3183914a15 fix(apps): creation on the fly broken (#5605) 2026-05-07 20:59:12 +02:00
Meier Lukas 62be81ea60 fix(lang): portuguese is linked to brazilian portuguese on crowdin (#5622) 2026-05-07 20:54:11 +02:00
Meier Lukas ffc292b22a ci: increase timeout of asset extraction due job cancellation
https://github.com/homarr-labs/homarr/actions/runs/25509168979/attempts/1
2026-05-07 18:48:13 +02:00
Releases Homarr c83fdb2a6e chore(release): 1.60.1-beta.2 [skip ci] 2026-05-07 16:39:41 +00:00
ThomasandMeier Lukas b5c316b825 feat(spotlight): rework !bang search UX (#4813)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-07 18:38:40 +02:00
homarr-releases[bot] 81fdd90e7a chore(release): release v1.60.1-beta 2026-05-07 16:38:37 +00:00
KyleandThomas 831b6221fd feat: add auto/system appearance mode + fix dark mode system resources charts (#5492)
Co-authored-by: Thomas <thomas@ajnart.fr>
2026-05-07 16:28:37 +00:00
homarr-update-contributors[bot] 37edfb2de2 chore: update integrations list readme (#5662)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-05-07 16:11:16 +00:00
43cc68bdd4 feat: add Umami Analytics integration and widget (#5362)
Co-authored-by: Josh G <febrile42@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
Co-authored-by: Thomas <thomas@ajnart.fr>
2026-05-07 17:50:58 +02:00
Meier Lukas 0937555d49 feat(entity-state): add data attributes for custom-css styling (#5655) 2026-05-07 16:54:57 +02:00
homarr-renovate[bot] 663fe980bf chore(deps): update dependency yaml to v2.8.4 (#5659)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-07 09:39:58 +00:00
homarr-renovate[bot] 9e2c487389 chore(deps): update dependency isomorphic-dompurify to ^3.12.0 (#5658)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-07 06:19:31 +00:00
homarr-renovate[bot] 698e551790 chore(deps): update tanstack-query monorepo to ^5.100.8 (#5657)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-07 06:18:42 +00:00
homarr-renovate[bot] 71e4526ad5 chore(deps): update dependency zod to ^4.4.2 (#5656)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-06 22:04:29 +00:00
Thomas 5ee84f8cf4 perf: (next branch) reduce idle memory on startup (#5637) 2026-05-06 21:39:26 +00:00
Meier Lukas b07a4a0f3e fix(update-checker): hide prereleases on non-prerelease versions (#5645) 2026-05-06 21:23:14 +02:00
homarr-renovate[bot] 62a476a949 chore(deps): update dependency eslint to ^10.3.0 (#5652)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-06 16:35:25 +00:00
homarr-renovate[bot] 6671ac48f9 chore(deps): update tanstack-query monorepo to ^5.100.7 (#5651)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-06 09:30:45 +00:00
homarr-renovate[bot] 3c7a7615ba chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.11 (#5648)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-06 06:13:36 +00:00
homarr-renovate[bot] 2f301bb56a chore(deps): update turbo monorepo to ^2.9.7 (#5649)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-06 03:01:59 +00:00
homarr-renovate[bot] e06abbc176 chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.10 (#5646)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-05 21:10:38 +00:00
homarr-renovate[bot] 04daeba089 chore(deps): update dependency jsdom to ^29.1.1 (#5643)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-05 10:55:08 +00:00
homarr-renovate[bot] 7c83d2cb6e chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.16 (#5642)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-05 10:54:29 +00:00
homarr-renovate[bot] 2829d145af chore(deps): update dependency zod to ^4.4.1 (#5641)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-05 02:56:52 +00:00
homarr-renovate[bot] 44bf36fff9 chore(deps): update dependency timezones-ical-library to ^2.2.0 (#5640)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-05 00:01:35 +00:00
homarr-renovate[bot] acd11c3fc1 chore(deps): update dependency isomorphic-dompurify to ^3.11.0 (#5638)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-04 16:53:37 +00:00
homarr-renovate[bot] b9c701a71b chore(deps): update dependency next-intl to v4.11.0 (#5635)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 19:08:04 +00:00
homarr-renovate[bot] e52ecd64ee chore(deps): update dependency next-intl to v4.10.1 (#5632)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 16:59:56 +00:00
homarr-renovate[bot] af77f729ec chore(deps): update tanstack-query monorepo to ^5.100.6 (#5633)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 16:59:30 +00:00
homarr-renovate[bot] 7c39e4de13 chore(deps): update dependency next-intl to v4.10.0 (#5631)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 15:56:23 +00:00
homarr-renovate[bot] 3e918e5d3d chore(deps): update dependency tsdav to ^2.2.0 (#5627)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 14:57:50 +00:00
homarr-renovate[bot] 9cd45f7832 chore(deps): update trpc monorepo to ^11.17.0 (#5630)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 13:19:32 +00:00
homarr-renovate[bot] 90ca3770a1 chore(deps): update tiptap monorepo to v3.22.5 (#5628)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-03 10:12:22 +00:00
homarr-renovate[bot]andMeier Lukas a183339063 chore(deps): update dependency eslint to v10 (#5038)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-02 21:41:16 +02:00
homarr-renovate[bot] 0a4e4c3b70 chore(deps): update dependency next-intl to v4.9.2 (#5625)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-02 19:07:29 +00:00
homarr-renovate[bot] b52e664d0f chore(deps): update dependency swagger-ui-react to ^5.32.5 (#5621)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-02 13:21:15 +00:00
homarr-renovate[bot] 9f4634a95d chore(deps): update dependency mysql2 to v3.22.3 (#5619)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-02 11:25:52 +00:00
homarr-renovate[bot] a6f6c2e945 chore(deps): update dependency jsdom to ^29.1.0 (#5620)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-05-02 02:53:35 +00:00
homarr-crowdin[bot]andMeier Lukas b6d23e7546 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-05-02 01:32:16 +00:00
Meier Lukas b0f2c94674 chore: update bug report template 2026-05-01 22:51:17 +02:00
Releases Homarr 80d18bb10d chore(release): 1.60.1-beta.1 [skip ci] 2026-05-01 20:44:34 +00:00
homarr-releases[bot] 2bb0f61da7 chore(release): release v1.60.1-beta 2026-05-01 20:43:32 +00:00
Meier Lukas 24386656fd Merge branch 'next' of https://github.com/homarr-labs/homarr into next 2026-05-01 22:42:07 +02:00
Meier Lukas 453360fe61 ci: disable package-manager cache 2026-05-01 22:42:02 +02:00
Releases Homarr beac1ed780 chore(release): 1.60.1-beta.1 [skip ci] 2026-05-01 20:41:02 +00:00
homarr-releases[bot] aa1b3810f1 chore(release): release v1.60.1-beta 2026-05-01 20:40:05 +00:00
Meier Lukas ce3c1b6cc1 chore: retrigger release v1.60.1-beta.1 2026-05-01 22:38:50 +02:00
Releases Homarr 3f6b830f9b chore(release): 1.60.1-beta.1 [skip ci] 2026-05-01 20:36:08 +00:00
homarr-releases[bot] f0cb79799a chore(release): release v1.60.1-beta 2026-05-01 20:35:08 +00:00
Meier Lukas 7561462594 Merge branch 'main' into next 2026-05-01 22:30:33 +02:00
homarr-releases[bot] 9cf0070442 chore: update bug report template (#5612)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-05-01 20:23:03 +00:00
Meier LukasandCopilot 647afbe2cb ci: add beta release workflow (#5601)
Co-authored-by: Copilot <copilot@github.com>
2026-05-01 22:20:58 +02:00
Meier LukasandCopilot bfa8566284 ci: add beta release workflow (#5601)
Co-authored-by: Copilot <copilot@github.com>
2026-05-01 22:18:45 +02:00
Releases Homarr e31555776e chore(release): 1.60.0 [skip ci] 2026-05-01 20:12:31 +00:00
homarr-releases[bot] 3c88ae9023 chore(release): automatic release v1.60.0 2026-05-01 20:11:31 +00:00
Meier Lukas 5200c17baf chore: retrigger release v1.60.0 2026-05-01 22:10:44 +02:00
Releases Homarr 97311b338a chore(release): 1.60.0 [skip ci] 2026-05-01 20:04:34 +00:00
homarr-releases[bot] a6b7e9df93 chore(release): automatic release v1.60.0 2026-05-01 20:03:37 +00:00
Meier LukasandCopilot a1aa5505a3 perf(memory): combine 3 node processes into one (#5600)
Co-authored-by: Copilot <copilot@github.com>
2026-05-01 16:35:11 +02:00
homarr-update-contributors[bot] e9289bd174 chore: update contributors (#5609)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-05-01 14:25:59 +00:00
Meier Lukas e8edc203b6 fix: migrate from node-cron to croner (#5407) 2026-05-01 16:21:38 +02:00
Meier Lukas ed6680ba6a perf(icons): updater takes 10 seconds to run with high cpu usage (#5608) 2026-05-01 16:21:22 +02:00
homarr-renovate[bot] 16c6929396 chore(deps): update tanstack-query monorepo to ^5.100.5 (#5606)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-30 19:30:50 +00:00
homarr-renovate[bot] dba9efc726 chore(deps): update tanstack-query monorepo to ^5.100.4 (#5603)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-30 17:53:27 +00:00
Meier Lukas ef012981db chore: replace app-id with client-id for actions/create-github-app-token due to deprecation (#5602) 2026-04-30 18:28:55 +02:00
Meier LukasandCopilot e77b9bb3d2 ci: support releases on next branch (#5599)
Co-authored-by: Copilot <copilot@github.com>
2026-04-30 18:28:32 +02:00
Meier Lukas c24f4954ea ci: fix minor issues (#5604) 2026-04-30 18:27:57 +02:00
Meier Lukas a268fd5a26 chore(issue-template): fix issues for integration and widget template 2026-04-30 17:49:24 +02:00
homarr-renovate[bot] 8094458b10 chore(deps): update dependency fast-xml-parser to ^5.7.2 (#5591)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-30 12:21:17 +00:00
homarr-crowdin[bot]andMeier Lukas b88a1a771e chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-30 12:20:44 +00:00
homarr-renovate[bot] b94d2f15bc chore(deps): update tanstack-query monorepo to ^5.100.2 (#5594)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-30 12:16:25 +00:00
Meier LukasandCopilot ce8e330c82 fix(openapi): openapi document empty (#5579)
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 23:29:42 +02:00
homarr-renovate[bot] 0e7b9fa2d4 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.15 (#5589)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-29 19:33:19 +00:00
Meier Lukas 42b108964b ci: remove turbo cache (#5590) 2026-04-29 20:54:09 +02:00
homarr-renovate[bot] ff630ea647 chore(deps): update dependency dockerode to v5 (#5588)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-29 15:43:59 +02:00
homarr-renovate[bot] 45e5827872 chore(deps): update tanstack-query monorepo to ^5.100.1 (#5586)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-28 20:22:56 +00:00
homarr-renovate[bot] b20e8a1cd1 chore(deps): update pnpm to v10.33.2 (#5585)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-28 17:59:14 +00:00
homarr-renovate[bot] 712da837b1 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.10 (#5583)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-28 06:35:34 +00:00
homarr-crowdin[bot] 424999e13a chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-28 01:49:29 +00:00
homarr-renovate[bot] f8ce537dce chore(deps): update dependency fastify to ^5.8.5 (#5580)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-27 21:10:03 +00:00
Meier Lukas 3d202d409f feat(about): add opencollective contributors (#5481) 2026-04-27 22:35:42 +02:00
homarr-renovate[bot] 1c8fc989da chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.15.2 (#5575)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-27 19:53:12 +00:00
homarr-renovate[bot] a410ee7caf chore(deps): update tanstack-query monorepo to ^5.99.2 (#5563)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-27 19:52:57 +00:00
homarr-renovate[bot] 03f80e1ee2 chore(deps): update dependency isomorphic-dompurify to ^3.10.0 (#5578)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-27 19:52:11 +00:00
homarr-crowdin[bot] c04baab4e9 chore(lang): updated translations from crowdin (#5572)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-27 21:50:03 +02:00
homarr-renovate[bot] feb84c9a62 chore(deps): update pnpm to v10.33.1 (#5576)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-27 11:12:07 +00:00
homarr-renovate[bot] e097aa3ee9 chore(deps): update vitest monorepo to ^4.1.5 (#5574)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-26 17:45:38 +00:00
homarr-update-contributors[bot] a8bf9219a2 chore: update contributors (#5564)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-26 19:22:10 +02:00
homarr-renovate[bot] 9199a2b221 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.9 (#5569)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-26 05:46:37 +00:00
homarr-renovate[bot] fda64b36ae chore(deps): update dependency mysql2 to v3.22.2 (#5573)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-26 02:56:09 +00:00
homarr-releases[bot] ad19e4c954 chore: update bug report template (#5568)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-25 16:58:24 +00:00
Releases Homarr d91ca61ff0 chore(release): 1.59.3 [skip ci] 2026-04-24 21:11:59 +00:00
homarr-releases[bot] 05c260667a chore(release): automatic release v1.59.3 2026-04-24 21:11:01 +00:00
Meier Lukas fb5b882e28 chore: retrigger release v1.59.3 2026-04-24 23:09:56 +02:00
Releases Homarr c5e00c2543 chore(release): 1.59.3 [skip ci] 2026-04-24 19:52:38 +00:00
homarr-releases[bot] 33964fbfe8 chore(release): automatic release v1.59.3 2026-04-24 19:51:32 +00:00
homarr-renovate[bot] abd42de067 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.15.1 (#5565)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-24 18:00:22 +00:00
homarr-renovate[bot] 7852f1d987 fix(deps): update dependency better-sqlite3 to ^12.9.0 (#5531)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-24 15:38:24 +02:00
homarr-renovate[bot] e4dab4d1b4 chore(deps): update tanstack-query monorepo to ^5.99.1 (#5559)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-24 05:43:00 +00:00
homarr-renovate[bot] 346f57f3fa chore(deps): update dependency fast-xml-parser to ^5.7.1 (#5556)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-24 05:41:52 +00:00
homarr-renovate[bot] a4c8d67e92 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.60.2 (#5558)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-24 02:49:24 +00:00
homarr-crowdin[bot] e53cf65054 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-24 01:26:52 +00:00
homarr-renovate[bot] 320e88992a chore(deps): update tiptap monorepo to v3.22.4 (#5557)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-23 13:52:25 +00:00
homarr-renovate[bot] 678e151681 chore(deps): update dependency fast-xml-parser to ^5.7.0 (#5555)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-22 15:21:42 +00:00
homarr-renovate[bot] 5d1517bdf2 chore(deps): update nextjs monorepo to v16.2.4 (#5552)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-22 05:33:24 +00:00
homarr-renovate[bot] dc7b1b005e chore(deps): update dependency mysql2 to v3.22.1 (#5554)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-22 02:46:06 +00:00
homarr-crowdin[bot] 9bbc8b4db9 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-22 01:22:33 +00:00
homarr-renovate[bot] 0a32fe0967 chore(deps): update node.js (#5546)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-21 19:21:25 +00:00
homarr-renovate[bot] 0d0dc6aaa0 chore(deps): update dependency isomorphic-dompurify to ^3.9.0 (#5550)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 16:18:07 +00:00
homarr-renovate[bot] bd1a15af22 chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.9 (#5551)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 14:59:22 +00:00
homarr-renovate[bot] 841fdbdd78 chore(deps): update dependency swagger-ui-react to ^5.32.4 (#5549)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 10:56:48 +00:00
homarr-renovate[bot] de595b0623 chore(deps): update dependency prettier to ^3.8.3 (#5545)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 08:16:36 +00:00
homarr-renovate[bot] 9c52a33f3a chore(deps): update dependency fast-xml-parser to ^5.6.0 (#5548)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 05:50:18 +00:00
homarr-renovate[bot] 3b14cb0783 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.14 [security] (#5524)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-20 02:49:29 +00:00
homarr-renovate[bot] 4a2b221c25 chore(deps): update dependency next-auth to v5.0.0-beta.31 (#5543)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-19 22:44:37 +00:00
homarr-renovate[bot] 3bfa9d669e chore(deps): update dependency typescript-eslint to ^8.58.2 (#5537)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-19 20:49:49 +00:00
homarr-renovate[bot] 8fdfde4f2f chore(deps): update dependency swagger-ui-react to ^5.32.3 (#5539)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-19 20:47:33 +00:00
homarr-renovate[bot] 7873c175b2 chore(deps): update dependency @auth/drizzle-adapter to ^1.11.2 (#5542)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-19 20:47:06 +00:00
homarr-renovate[bot] e583328e87 chore(deps): update dependency @auth/core to ^0.41.2 (#5541)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-19 19:49:34 +00:00
homarr-renovate[bot] 4d024a2a02 chore(deps): update dependency fast-xml-parser to ^5.5.12 (#5534)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-18 16:49:40 +00:00
homarr-renovate[bot] 051e0c3dc0 chore(deps): update dependency @immich/sdk to ^2.7.5 (#5535)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-18 15:45:46 +00:00
homarr-renovate[bot] 5114bba2b1 chore(deps): update dependency dotenv to ^17.4.2 (#5529)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-17 20:52:17 +00:00
homarr-releases[bot] ec986147a2 chore: update bug report template (#5533)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-17 20:09:25 +00:00
Releases Homarr cf2e18d248 chore(release): 1.59.2 [skip ci] 2026-04-17 19:58:17 +00:00
homarr-releases[bot] 1efe97d8e6 chore(release): automatic release v1.59.2 2026-04-17 19:57:21 +00:00
homarr-update-contributors[bot] 469d7bf6fb chore: update contributors (#5528)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-17 13:11:09 +00:00
homarr-renovate[bot] 0082984f9c chore(deps): update tanstack-query monorepo to ^5.99.0 (#5527)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-17 10:39:11 +00:00
2e789795ed fix: preserve all-day event dates in Nextcloud calendar integration (#5523)
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-17 10:53:43 +02:00
homarr-renovate[bot] 88591d973f chore(deps): update pnpm/action-setup action to v6 (#5521)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-17 10:17:39 +02:00
homarr-crowdin[bot] 6218a401de chore(lang): updated translations from crowdin (#5522)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-17 10:12:57 +02:00
homarr-renovate[bot] a787e3deca chore(deps): update tanstack-query monorepo to ^5.98.0 (#5525)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-16 17:22:33 +00:00
homarr-renovate[bot] d195d260aa chore(deps): update dependency prettier to ^3.8.2 (#5515)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-15 20:09:26 +00:00
homarr-renovate[bot] d0973a9290 chore(deps): update dependency @immich/sdk to ^2.7.4 (#5520)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-15 18:15:03 +00:00
homarr-renovate[bot] 6866735cc1 chore(deps): update dependency mysql2 to v3.22.0 (#5519)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-15 14:55:24 +00:00
homarr-renovate[bot] 481999af5c chore(deps): update turbo monorepo to ^2.9.6 (#5518)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-15 14:54:53 +00:00
homarr-renovate[bot] 6a45645354 chore(deps): update dependency mysql2 to v3.21.1 (#5514)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-15 02:44:06 +00:00
homarr-crowdin[bot] f22a763d96 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-15 01:21:25 +00:00
homarr-renovate[bot] 7dd579d3c0 chore(deps): update dependency @immich/sdk to ^2.7.3 (#5511)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-14 19:23:50 +00:00
homarr-renovate[bot] 13ea6d08a0 chore(deps): update tanstack-query monorepo to ^5.97.0 (#5509)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-14 09:28:43 +00:00
homarr-renovate[bot] 8c1e5c8947 chore(deps): update dependency mysql2 to v3.21.0 (#5508)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-14 09:27:46 +00:00
homarr-renovate[bot] b397ab72c9 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.8 (#5506)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-14 09:27:27 +00:00
homarr-renovate[bot] 792a8bd11e chore(deps): update vitest monorepo to ^4.1.4 (#5507)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-14 07:53:42 +00:00
homarr-crowdin[bot] f680fd170f chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-14 01:24:45 +00:00
homarr-renovate[bot] 916a261467 chore(deps): update dependency @next/eslint-plugin-next to v16.2.3 (#5501)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 21:58:44 +00:00
Meier Lukas 72d636c0f0 refactor(deps): migrate to pnpm catalog (#5464) 2026-04-13 22:45:24 +02:00
homarr-renovate[bot] c8a61a9df3 fix(deps): update react monorepo to v19.2.5 (#5502)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 20:14:59 +00:00
homarr-renovate[bot] 0731b7c5ef fix(deps): update dependency isomorphic-dompurify to ^3.8.0 (#5503)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 20:14:28 +00:00
homarr-renovate[bot] f2437c4731 fix(deps): update dependency next-intl to v4.9.1 [security] (#5470)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 18:04:13 +00:00
homarr-renovate[bot] 652ed1a5ed fix(deps): update dependency fast-xml-parser to ^5.5.11 (#5500)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 14:58:44 +00:00
Meier Lukas c48588c6a7 fix(about): add missing dependencies (#5480) 2026-04-13 16:51:38 +02:00
Meier Lukas ce0c72b008 ci: approve homarr-releases pull-requests automatically (#5468) 2026-04-13 16:46:10 +02:00
homarr-renovate[bot] 1057b478c3 fix(deps): update testcontainers-node monorepo to ^11.14.0 (#5498)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 14:43:08 +00:00
homarr-crowdin[bot] 4d53193fcc chore(lang): updated translations from crowdin (#5483)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-13 16:39:22 +02:00
homarr-renovate[bot] 95abd2c9d3 fix(deps): update tiptap monorepo to v3.22.3 (#5499)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 12:11:25 +00:00
homarr-renovate[bot] f88984cda8 fix(deps): update dependency typescript-eslint to ^8.58.1 (#5496)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-13 02:54:07 +00:00
homarr-renovate[bot] 0927f45b25 fix(deps): update dependency @immich/sdk to ^2.7.2 (#5494)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 21:42:41 +00:00
homarr-renovate[bot] ed24ce6381 fix(deps): update turbo monorepo to ^2.9.5 (#5491)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 17:46:20 +00:00
homarr-renovate[bot] 24607e266b chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.7 (#5486)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 17:42:25 +00:00
homarr-renovate[bot] 9cdf2aa1f2 fix(deps): update dependency @immich/sdk to ^2.7.0 (#5490)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 16:49:27 +00:00
homarr-renovate[bot] 74611b75a7 fix(deps): update dependency @drizzle-team/brocli to ^0.12.0 (#5489)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 15:44:44 +00:00
homarr-renovate[bot] cf131c5c51 fix(deps): update dependency swagger-ui-react to ^5.32.2 (#5488)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 14:47:24 +00:00
homarr-renovate[bot] efd8a55b6e fix(deps): update dependency jotai to ^2.19.1 (#5487)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 14:46:52 +00:00
homarr-renovate[bot] c0c16be9e4 chore(deps): update vitest monorepo to ^4.1.3 (#5485)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 10:47:52 +00:00
homarr-renovate[bot] 327611dfc6 chore(deps): update dependency jsdom to ^29.0.2 (#5484)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-12 05:32:06 +00:00
homarr-renovate[bot] c5149d4262 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.5 (#5482)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-11 13:06:56 +00:00
homarr-renovate[bot] 3f039bf57d chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.4 (#5479)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-11 07:56:52 +00:00
homarr-renovate[bot] 053cb8bec3 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.12 [security] (#5438)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-11 06:04:19 +00:00
homarr-renovate[bot] 813f2fa5ef fix(deps): update turbo monorepo to ^2.9.4 (#5476)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-11 02:33:48 +00:00
homarr-crowdin[bot] 3d0c9fde0c chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-11 01:15:30 +00:00
homarr-releases[bot] c74367e564 chore: update bug report template (#5475)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-10 22:49:51 +00:00
Releases Homarr 5e2b693f6a chore(release): 1.59.1 [skip ci] 2026-04-10 22:39:52 +00:00
homarr-releases[bot] 8df71f7695 chore(release): automatic release v1.59.1 2026-04-10 22:39:07 +00:00
Meier Lukas db6bb870e3 fix(qbittorrent): requests fail (#5473) 2026-04-11 00:38:05 +02:00
Meier Lukas dc44fac42a revert(deps): downgrade undici from v8 to v7 (#5473) 2026-04-11 00:33:22 +02:00
Meier Lukas 26c2fa555b chore: update documentation sitemap 2026-04-10 23:33:03 +02:00
homarr-releases[bot] 3ce3d221cd chore: update bug report template (#5466)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-10 21:54:40 +02:00
Releases Homarr 62e9bb0c49 chore(release): 1.59.0 [skip ci] 2026-04-10 19:43:43 +00:00
homarr-releases[bot] b11eaff043 chore(release): automatic release v1.59.0 2026-04-10 19:42:45 +00:00
homarr-renovate[bot] 845f11526e fix(deps): update dependency dotenv to ^17.4.1 (#5462)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-10 19:22:28 +00:00
homarr-renovate[bot] 7982def853 fix(deps): update dependency next to v16.2.3 [security] (#5461)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-10 21:05:50 +02:00
homarr-renovate[bot] 13e13ba352 fix(deps): update dependency react-quill-new to ^3.8.3 (#5463)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-10 19:05:14 +00:00
homarr-renovate[bot] 55b743496b chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.15.0 [security] (#5453)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-10 20:57:19 +02:00
homarr-update-contributors[bot] 4a6aecceea chore: update integrations list readme (#5459)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-10 18:49:31 +00:00
Meier Lukas 2454cac7be fix(security): remove salt from database (#5412) 2026-04-10 20:48:20 +02:00
Meier Lukas 41a03ef4e0 fix(logs): missing fields from top level error with metadata in output (#5456) 2026-04-10 20:46:59 +02:00
7879b31630 feat: Anchor integration and Anchor Note widget (#5040)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-10 20:43:43 +02:00
homarr-update-contributors[bot] 57ea82f088 chore: update integrations list readme (#5457)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-10 17:21:07 +00:00
KyleandMeier Lukas 22d599c0cf feat: speedtest tracker integration (#5363)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-10 19:04:42 +02:00
homarr-crowdin[bot] c861878058 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-10 16:13:35 +00:00
homarr-update-contributors[bot] 9f5ae31222 chore: update contributors (#5455)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-10 16:13:04 +00:00
Meier Lukas 6ec058c835 feat(rss-feed): add optional poster (#5452) 2026-04-10 18:11:20 +02:00
Meier Lukas faffb818f9 feat(rss-feed): add periodic live updates (#5449) 2026-04-09 22:45:44 +02:00
Meier Lukas bdf9439e49 ci: disable skip-stability-days for forks (#5451) 2026-04-09 22:45:01 +02:00
homarr-renovate[bot] 75b36bb160 fix(deps): update dependency undici to v8.0.2 (#5446)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-09 16:01:05 +00:00
homarr-renovate[bot] 43587656bb chore(deps): update dependency proxmox-api&gt;undici to v8.0.2 (#5445)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-09 15:59:56 +00:00
homarr-renovate[bot] 8cab4b0333 fix(deps): update tiptap monorepo to v3.22.2 (#5448)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-09 14:14:48 +00:00
homarr-crowdin[bot] 154ad1e01e chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-09 01:09:23 +00:00
homarr-renovate[bot] cd2d0ba53f chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.28.0 (#5436)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 18:14:49 +02:00
homarr-renovate[bot] 37d7c8535f chore(deps): update dependency esbuild to ^0.28.0 (#5435)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 18:14:39 +02:00
homarr-renovate[bot] a0e0083b16 fix(deps): update dependency undici to v8.0.1 (#5440)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 12:06:50 +00:00
homarr-renovate[bot] 5317a25cfb chore(deps): update dependency @types/node to ^24.12.2 (#5443)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 12:05:47 +00:00
homarr-renovate[bot] b619ba1d46 fix(deps): update tanstack-query monorepo to ^5.96.2 (#5442)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 11:08:35 +00:00
homarr-renovate[bot] 2baab5402d fix(deps): update tiptap monorepo to v3.22.1 (#5434)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 11:08:05 +00:00
homarr-renovate[bot] 174851bd19 chore(deps): update dependency @types/node to ^24.12.1 (#5441)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 11:05:37 +00:00
homarr-renovate[bot] a7b195d2cb fix(deps): update dependency fast-xml-parser to ^5.5.10 (#5439)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 11:04:39 +00:00
homarr-renovate[bot] 0ab78142b3 chore(deps): update dependency proxmox-api&gt;undici to v8.0.1 (#5431)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-08 09:08:51 +00:00
homarr-renovate[bot] 3f73474d31 fix(deps): update dependency sass to ^1.99.0 (#5437)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 23:47:06 +00:00
homarr-renovate[bot]andMeier Lukas f2f5128cbd fix(deps): update dependency undici to v8 (#5432)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-07 16:52:42 +02:00
homarr-renovate[bot] 50bf7cdf19 fix(deps): update dependency dotenv to ^17.4.0 (#5427)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 14:24:59 +00:00
homarr-renovate[bot] ec15529ca4 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.10 (#5430)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 14:22:54 +00:00
homarr-renovate[bot] db8a3291da chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.5 (#5429)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 16:18:33 +02:00
homarr-renovate[bot] e2410f143c chore(deps): update dependency esbuild to ^0.27.5 (#5428)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-07 16:18:19 +02:00
homarr-crowdin[bot] cb2862bc79 chore(lang): updated translations from crowdin (#5417)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-07 16:12:15 +02:00
homarr-renovate[bot] dbe8d84202 fix(deps): update dependency adm-zip to v0.5.17 (#5422)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-06 21:45:44 +00:00
homarr-renovate[bot] 612038ad07 fix(deps): update dependency next-intl to v4.9.0 (#5426)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-06 20:46:21 +00:00
homarr-renovate[bot] 72ad935ddf fix(deps): update tanstack-query monorepo to ^5.96.1 (#5421)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-06 09:17:17 +00:00
homarr-renovate[bot] 859747037b fix(deps): update nextjs monorepo to v16.2.2 (#5418)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-06 02:45:18 +00:00
homarr-renovate[bot] dfa87939f2 fix(deps): update turbo monorepo to ^2.9.3 (#5419)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-06 02:44:53 +00:00
homarr-renovate[bot] 402d948fe7 fix(deps): update tiptap monorepo to v3.22.0 (#5414)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-05 21:39:56 +00:00
homarr-renovate[bot] d8480c05a6 fix(deps): update turbo monorepo to ^2.9.2 (#5415)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-05 20:44:00 +00:00
homarr-renovate[bot] 6047eb4477 fix(deps): update dependency next-intl to v4.8.4 (#5413)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-05 16:45:33 +00:00
homarr-renovate[bot] 8b1e3babc0 fix(deps): update tanstack-query monorepo to ^5.96.0 (#5410)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-05 11:37:24 +00:00
homarr-renovate[bot] 1e869f6a96 fix(deps): update dependency typescript-eslint to ^8.58.0 (#5409)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-04 21:40:41 +00:00
homarr-renovate[bot] 7607140f94 fix(deps): update turbo monorepo to ^2.9.1 (#5408)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-04 20:41:33 +00:00
homarr-renovate[bot] f037da5831 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.60.1 (#5402)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-04 11:36:15 +00:00
homarr-renovate[bot] f0ef4729bf fix(deps): update dependency @tabler/icons-react to ^3.41.1 (#5400)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-04 10:42:36 +00:00
homarr-releases[bot] ab1418514d chore: update bug report template (#5406)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-04 10:08:48 +00:00
Releases Homarr a5b6c120dd chore(release): 1.58.1 [skip ci] 2026-04-04 09:53:34 +00:00
homarr-releases[bot] 9e7d5ad629 chore(release): automatic release v1.58.1 2026-04-04 09:52:41 +00:00
Meier Lukas a86cdb9fb9 fix: arabic text in english translations 2026-04-04 11:50:19 +02:00
homarr-update-contributors[bot] 270fce6a0e chore: update integrations list readme (#5404)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-04 09:46:50 +00:00
homarr-crowdin[bot] 2680255f44 chore(lang): updated translations from crowdin (#5401)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-04-04 11:45:23 +02:00
Meier Lukas ddf87d278e chore: remove temporary ts-expect-error for search-ch documentation link 2026-04-04 11:41:25 +02:00
homarr-releases[bot] 822d2c194b chore: update bug report template (#5399)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-04-03 21:50:53 +02:00
Releases Homarr f5f7f3e433 chore(release): 1.58.0 [skip ci] 2026-04-03 19:38:14 +00:00
homarr-releases[bot] b1b3b79cd9 chore(release): automatic release v1.58.0 2026-04-03 19:37:17 +00:00
homarr-update-contributors[bot] 35d40d0dea chore: update integrations list readme (#5397)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-03 18:28:41 +00:00
Meier Lukas abb2dfc92a feat(integrations): add search.ch integration with timetable widget (#5180) 2026-04-03 20:23:15 +02:00
homarr-renovate[bot] 279d830b79 chore(deps): update dependency conventional-changelog-conventionalcommits to ^9.3.1 (#5396)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-03 17:25:35 +00:00
homarr-renovate[bot] 72a93e681f fix(deps): update trpc monorepo to ^11.16.0 (#5392)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-03 16:48:45 +00:00
Meier Lukas c977b84e2d fix: node-ical prevents many trpc queries from loading (#5395) 2026-04-03 18:26:52 +02:00
homarr-update-contributors[bot] e92c407beb chore: update contributors (#5394)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-04-03 13:24:06 +00:00
homarr-crowdin[bot]andMeier Lukas 05af82bc02 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-03 01:17:29 +00:00
homarr-crowdin[bot]andMeier Lukas 531bfd6fcf chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-02 18:53:29 +00:00
homarr-renovate[bot] fa40b6b647 fix(deps): update turbo monorepo to ^2.8.21 (#5391)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-02 18:50:09 +00:00
homarr-renovate[bot] c363cf8457 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.14.0 (#5389)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-01 19:09:32 +00:00
homarr-renovate[bot] 0a78e3f12a fix(deps): update dependency drizzle-orm to ^0.45.2 (#5388)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-01 19:02:54 +00:00
homarr-crowdin[bot]andMeier Lukas f380b383a3 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-04-01 18:13:33 +02:00
homarr-renovate[bot] b30dbafbbb fix(deps): update tiptap monorepo to v3.21.0 (#5386)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-04-01 15:13:38 +00:00
homarr-renovate[bot] a9bcc9d04b fix(deps): update dependency @tabler/icons-react to ^3.41.0 (#5384)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 23:42:53 +00:00
homarr-renovate[bot] 451e68ab57 fix(deps): update trpc monorepo to ^11.15.1 (#5381)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 20:49:58 +00:00
Meier Lukas a7ed7a4592 ci(renovate): update prebuilt-debian lockfile automatically (#5379) 2026-03-31 22:11:08 +02:00
homarr-renovate[bot] 2dd3c906c4 fix(deps): update dependency @immich/sdk to ^2.6.3 (#5380)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 19:30:29 +00:00
Meier Lukas 6a200c39af fix(boards): unable to click on links at settings page (#5230) 2026-03-31 19:08:02 +02:00
homarr-renovate[bot] e88e3d17c0 fix(deps): update dependency @ctrl/deluge to v8 (#5367)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 18:52:38 +02:00
homarr-renovate[bot]andMeier Lukas 46db8b6ab3 fix(deps): update dependency better-sqlite3 to ^12.8.0 (#5266)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-31 18:43:59 +02:00
homarr-renovate[bot] 545dba0c8f chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.3 (#5377)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 16:07:34 +00:00
homarr-renovate[bot] cbb85159d6 chore(deps): update vitest monorepo to ^4.1.2 (#5378)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 16:06:32 +00:00
homarr-renovate[bot] ff07658212 chore(deps): update node.js (#5364)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-31 11:57:00 +00:00
homarr-renovate[bot] a9582f04ed fix(deps): update dependency zod to ^4.3.6 (#5376)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 21:50:50 +00:00
homarr-renovate[bot]andMeier Lukas 2b4c83dcca fix(deps): update dependency zod to ^4.3.5 - abandoned (#4803)
* fix(deps): update dependency zod to ^4.3.5

* fix: omit can not be used with refine

* fix: convert intersection to object due to trpc-openapi issue

* fix: remove omit after refine

---------

Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-30 23:11:14 +02:00
homarr-renovate[bot] 336c55b3e9 chore(deps): update docker/setup-buildx-action action to v4 (#5200)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:58:47 +02:00
homarr-renovate[bot] eb5dd3628a chore(deps): update docker/metadata-action action to v6 (#5207)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:58:37 +02:00
homarr-renovate[bot] c19766e53f chore(deps): update docker/build-push-action action to v7 (#5208)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:58:28 +02:00
homarr-renovate[bot] cc153fff10 chore(deps): update dependency jsdom to v29 (#5274)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:53:20 +02:00
homarr-renovate[bot] b71718be09 chore(deps): update dependency proxmox-api&gt;undici to v7.24.6 (#5373)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 20:52:12 +00:00
homarr-renovate[bot]andMeier Lukas b07c545f17 fix(deps): update dependency node-ical to ^0.23.1 - abandoned (#4856)
* fix(deps): update dependency node-ical to ^0.23.1

* fix: date from node-ical represents utc value

---------

Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-30 22:43:58 +02:00
homarr-renovate[bot] 4aff9819e5 chore(deps): update actions/create-github-app-token action to v3 (#5267)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:24:09 +02:00
homarr-renovate[bot] 9e0c3c0117 chore(deps): update pnpm to v10.33.0 (#5372)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:23:46 +02:00
homarr-crowdin[bot] 107ec7737a chore(lang): update translations from crowdin (#5350)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-30 22:23:03 +02:00
homarr-renovate[bot] d4177afc18 chore(deps): update pnpm/action-setup action to v5 (#5294)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 22:22:44 +02:00
Sascha BuehrleandMeier Lukas 7679553f16 fix: honor trusted certificates in Immich integration requests (#5275)
* fix: use trusted-cert fetch for immich sdk requests (fixes #5242)

* fix: use testing fetch for Immich connection check

* fix: typecheck issues

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-30 22:21:11 +02:00
homarr-renovate[bot] 4f2cc9af2a fix(deps): update dependency undici to v7.24.6 (#5374)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-30 17:06:11 +00:00
homarr-renovate[bot] 6820f8afea fix(deps): update tiptap monorepo to v3.20.5 (#5371)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 16:43:28 +00:00
homarr-renovate[bot] 4a5bafa790 fix(deps): update dependency @immich/sdk to ^2.6.2 (#5370)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 14:44:39 +00:00
homarr-renovate[bot] 8d1ff4065d fix(deps): update dependency isomorphic-dompurify to ^3.7.1 (#5369)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 10:41:25 +00:00
homarr-renovate[bot] 14d87178b5 fix(deps): update dependency jotai to ^2.19.0 (#5368)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 09:45:23 +00:00
homarr-renovate[bot] c2b54ddfaa fix(deps): update dependency isomorphic-dompurify to ^3.7.0 (#5366)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 09:40:05 +00:00
homarr-renovate[bot] cefbf0e271 fix(deps): update dependency typescript-eslint to ^8.57.2 (#5360)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 07:13:39 +00:00
homarr-renovate[bot] 189806b5a2 fix(deps): update dependency fast-xml-parser to ^5.5.9 (#5359)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 07:12:11 +00:00
homarr-renovate[bot] 9c134c5ceb fix(deps): update dependency @ctrl/deluge to ^7.5.3 (#5365)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-29 05:17:45 +00:00
homarr-renovate[bot] 682099189b fix(deps): update tanstack-query monorepo to ^5.95.2 (#5357)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 16:41:43 +00:00
homarr-renovate[bot] 32218beb7e chore(deps): update vitest monorepo to ^4.1.1 (#5356)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 15:40:16 +00:00
homarr-renovate[bot] 332b6b4f42 fix(deps): update tanstack-query monorepo to ^5.95.1 (#5355)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 14:39:28 +00:00
homarr-renovate[bot] aca893254c chore(deps): update dependency brace-expansion@&gt;&#x3d;2.0.0 &lt;&#x3d;2.0.1 to >=5.0.5 [security] (#5341)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 14:34:27 +00:00
homarr-renovate[bot] 2fb2981d2f fix(deps): update trpc monorepo to ^11.15.0 (#5354)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 13:06:24 +00:00
homarr-renovate[bot] 5d84888a33 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.2 (#5353)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 13:04:53 +00:00
homarr-renovate[bot] 728f7e489a fix(deps): update dependency fastify to ^5.8.4 (#5351)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 13:04:35 +00:00
homarr-renovate[bot] 0e3ac069d9 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.9 (#5352)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-28 11:35:24 +00:00
homarr-renovate[bot] 505a6b3a89 chore(deps): update dependency brace-expansion@&gt;&#x3d;1.0.0 &lt;&#x3d;1.1.11 to >=5.0.5 [security] (#5340)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 23:35:56 +00:00
homarr-releases[bot] 7c8adab061 chore: update bug report template (#5349)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-03-27 23:06:11 +01:00
homarr-renovate[bot] b11bf367d0 fix(deps): update tanstack-query monorepo to ^5.95.0 (#5325)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 21:43:25 +00:00
Releases Homarr 15c2037230 chore(release): 1.57.1 [skip ci] 2026-03-27 21:34:11 +00:00
homarr-releases[bot] 3735c998e4 chore(release): automatic release v1.57.1 2026-03-27 21:32:58 +00:00
Manuel 192a43a031 fix: dashdot gpu (#5347) 2026-03-27 22:32:13 +01:00
homarr-releases[bot] e9c908b317 chore: update bug report template (#5346)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-03-27 21:45:48 +01:00
homarr-renovate[bot] 49d9394cd7 fix(deps): update dependency @t3-oss/env-nextjs to ^0.13.11 (#5345)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 19:53:16 +00:00
homarr-renovate[bot] 798293813c fix(deps): update dependency fast-xml-parser to ^5.5.8 (#5324)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 19:52:59 +00:00
homarr-renovate[bot] 42a3791e6b fix(deps): update dependency dockerode to ^4.0.10 (#5327)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 19:52:19 +00:00
Releases Homarr 3d8e22574e chore(release): 1.57.0 [skip ci] 2026-03-27 19:41:40 +00:00
homarr-releases[bot] 531d87a83b chore(release): automatic release v1.57.0 2026-03-27 19:40:44 +00:00
homarr-crowdin[bot] 929a803965 chore(lang): update translations from crowdin (#5322)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-27 20:23:28 +01:00
Daniel 003dac4744 feat: add GPU monitoring support via Glances integration (#5255)
* feat: add GPU monitoring support via Glances integration

- Add GPU fields to SystemHealthMonitoring interface (gpuId, name,
  memoryUtilization, processorUtilization, temperature, fanSpeed)
- Extend Glances integration to parse GPU data from /api/4/all endpoint
  (supports NVIDIA, AMD, and Intel GPUs via Glances)
- Add GPU utilization ring to Health Monitoring widget with tooltip
  showing VRAM usage, temperature, and fan speed
- Add GPU time-series chart to System Resources widget (grape color)
- Add GPU toggle option to both widgets
- Add English translations for GPU labels
- Add gpu: [] to all other integrations (dashdot, truenas, unraid,
  openmediavault) for backward compatibility
- Add GPU mock data for development/testing

Closes community request from PR #5102 for GPU monitoring support.

* fix: implement GPU monitoring for dashdot integration and clarify OMV comment

- Add GPU load fetching via dashdot /load/gpu endpoint
- Add GPU info parsing from dashdot /info endpoint
- Add gpuLoadApi and gpu field to internalServerInfoApi schemas
- Add getCurrentGpuLoadAsync method to DashDotIntegration
- Map GPU load data to SystemHealthMonitoring gpu array
- Add explanatory comment for OMV's empty gpu array

Addresses review comments from manuel-rw on PR #5255

* Delete manifest.json
2026-03-27 20:22:41 +01:00
homarr-renovate[bot] d7f0596db8 fix(deps): update trpc monorepo to ^11.14.1 (#5328)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 19:13:22 +00:00
homarr-renovate[bot] dec490365a chore(deps): update dependency proxmox-api&gt;undici to v7.24.5 (#5321)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 19:12:08 +00:00
Matt Van HornandMatt Van Horn 1639da5779 fix: handle null ports in Docker container table (#5313)
When Docker API returns `null` for container ports (instead of `[]`),
the Docker management page crashes. Added optional chaining on
`ports?.length` to handle this case.

Fixes #5311

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
2026-03-27 20:04:03 +01:00
homarr-renovate[bot] d53c922688 fix(deps): update dependency ws to ^8.20.0 (#5337)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:09:40 +00:00
homarr-renovate[bot] 22f5d3b959 fix(deps): update dependency trpc-to-openapi to ^3.2.0 (#5320)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:08:15 +00:00
homarr-renovate[bot] 8d64cb8a5e fix(deps): update dependency isomorphic-dompurify to ^3.6.0 (#5334)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:07:40 +00:00
homarr-renovate[bot] bbd42600aa chore(deps): update dependency @types/pg to ^8.20.0 (#5331)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:05:32 +00:00
homarr-renovate[bot] 8859923bb7 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.60.0 (#5332)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:04:25 +00:00
homarr-renovate[bot] e23a397a80 fix(deps): update nextjs monorepo to v16.2.1 (#5330)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:03:06 +00:00
f88bf9582e feat: add nextcloud notification provider (#5343)
* feat: add Nextcloud notification provider
fix: resolve hydration error in add-board modal

* Update packages/integrations/src/nextcloud/nextcloud.integration.ts

Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com>

* Update nextcloud.integration.ts

* defined notificationSchema outside of class

---------

Co-authored-by: Lorinc936 <lorinc1231@gmail.com>
Co-authored-by: Lorinc936 <116025544+Lorinc936@users.noreply.github.com>
2026-03-27 18:51:43 +01:00
homarr-renovate[bot] 22bbef9d8e fix(deps): update dependency undici to v7.24.5 (#5338)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-27 18:22:06 +01:00
Manuel 4f2b8217f8 fix: warnings in code 2026-03-27 18:12:27 +01:00
Kelian Baert 2fefd9da01 feat: add "allowModals" option for iframe widget (#5339) 2026-03-27 18:05:15 +01:00
Manuel b3e9b3351b Merge commit from fork 2026-03-27 17:50:26 +01:00
homarr-renovate[bot] d4e4c9669d fix(deps): update dependency typescript-eslint to ^8.57.1 (#5286)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-25 02:24:41 +00:00
homarr-renovate[bot] 1db20df19c chore(deps): update dependency proxmox-api&gt;undici to v7.24.0 [security] (#5235)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 23:35:41 +00:00
homarr-renovate[bot] feaf022965 fix(deps): update dependency @immich/sdk to ^2.6.1 (#5319)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 21:47:26 +00:00
homarr-renovate[bot] 5b4e6fcc11 fix(deps): update turbo monorepo to ^2.8.20 (#5317)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 20:52:30 +00:00
homarr-renovate[bot] 20a9b3d556 fix(deps): update dependency @immich/sdk to ^2.6.0 (#5318)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 19:21:16 +00:00
homarr-renovate[bot] 47b2d36f7a fix(deps): update dependency ioredis to v5.10.1 (#5316)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 18:05:01 +00:00
homarr-renovate[bot] 2336f9ee5e fix(deps): update dependency fast-xml-parser to ^5.5.7 (#5315)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 18:04:14 +00:00
homarr-renovate[bot] 6fa6ba385e fix(deps): update dependency @tanstack/react-query to ^5.91.2 (#5314)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 11:02:14 +00:00
homarr-renovate[bot] dadf596a31 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=8.0.1 (#5312)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-24 05:00:20 +00:00
homarr-renovate[bot] 7537184a81 fix(deps): update turbo monorepo to ^2.8.19 (#5310)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-23 22:41:28 +00:00
homarr-update-contributors[bot] 5a81d035cf chore: update contributors (#5277)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-03-23 19:11:50 +00:00
homarr-crowdin[bot] b0b6fbd315 chore(lang): updated translations from crowdin (#5284)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-23 20:10:33 +01:00
homarr-renovate[bot] 883161357d fix(deps): update nextjs monorepo to v16.2.0 (#5309)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-23 19:06:43 +00:00
homarr-renovate[bot] 24694b9241 fix(deps): update turbo monorepo to ^2.8.18 (#5308)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-23 18:01:05 +00:00
homarr-renovate[bot] 13b99d021b fix(deps): update dependency @tanstack/react-query to ^5.91.0 (#5305)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-23 15:02:58 +00:00
homarr-renovate[bot] 94dfddf8bd fix(deps): update dependency isomorphic-dompurify to ^3.5.1 (#5300)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 23:35:49 +00:00
homarr-renovate[bot] b6b11c39d2 fix(deps): update dependency isomorphic-dompurify to ^3.5.0 (#5299)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 20:37:26 +00:00
homarr-renovate[bot] 369b4d4863 fix(deps): update tiptap monorepo to v3.20.4 (#5287)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 17:36:05 +00:00
homarr-renovate[bot] 6f8e62963a fix(deps): update mantine monorepo to ^8.3.18 (#5298)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 16:44:42 +00:00
homarr-renovate[bot] 991044ebd7 fix(deps): update dependency fast-xml-parser to ^5.5.6 (#5297)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 16:42:40 +00:00
homarr-renovate[bot] b3f012226b chore(deps): update dependency fast-xml-parser to v5.5.7 [security] (#5295)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 16:34:54 +00:00
homarr-renovate[bot] 63c55cec57 fix(deps): update dependency swagger-ui-react to ^5.32.1 (#5296)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 14:35:44 +00:00
homarr-renovate[bot] c009dd7de6 fix(deps): update testcontainers-node monorepo to ^11.13.0 (#5293)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 10:40:06 +00:00
homarr-renovate[bot] 62764499e7 fix(deps): update dependency isomorphic-dompurify to ^3.4.0 (#5292)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 09:42:54 +00:00
homarr-renovate[bot] 09227a3884 fix(deps): update dependency drizzle-kit to ^0.31.10 (#5291)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 09:41:50 +00:00
homarr-renovate[bot] 37bafaa71a chore(deps): update dependency @types/adm-zip to v0.5.8 (#5288)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 05:00:54 +00:00
homarr-renovate[bot] 237d11d2c0 fix(deps): update dependency @next/eslint-plugin-next to v16.1.7 (#5289)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-22 02:34:01 +00:00
homarr-renovate[bot] 4efe7496a5 chore(deps): update babel monorepo to >=7.29.2 (#5290)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-21 23:37:03 +00:00
homarr-renovate[bot] c3fa4e866c chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.7 (#5282)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-21 15:34:29 +00:00
Meier Lukas 1938798ba1 Merge commit from fork 2026-03-21 16:07:05 +01:00
homarr-renovate[bot] 4fb48c23a2 fix(deps): update dependency mysql2 to v3.20.0 (#5283)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-20 22:37:51 +00:00
homarr-releases[bot] e13afb721e chore: update bug report template (#5281)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-03-20 21:51:13 +01:00
Releases Homarr 3ed31d8f59 chore(release): 1.56.1 [skip ci] 2026-03-20 19:37:26 +00:00
homarr-releases[bot] 1d5b4fd7fb chore(release): automatic release v1.56.1 2026-03-20 19:36:28 +00:00
homarr-renovate[bot] 55cf3c72a3 fix(deps): update tiptap monorepo to v3.20.2 (#5279)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-20 18:59:21 +00:00
homarr-renovate[bot] 9648d9e99f fix(deps): update trpc monorepo to ^11.13.4 (#5278)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-20 14:49:03 +00:00
homarr-renovate[bot] 0e0b857905 fix(deps): update trpc monorepo to ^11.13.3 (#5276)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-20 11:40:40 +00:00
homarr-renovate[bot] 7d93b10032 fix(deps): update trpc monorepo to ^11.13.2 (#5273)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-20 10:45:12 +00:00
homarr-renovate[bot] 6fa9087a11 fix(deps): update mantine monorepo to ^8.3.17 (#5271)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-19 16:04:34 +00:00
homarr-renovate[bot] d2f438f294 fix(deps): update turbo monorepo to ^2.8.17 (#5265)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-19 15:01:48 +00:00
homarr-renovate[bot] 2423ecdce5 fix(deps): update dependency fast-xml-parser to ^5.5.5 (#5270)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-19 15:01:24 +00:00
homarr-renovate[bot] 7094110da2 chore(deps): update dependency fast-xml-parser to v5.5.6 [security] (#5269)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-19 14:52:36 +00:00
homarr-renovate[bot] 72ec253644 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.8 (#5268)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-19 09:51:42 +00:00
homarr-renovate[bot] 3bbde3cbb8 fix(deps): update dependency next to v16.1.7 [security] (#5263)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 21:41:38 +00:00
homarr-renovate[bot] 6f85b2161f chore(deps): update vitest monorepo to ^4.1.0 (#5259)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 19:27:32 +00:00
homarr-renovate[bot] c85910d24f chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to v8 (#5261)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 19:55:32 +01:00
homarr-renovate[bot] 397c1d3dbc chore(deps): update dependency esbuild to ^0.27.4 (#5256)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 19:53:21 +01:00
homarr-renovate[bot] 078fb6de93 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.4 (#5257)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 19:53:15 +01:00
homarr-crowdin[bot] 8159b4f146 chore(lang): update translations from crowdin (#5248)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-17 19:49:40 +01:00
homarr-renovate[bot] e8f6876d24 fix(deps): update dependency isomorphic-dompurify to ^3.3.0 (#5252)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 16:22:11 +00:00
homarr-renovate[bot] 615062c6b1 fix(deps): update dependency dayjs to ^1.11.20 (#5253)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 16:20:32 +00:00
homarr-renovate[bot] d9294ed4bf chore(deps): update dependency @vitejs/plugin-react to ^5.2.0 (#5258)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-17 15:06:30 +00:00
homarr-renovate[bot] d1d8659f95 fix(deps): update dependency fast-xml-parser to ^5.5.3 (#5251)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-16 17:09:31 +00:00
homarr-renovate[bot] ac80008ce0 fix(deps): update turbo monorepo to ^2.8.16 (#5250)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-16 02:42:50 +00:00
homarr-renovate[bot] 13853f2981 chore(deps): update pnpm to v10.32.1 (#5249)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-16 02:41:02 +00:00
homarr-renovate[bot] f995cba157 fix(deps): update dependency sass to ^1.98.0 (#5247)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-15 23:38:23 +00:00
homarr-renovate[bot] 91a9b6bec9 fix(deps): update dependency fast-xml-parser to ^5.5.1 (#5246)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-15 21:37:58 +00:00
homarr-crowdin[bot]andMeier Lukas 314ab3a28e chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-15 21:55:12 +01:00
homarr-renovate[bot] 7841b58f0f fix(deps): update dependency typescript-eslint to ^8.57.0 (#5241)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 23:37:16 +00:00
homarr-renovate[bot] 63f91b6352 fix(deps): update dependency isomorphic-dompurify to ^3.1.0 (#5239)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 23:36:12 +00:00
homarr-renovate[bot] 4fd8ac9118 chore(deps): update pnpm to v10.32.0 (#5244)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 22:36:25 +00:00
homarr-renovate[bot] 1bd924ea99 fix(deps): update turbo monorepo to ^2.8.15 (#5243)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 22:35:44 +00:00
homarr-renovate[bot] 1040ecac04 fix(deps): update dependency mysql2 to v3.19.1 (#5240)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 16:41:47 +00:00
homarr-renovate[bot] 729b49ffa9 fix(deps): update dependency jotai to ^2.18.1 (#5238)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-14 15:35:15 +00:00
homarr-crowdin[bot]andMeier Lukas dbf5b375f5 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-14 12:58:16 +00:00
Meier Lukas 7e8723ce57 chore(docs): remove temporary ts-expect-error for documentation-url 2026-03-14 13:53:07 +01:00
homarr-releases[bot] c5e83943a4 chore: update bug report template (#5234)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-03-14 08:54:18 +01:00
Releases Homarr d3424ec71b chore(release): 1.56.0 [skip ci] 2026-03-13 19:31:03 +00:00
homarr-releases[bot] 9bfcb04aa2 chore(release): automatic release v1.56.0 2026-03-13 19:30:11 +00:00
homarr-update-contributors[bot] ec24fe22f9 chore: update integrations list readme (#5232)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-03-13 19:35:57 +01:00
StrandedTurtle f68600150a feat: Tracearr integration (#5060) 2026-03-13 19:19:43 +01:00
Meier Lukas d3c2ad134f fix(releases): allow any icon url for repositories (#5229) 2026-03-13 17:49:30 +01:00
homarr-renovate[bot] 25f3b074ee chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.7 [security] (#5211)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-13 16:43:07 +00:00
Meier Lukas ba9c3f3e27 fix(boards): duplication of boards fails with postgresql / mysql (#5228) 2026-03-13 16:32:48 +01:00
homarr-update-contributors[bot] 3daadec358 chore: update contributors (#5227)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-03-13 13:10:58 +00:00
Meier Lukas 21225c979e fix: language changes when searching for some icons (#5224) 2026-03-13 14:09:51 +01:00
Meier Lukas 3091ed6358 fix(glances): unable to parse uptime of 1 day (#5226) 2026-03-13 14:09:42 +01:00
Meier Lukas 451602d1e6 fix(true-nas): ignore offline/exported pools (#5225) 2026-03-13 14:09:30 +01:00
homarr-crowdin[bot] 745121c4b4 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-13 08:58:55 +00:00
homarr-renovate[bot] 0bd3a8728a chore(deps): update pnpm to v10.31.0 (#5223)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-13 02:16:18 +00:00
homarr-renovate[bot] 8ee05e0d49 fix(deps): update turbo monorepo to ^2.8.14 (#5113)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-12 19:50:05 +00:00
homarr-renovate[bot]andMeier Lukas 5c4f394501 fix(deps): update dependency fastify to ^5.8.2 (#5221)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-12 20:33:57 +01:00
Sergio 85c460190c fix(system-disks): format absolute denominator with human-readable size (#5183) 2026-03-12 20:15:11 +01:00
Meier Lukas 7c10becc74 chore: reduce flakiness in e2e tests (#5217) 2026-03-12 20:03:54 +01:00
Meier Lukas 5723da21aa fix(security): harden hashing in image-proxy (#5188) 2026-03-12 20:03:08 +01:00
homarr-renovate[bot] a9085399c0 chore(deps): update dependency eslint to ^9.39.4 (#5218)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-12 07:57:01 +00:00
ManuelandMeier Lukas aa36ce3c47 feat: expand cli (#5159)
* feat: expand cli

* fix: lint issue

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-12 08:47:08 +01:00
homarr-renovate[bot] 12ad241406 fix(deps): update dependency @tabler/icons-react to ^3.40.0 (#5220)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-12 05:52:37 +00:00
homarr-renovate[bot] 22fd8e9b95 fix(deps): update dependency @tabler/icons-react to ^3.39.0 (#5209)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 20:46:03 +00:00
homarr-renovate[bot] c12f1bf2b3 chore(deps): update dependency @types/node to ^24.12.0 (#5212)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 20:43:35 +00:00
homarr-renovate[bot] 1c6e23a4b6 fix(deps): update dependency pg to ^8.20.0 (#5198)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 19:55:40 +00:00
homarr-renovate[bot] c7fa5cdbb3 fix(deps): update mantine monorepo to ^8.3.16 (#5201)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 19:53:29 +00:00
homarr-crowdin[bot] bece83eb8b chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-11 16:58:05 +00:00
homarr-renovate[bot] 00dd32bbe1 fix(deps): update trpc monorepo to ^11.12.0 (#5213)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 14:59:23 +00:00
homarr-renovate[bot] d941ed58fa fix(deps): update tiptap monorepo to v3.20.1 (#5215)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-11 13:10:26 +00:00
homarr-renovate[bot] 324bfd90d1 fix(deps): update dependency mysql2 to v3.19.0 (#5206)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-10 19:10:33 +00:00
homarr-renovate[bot] b02e8cc875 fix(deps): update dependency fastify to ^5.8.1 (#5202)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-10 19:08:25 +00:00
homarr-renovate[bot] 7b207cc83b chore(deps): update dependency tar-fs@&gt;&#x3d;2.0.0 &lt;2.1.3 to >=3.1.2 (#5196)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-10 19:07:20 +00:00
homarr-crowdin[bot] 4b8f8a1785 chore(lang): update translations from crowdin (#5193)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-10 20:02:47 +01:00
Sergio bbf0adf31a fix(stock-price): align sparkline color with displayed price change (#5181) 2026-03-10 20:01:53 +01:00
homarr-renovate[bot] 8b79e54245 chore(deps): update dependency prettier-plugin-packagejson to ^3.0.2 (#5204)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-10 13:10:34 +00:00
homarr-renovate[bot] 2c9b47bc0b chore(deps): update dependency tar-fs@&gt;&#x3d;3.0.0 &lt;3.0.9 to >=3.1.2 (#5197)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-09 23:36:13 +00:00
homarr-renovate[bot] 217a9fe864 chore(deps): update dependency conventional-changelog-conventionalcommits to ^9.3.0 (#5195)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-09 22:38:39 +00:00
homarr-renovate[bot] 4a2cfcd8b5 chore(deps): update dependency fastify to v5.8.1 [security] (#5191)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-08 22:27:31 +00:00
homarr-renovate[bot] a682cc430b chore(deps): update docker/login-action action to v4 (#5192)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-08 21:40:47 +01:00
Meier Lukas dabe96bd5e feat(boards): show supported integrations in widget selection (#5187)
* feat(boards): show supported integrations in widget selection

* fix: place supported integrations directly above add button
2026-03-08 19:05:23 +01:00
homarr-crowdin[bot] 04e7a202d0 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-08 17:42:03 +00:00
homarr-renovate[bot] 5159d9f0e7 fix(deps): update dependency fast-xml-parser to ^5.4.2 (#5190)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-08 17:40:22 +00:00
homarr-renovate[bot] 3778338e34 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.5 [security] (#5171)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-07 11:22:54 +00:00
SergioandMeier Lukas 9a878af414 fix(image-proxy): hash full URL and headers deterministically (#5184)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-07 10:38:47 +01:00
homarr-update-contributors[bot] 4eece0d607 chore: update integrations list readme (#5186)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-03-07 08:51:42 +00:00
Manuel cdd90b8aa0 feat: add immich integration and widget (#5165)
* feat: add immich integration and widget

* feat: use sdk
2026-03-07 09:39:31 +01:00
homarr-renovate[bot] 6aaaf31d8b fix(deps): update dependency @tabler/icons-react to ^3.38.0 (#5182)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-06 22:39:41 +00:00
homarr-renovate[bot] df08046cdf chore(deps): update dependency conventional-changelog-conventionalcommits to ^9.2.0 (#5179)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-06 22:37:37 +00:00
Meier Lukas 340399597b chore(docs): update sitemap 2026-03-06 23:30:00 +01:00
homarr-releases[bot] 671e5621ad chore: update bug report template (#5177)
Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
2026-03-06 20:52:42 +01:00
Releases Homarr 4da8734ff3 chore(release): 1.55.0 [skip ci] 2026-03-06 19:35:05 +00:00
homarr-releases[bot] 9807afcec7 chore(release): automatic release v1.55.0 2026-03-06 19:33:44 +00:00
homarr-renovate[bot] c2f2f96bc7 chore(deps): update dependency @semantic-release/npm to ^13.1.5 (#5175)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-06 16:50:27 +00:00
homarr-renovate[bot] bc2a532a03 fix(deps): update trpc monorepo to ^11.11.0 (#5174)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-06 12:07:35 +00:00
homarr-renovate[bot] 905b7954ca chore(deps): update dependency brace-expansion@&gt;&#x3d;2.0.0 &lt;&#x3d;2.0.1 to >=5.0.4 (#5166)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-05 17:25:57 +00:00
homarr-renovate[bot] e248db4508 chore(deps): update peter-evans/create-pull-request action to v8 (#5053)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-05 17:29:49 +01:00
homarr-renovate[bot] 2893152377 chore(deps): update dependency @types/pg to ^8.18.0 (#5173)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-05 16:28:46 +00:00
homarr-renovate[bot] 751fb35f90 chore(deps): update dependency @types/node to ^24.11.0 (#5172)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-05 16:27:57 +00:00
homarr-renovate[bot] 58a90d3fc5 chore(deps): update dependency brace-expansion@&gt;&#x3d;1.0.0 &lt;&#x3d;1.1.11 to v5 (#5074)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 20:41:55 +01:00
homarr-renovate[bot] ff1159943c fix(deps): update dependency swagger-ui-react to ^5.32.0 (#5167)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 19:35:24 +00:00
homarr-renovate[bot] 663789c891 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.6 (#5170)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 19:34:20 +00:00
homarr-renovate[bot] 91015484bd chore(deps): update dependency @types/node to ^24.10.15 (#5163)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 19:32:02 +00:00
homarr-renovate[bot] ec45aacc63 fix(deps): update dependency ldapts to v8.1.7 (#5168)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 19:29:45 +00:00
homarr-renovate[bot] 1c06e562c3 fix(deps): update dependency ioredis to v5.10.0 (#5169)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-04 19:28:45 +00:00
homarr-renovate[bot] 4717a5724d fix(deps): update dependency mysql2 to v3.18.2 (#5164)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-03 22:38:04 +00:00
homarr-update-contributors[bot]andMeier Lukas 8f86944014 chore: update integrations list readme (#5162)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-03 22:41:25 +01:00
ManuelandMeier Lukas 0e29a2fce1 feat: add seerr integration (#5139)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-03-03 19:53:50 +01:00
homarr-crowdin[bot] 249a9264e6 chore(lang): update translations from crowdin (#5144)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-03-03 19:27:41 +01:00
homarr-renovate[bot] 4763908b5d chore(deps): update dependency @types/node to ^24.10.14 (#5155)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-03 13:07:37 +00:00
homarr-renovate[bot] 8bf2a43e06 fix(deps): update dependency mysql2 to v3.18.1 (#5152)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-03 11:40:38 +00:00
homarr-renovate[bot] bcb626600b chore(deps): update pnpm to v10.30.3 (#5157)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-03 10:47:47 +00:00
homarr-renovate[bot] be543dadb6 chore(deps): update dependency hono@&lt;4.6.5 to >=4.12.3 [security] (#5095)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 22:29:59 +00:00
homarr-renovate[bot] eb2f85f6f8 fix(deps): update dependency fast-xml-parser to ^5.4.1 (#5150)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 20:49:19 +00:00
homarr-renovate[bot] a10807a6c4 chore(deps): update node.js to v24.14.0 (#5151)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 19:47:26 +00:00
homarr-renovate[bot] 3df52f4013 chore(deps): update pnpm to v10.30.2 (#5146)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 18:59:12 +00:00
homarr-renovate[bot] 0b0fb1c579 fix(deps): update dependency pg to ^8.19.0 (#5153)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 17:54:46 +00:00
homarr-renovate[bot] 5971af91a8 chore(deps): update node.js (#5147)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-03-02 06:00:09 +00:00
homarr-renovate[bot] ac3b4e7de0 fix(deps): update dependency typescript-eslint to ^8.56.1 (#5142)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-28 18:42:59 +00:00
homarr-renovate[bot] 52792af186 fix(deps): update dependency mysql2 to v3.18.0 (#5141)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-28 17:34:47 +00:00
homarr-renovate[bot] 66ad67eced fix(deps): update dependency mysql2 to v3.17.5 (#5140)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-28 09:35:09 +00:00
homarr-renovate[bot] 1161bbd038 chore(deps): update dependency fast-xml-parser to v5.3.8 [security] (#5137)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-28 07:30:28 +00:00
homarr-releases[bot]andMeier Lukas 3322e82aab chore: update bug report template (#5136)
* chore: update bug report template

* fix: ci issues

* chore: update docs sitemap

---------

Co-authored-by: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-02-27 21:21:49 +01:00
Releases Homarr b6aa3afc6f chore(release): 1.54.0 [skip ci] 2026-02-27 19:33:48 +00:00
homarr-releases[bot] b959cac88f chore(release): automatic release v1.54.0 2026-02-27 19:32:47 +00:00
Meier Lukas 91fc5a5c74 Merge commit from fork
* fix(security): restrict access to integrations to authenticated users

* chore: github is broken
2026-02-27 19:24:24 +01:00
Meier Lukas fce970c706 Merge commit from fork
* fix(security): restrict rss-feed urls based on authentication

* fix: lint issues

* fix: incrase the limit to 100
2026-02-27 19:13:43 +01:00
homarr-update-contributors[bot] 9c6b2505a4 chore: update integrations list readme (#5134)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-02-27 16:09:00 +00:00
ManuelandMeier Lukas d999f37975 feat: add slskd integration (#5088)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-02-27 17:04:27 +01:00
ManuelandMeier Lukas 91846bc000 feat: add glances integration (#5102)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-02-27 16:57:29 +01:00
Meier Lukas c75c38e391 ci: on-release not triggered (#5058) 2026-02-27 16:43:39 +01:00
homarr-renovate[bot] cc63edf400 chore(deps): update dependency brace-expansion@&gt;&#x3d;2.0.0 &lt;&#x3d;2.0.1 to >=5.0.3 (#5133)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-27 13:09:40 +00:00
homarr-renovate[bot] 2ba6620343 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.59.0 [security] (#5131)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-27 09:44:06 +00:00
homarr-crowdin[bot] 9c79a3bbcd chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-27 08:06:47 +00:00
homarr-renovate[bot] cfaf82cd04 fix(deps): update dependency isomorphic-dompurify to v3 (#5130)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-26 20:28:32 +01:00
homarr-crowdin[bot] 3f01d59180 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-26 19:17:51 +00:00
homarr-renovate[bot] 12ba14bb3f chore(deps): update dependency eslint to ^9.39.3 (#5127)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 14:58:57 +00:00
homarr-renovate[bot] f72ffb6558 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.58.0 (#5126)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 13:14:01 +00:00
homarr-renovate[bot] 7ca38c3a78 fix(deps): update dependency mysql2 to v3.17.4 (#5123)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 11:00:55 +00:00
homarr-renovate[bot] 51585c6413 fix(deps): update dependency swagger-ui-react to ^5.31.2 (#5124)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 10:59:59 +00:00
homarr-renovate[bot] 6861839b65 fix(deps): update dependency fast-xml-parser to ^5.3.7 (#5122)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 06:08:40 +00:00
homarr-renovate[bot] 98488b55cd chore(deps): update pnpm to v10.30.1 (#5120)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 05:00:22 +00:00
homarr-renovate[bot] c3a4051007 fix(deps): update dependency @tabler/icons-react to ^3.37.1 (#5121)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-25 02:20:40 +00:00
homarr-renovate[bot] ba860193d7 fix(deps): update dependency @tabler/icons-react to ^3.37.0 (#5119)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-24 23:41:16 +00:00
homarr-renovate[bot] 908bced0df fix(deps): update dependency glob to ^13.0.6 (#5117)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-24 19:10:46 +00:00
homarr-renovate[bot] 42e53261ef fix(deps): update dependency mysql2 to v3.17.3 (#5116)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-24 16:07:35 +00:00
homarr-renovate[bot] 4aad0873ba fix(deps): update dependency jotai to ^2.18.0 (#5115)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-24 02:18:50 +00:00
homarr-crowdin[bot] fef3d8eac2 chore(lang): updated translations from crowdin
* chore(lang): update translations from crowdin

* chore(lang): update translations from crowdin

---------

Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-23 19:46:27 +00:00
homarr-renovate[bot] e3c8174bdc fix(deps): update testcontainers-node monorepo to ^11.12.0 (#5110)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-23 17:57:29 +00:00
homarr-renovate[bot] 3d2bc82a33 fix(deps): update tiptap monorepo to v3.20.0 (#5112)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-23 11:01:24 +00:00
homarr-renovate[bot] 61118d7a5e chore(deps): update pnpm to v10.30.0 (#5108)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 17:33:12 +00:00
homarr-renovate[bot] 02ec0898ef fix(deps): update dependency glob to ^13.0.5 (#5109)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 16:38:52 +00:00
homarr-renovate[bot] ea0a411c81 fix(deps): update dependency glob to ^13.0.4 (#5107)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 04:57:16 +00:00
homarr-renovate[bot] 210d46b43f fix(deps): update dependency swagger-ui-react to ^5.31.1 (#5101)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 04:57:00 +00:00
homarr-renovate[bot] 8bac6e1c5a fix(deps): update dependency typescript-eslint to ^8.56.0 (#5103)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 02:23:43 +00:00
homarr-renovate[bot] 15c7fc5ae8 fix(deps): update dependency mysql2 to v3.17.2 (#5104)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 02:21:23 +00:00
homarr-renovate[bot] ee6266707f fix(deps): update dependency @ctrl/qbittorrent to ^9.11.2 (#5106)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-22 02:20:02 +00:00
homarr-renovate[bot] dacbcce179 fix(deps): update dependency @ctrl/deluge to ^7.5.2 (#5105)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-21 23:31:41 +00:00
homarr-renovate[bot] d67c2db886 fix(deps): update dependency next-intl to v4.8.3 (#5100)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-21 09:39:00 +00:00
homarr-renovate[bot] 193d4d2e2a fix(deps): update dependency @ctrl/qbittorrent to ^9.11.1 (#5097)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-21 09:38:33 +00:00
homarr-renovate[bot] 53d46257ce fix(deps): update dependency @ctrl/deluge to ^7.5.1 (#5098)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-21 08:39:31 +00:00
homarr-renovate[bot] b8f9b4cf1d fix(deps): update mantine monorepo to ^8.3.15 (#5099)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-21 07:40:27 +00:00
Releases Homarr 37cfc75e51 chore(release): 1.53.2 [skip ci] 2026-02-20 19:36:56 +00:00
homarr-releases[bot] e714ebf87d chore(release): automatic release v1.53.2 2026-02-20 19:36:01 +00:00
Meier Lukas 8c4be2fbe8 fix(analytics): restrict publishing to every week (#5028) 2026-02-20 17:44:02 +01:00
homarr-renovate[bot] 24560cb93f fix(deps): update turbo monorepo to ^2.8.9 (#5092)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-20 13:08:07 +00:00
homarr-renovate[bot] 4183ea67c8 chore(deps): update dependency jsdom to ^28.1.0 (#5093)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-20 13:07:17 +00:00
homarr-update-contributors[bot] 98662a5daa chore: update contributors (#5051)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-02-20 12:49:42 +00:00
homarr-renovate[bot] 840d1107ec fix(deps): update dependency tsdav to ^2.1.8 (#5090)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 14:56:26 +00:00
homarr-renovate[bot] ac5bc70a5d fix(deps): update dependency fast-xml-parser to ^5.3.6 (#5089)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 11:46:36 +00:00
homarr-renovate[bot] 6be7cb6d1a chore(deps): update dependency brace-expansion@&gt;&#x3d;2.0.0 &lt;&#x3d;2.0.1 to v5 (#5075)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 12:05:48 +01:00
homarr-renovate[bot] b4186a3d0a chore(deps): update dependency vite-tsconfig-paths to ^6.1.1 (#5073)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 10:57:56 +00:00
homarr-renovate[bot] 8fcd73ff08 chore(deps): update dependency fast-xml-parser to v5.3.6 [security] (#5080)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 11:56:25 +01:00
homarr-renovate[bot] bb9da3007e fix(deps): update dependency react-error-boundary to ^6.1.1 (#5086)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 08:53:18 +00:00
homarr-renovate[bot] 475f14dc31 fix(deps): update dependency mysql2 to v3.17.1 (#5082)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 02:25:18 +00:00
homarr-renovate[bot] 46ba48fb20 fix(deps): update dependency dotenv to ^17.3.1 (#5081)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-19 02:23:28 +00:00
homarr-renovate[bot] bd6b0d7e5e chore(deps): update dependency @semantic-release/github to ^12.0.6 (#5077)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-18 23:38:34 +00:00
homarr-renovate[bot] dcae437fc5 fix(deps): update turbo monorepo to ^2.8.8 (#5084)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-18 22:42:44 +00:00
homarr-renovate[bot] 7e8f7447a5 chore(deps): update pnpm to v10.29.3 (#5070)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 21:45:31 +00:00
homarr-renovate[bot] 1e822fbe0c fix(deps): update dependency dotenv to ^17.3.0 (#5079)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 20:52:45 +00:00
homarr-renovate[bot] 4e1baa5703 fix(deps): update dependency ioredis to v5.9.3 (#5076)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 20:49:50 +00:00
homarr-renovate[bot] c6c48ea6e5 fix(deps): update turbo monorepo to ^2.8.7 (#5071)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 19:21:10 +00:00
homarr-renovate[bot] ba0ed77bb0 fix(deps): update dependency glob to ^13.0.3 (#5078)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 19:20:56 +00:00
homarr-renovate[bot] 1b8dde98d2 fix(deps): update dependency @tanstack/react-query to ^5.90.21 (#5067)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 18:06:26 +00:00
homarr-renovate[bot] 71fbb512f4 chore(deps): update node.js to v24.13.1 (#5055)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-17 17:04:32 +00:00
homarr-renovate[bot] 211a4dea05 chore(deps): update dependency @types/react to v19.2.14 (#5069)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-16 13:13:35 +00:00
homarr-renovate[bot] fcb020c191 fix(deps): update dependency mysql2 to v3.17.0 (#5066)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-16 11:51:45 +00:00
homarr-renovate[bot] 50601d5379 fix(deps): update dependency glob to ^13.0.2 (#5065)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-16 11:48:41 +00:00
homarr-renovate[bot] b04aa81490 chore(deps): update dependency @types/prismjs to ^1.26.6 (#5068)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-16 10:58:47 +00:00
homarr-renovate[bot] db14d98d19 fix(deps): update dependency drizzle-kit to ^0.31.9 (#5059)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-15 23:36:39 +00:00
homarr-renovate[bot] d4188120e1 chore(deps): update dependency @vitejs/plugin-react to ^5.1.4 (#5063)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-15 23:35:43 +00:00
homarr-renovate[bot] c36e947935 fix(deps): update turbo monorepo to ^2.8.5 (#5064)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-15 22:34:05 +00:00
homarr-renovate[bot] 56ecce2541 fix(deps): update dependency typescript-eslint to ^8.55.0 (#5061)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-15 02:33:11 +00:00
homarr-renovate[bot] 116eafa361 chore(deps): update pnpm to v10.29.2 (#5056)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-14 23:31:58 +00:00
homarr-renovate[bot] bc7ec63f85 fix(deps): update trpc monorepo to ^11.10.0 (#5062)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-14 22:32:34 +00:00
Releases Homarr 80fbbda111 chore(release): 1.53.1 [skip ci] 2026-02-13 19:42:07 +00:00
homarr-releases[bot] 72fcae1b85 chore(release): automatic release v1.53.1 2026-02-13 19:41:04 +00:00
Meier Lukas be1a26a98d fix(seerr): use reasonable limits for amount of returned entries (#5001) 2026-02-13 19:23:35 +01:00
homarr-renovate[bot] 30f561f85a fix(deps): update dependency fast-xml-parser to ^5.3.5 (#5050)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-13 15:49:24 +00:00
Meier Lukas 661d738302 ci: on-release pipeline no longer triggering and bug-report template not updated (#5048) 2026-02-13 15:43:48 +01:00
homarr-renovate[bot] 8002882979 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.9 (#5052)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-13 13:09:10 +00:00
homarr-renovate[bot] 5bd6cceaf1 chore(deps): update dependency @types/node to ^24.10.12 (#5045)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-13 07:18:22 +00:00
Meier Lukas 60fcb71bd2 fix(sections): dynamic sections vanish when adding category (#5046) 2026-02-13 08:05:15 +01:00
homarr-renovate[bot] 175d7d6324 chore(deps): update pnpm to v10.29.1 (#5043)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 19:58:05 +00:00
homarr-renovate[bot] 9e8701171b chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.3 (#5031)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 19:46:18 +01:00
homarr-renovate[bot] 6568c22d86 chore(deps): update dependency esbuild to ^0.27.3 (#5030)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 19:46:02 +01:00
homarr-renovate[bot] e1a79afaaa chore(deps): update dependency vite-tsconfig-paths to ^6.1.0 (#5042)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 18:29:20 +00:00
homarr-renovate[bot] e561fc550f fix(deps): update dependency isomorphic-dompurify to ^2.36.0 (#5041)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 09:58:55 +00:00
homarr-renovate[bot] f2f16f0502 chore(deps): update dependency @semantic-release/github to ^12.0.5 (#5039)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-12 05:04:44 +00:00
homarr-renovate[bot] c92fd3a9ca chore(deps): update dependency @semantic-release/github to ^12.0.4 (#5037)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-11 22:38:11 +00:00
homarr-renovate[bot] 4dc04bb58b chore(deps): update dependency @semantic-release/npm to ^13.1.4 (#5035)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-11 20:47:43 +00:00
homarr-renovate[bot] d694b1a541 fix(deps): update dependency tsdav to ^2.1.7 (#5033)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-11 19:16:22 +00:00
homarr-renovate[bot] 0fff39ee1c chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.8 (#5032)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-11 19:15:27 +00:00
homarr-renovate[bot] 6efabd4368 fix(deps): update dependency video.js to ^8.23.7 (#5034)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-11 18:03:26 +00:00
homarr-renovate[bot] 18e16d687f fix(deps): update dependency fastify to ^5.7.4 (#5027)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 21:54:36 +00:00
homarr-renovate[bot] e8c7f45476 fix(deps): update dependency dotenv to ^17.2.4 (#5029)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 21:04:17 +00:00
homarr-renovate[bot] 7bf5bbd035 chore(deps): update dependency jsdom to v28 (#5003)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 20:28:22 +01:00
homarr-renovate[bot]andMeier Lukas 29d9a9d288 chore(deps): update dependency fastify to v5.7.3 [security] (#4994)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-02-10 20:05:12 +01:00
homarr-renovate[bot] 69d90c1ece chore(deps): update dependency @types/node to ^24.10.11 (#5025)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 15:07:49 +00:00
homarr-renovate[bot] 5946e6c719 fix(deps): update dependency @ianvs/prettier-plugin-sort-imports to ^4.7.1 (#5021)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 13:25:48 +00:00
homarr-renovate[bot] 74753c8918 chore(deps): update dependency @types/react to v19.2.13 (#5024)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 13:25:09 +00:00
homarr-renovate[bot] ef4ed16dc4 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.5 [security] (#5023)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 13:18:20 +00:00
homarr-renovate[bot] 49570417d4 chore(deps): update dependency @types/react to v19.2.12 (#5022)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-10 10:12:12 +00:00
homarr-renovate[bot] 98283ff526 chore(deps): update dependency @types/react to v19.2.11 (#5020)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-09 11:52:32 +00:00
homarr-renovate[bot] da965668d0 fix(deps): update dependency jotai to ^2.17.1 (#5019)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-09 05:08:24 +00:00
homarr-renovate[bot] c92d487cea fix(deps): update dependency ldapts to v8.1.6 (#5018)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-09 02:31:43 +00:00
homarr-crowdin[bot] 81cecbfb57 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-09 01:11:26 +00:00
homarr-renovate[bot] f1d2f07f38 fix(deps): update turbo monorepo to ^2.8.3 (#5016)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 23:40:57 +00:00
homarr-renovate[bot] 04b35980f5 fix(deps): update dependency mysql2 to v3.16.3 (#5014)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 18:47:39 +00:00
homarr-renovate[bot] 3b21c3ef76 fix(deps): update dependency glob to ^13.0.1 (#5013)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 18:45:16 +00:00
homarr-renovate[bot] ad41a918ef fix(deps): update tiptap monorepo to v3.19.0 (#5012)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 17:35:55 +00:00
homarr-crowdin[bot] 0b654aeafa chore(lang): update translations from crowdin (#5002)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-08 14:03:04 +01:00
homarr-renovate[bot] 9e9b904f69 chore(deps): update dependency @types/node to ^24.10.10 (#5011)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 09:39:25 +00:00
homarr-renovate[bot] b479fea6eb fix(deps): update turbo monorepo to ^2.8.2 (#5010)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 06:59:58 +00:00
homarr-renovate[bot] 4a86361134 fix(deps): update dependency @octokit/auth-app to ^8.2.0 (#5009)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-08 02:45:18 +00:00
homarr-renovate[bot] b67fecd396 fix(deps): update dependency next-intl to v4.8.2 (#5005)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-07 11:30:58 +00:00
homarr-renovate[bot] 075ddb7a83 chore(deps): update dependency @vitejs/plugin-react to ^5.1.3 (#5006)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-07 10:38:18 +00:00
homarr-renovate[bot] c3932b18f0 fix(deps): update dependency ldapts to v8.1.5 (#5004)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-07 09:41:54 +00:00
Releases Homarr 6dd13f6dea chore(release): 1.53.0 [skip ci] 2026-02-06 19:37:59 +00:00
homarr-releases[bot] 129d96f607 chore(release): automatic release v1.53.0 2026-02-06 19:37:00 +00:00
homarr-renovate[bot] 0fafa505ac fix(deps): update mantine monorepo to ^8.3.14 (#4998)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-06 13:10:10 +00:00
homarr-crowdin[bot] 5e085b0da0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-06 01:04:58 +00:00
homarr-renovate[bot] c2d9f18e4e fix(deps): update dependency ldapts to v8.1.4 (#4993)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-05 14:50:32 +00:00
homarr-renovate[bot] 4209f7c70e fix(deps): update dependency video.js to ^8.23.6 (#4992)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-05 11:43:25 +00:00
ajnart 10848db595 feat(analytics): consolidate server analytics into single comprehensive Umami event (#4938)
* feat(analytics): consolidate server analytics into single Umami event

- Replace multiple separate events with single 'server-analytics' event
- Add comprehensive metrics: Homarr version, database type, Docker/K8s status
- Add auth providers status (credentials, OIDC, LDAP)
- Add counts for users, boards, groups, apps, widgets, sections, integrations
- Add counts for search engines, icon repos, icons, API keys, invites, media
- Add counts for layouts, item layouts, section layouts, cron job configs
- Include per-integration-kind breakdown (integration_sonarr, etc.)
- Add required dependencies: @homarr/auth, @homarr/common, @homarr/docker

* refactor(ui): simplify analytics settings to single toggle

- Remove individual toggles for widget/integration/user data
- Keep only the main 'Enable analytics' toggle
- All data is now collected when analytics are enabled
- Update both init settings and manage settings pages

* docs(i18n): update analytics description with collected data details

- Explain all data points collected when analytics are enabled
- List: version, DB type, Docker/K8s, auth methods, counts
- Clarify that no personal info, URLs, or names are collected

* chore(deps): update pnpm-lock.yaml for analytics package dependencies
2026-02-05 09:54:41 +01:00
homarr-renovate[bot] 43b6246876 fix(deps): update turbo monorepo to ^2.8.1 (#4991)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 22:37:10 +00:00
homarr-renovate[bot] bd07570c8d chore(deps): update semantic-release monorepo (#4990)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 21:41:31 +00:00
homarr-renovate[bot] 62b6939b92 fix(deps): update dependency next-intl to v4.8.1 (#4986)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 19:46:39 +00:00
homarr-renovate[bot] c3071a3c95 fix(deps): update dependency pg to ^8.18.0 (#4989)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 19:00:45 +00:00
homarr-renovate[bot] 1115ad1364 fix(deps): update dependency @tanstack/react-query-devtools to ^5.91.3 (#4985)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 09:51:43 +00:00
homarr-renovate[bot] 4cfd2aca94 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.57.1 (#4984)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 08:49:28 +00:00
homarr-renovate[bot] 460d53cafa fix(deps): update dependency fast-xml-parser to ^5.3.4 (#4982)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-04 04:47:35 +00:00
homarr-crowdin[bot] 0b88d5703e chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-03 01:09:22 +00:00
homarr-renovate[bot] 054ca57188 fix(deps): update turbo monorepo to ^2.8.0 (#4978)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 18:54:38 +00:00
homarr-renovate[bot] c3a7ab52ee fix(deps): update dependency next-intl to v4.8.0 (#4977)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 17:46:05 +00:00
homarr-crowdin[bot] 8ee1e32e83 chore(lang): update translations from crowdin (#4954)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-02-02 17:24:22 +01:00
homarr-renovate[bot] 24e24dc634 fix(deps): update tiptap monorepo to v3.18.0 (#4975)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 13:09:45 +00:00
homarr-renovate[bot] 6303aec209 chore(deps): update dependency fast-xml-parser to v5.3.4 [security] (#4974)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 07:53:26 +00:00
homarr-renovate[bot] 7c3fe3d6d4 fix(deps): update nextjs monorepo to v16.1.6 (#4969)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 05:05:02 +00:00
homarr-renovate[bot] e67483fea5 fix(deps): update dependency jotai to ^2.17.0 (#4972)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 02:29:58 +00:00
homarr-renovate[bot] d1f7e04a2a chore(deps): update dependency proxmox-api&gt;undici to v7.19.2 (#4967)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-02 02:28:37 +00:00
homarr-renovate[bot] 0a2f71bd31 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.57.0 (#4963)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-01 23:34:08 +00:00
homarr-renovate[bot] aeb6e0f406 fix(deps): update trpc monorepo to ^11.9.0 (#4970)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-01 22:34:19 +00:00
homarr-renovate[bot] df264f58d0 chore(deps): update dependency @types/react to v19.2.10 (#4964)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-01 19:31:41 +00:00
homarr-renovate[bot] 71aa5b660b chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.4 (#4966)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-02-01 18:42:55 +00:00
homarr-renovate[bot] 5c6eafb272 fix(deps): update dependency mysql2 to v3.16.2 (#4961)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 21:30:15 +00:00
homarr-renovate[bot] e88d126355 fix(deps): update dependency typescript-eslint to ^8.54.0 (#4958)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 19:28:39 +00:00
homarr-renovate[bot] d3e0b47875 fix(deps): update react monorepo to v19.2.4 (#4960)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 18:42:46 +00:00
homarr-renovate[bot] ec40309cde fix(deps): update dependency @next/eslint-plugin-next to v16.1.5 (#4959)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 18:42:21 +00:00
homarr-renovate[bot] a3ba70177b chore(deps): update pnpm to v10.28.2 (#4956)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 15:32:24 +00:00
homarr-renovate[bot] 0eab26cdac fix(deps): update dependency fastify to ^5.7.2 (#4955)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-31 11:27:34 +00:00
homarr-renovate[bot] a9db68bd3e fix(deps): update dependency @paralleldrive/cuid2 to ^3.3.0 (#4952)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-30 21:36:03 +00:00
Releases Homarr d2c075517f chore(release): 1.52.0 [skip ci] 2026-01-30 19:32:17 +00:00
homarr-releases[bot] fab80d5ab2 chore(release): automatic release v1.52.0 2026-01-30 19:31:27 +00:00
Meier Lukasandajnart 8811af5e6e Merge commit from fork
* fix(security): resolve ssrf issue with simple ping

* refactor: improve testability of app-access-control and fix tests

* fix: unnecessary space

Co-authored-by: ajnart <thomas@ajnart.fr>

---------

Co-authored-by: ajnart <thomas@ajnart.fr>
2026-01-30 18:31:13 +01:00
Meier Lukas 9ba82133da feat(installations): support docker secrets file for encryption key (#4946) 2026-01-30 17:28:08 +01:00
homarr-renovate[bot] 67e1b9bdc3 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.3 (#4950)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-30 14:52:11 +00:00
homarr-renovate[bot] 08711a551f chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.7 [security] (#4930)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-30 14:01:18 +00:00
homarr-update-contributors[bot] ef1197b382 chore: update contributors (#4949)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-30 12:45:40 +00:00
homarr-crowdin[bot] 26144e22f4 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-30 01:05:18 +00:00
homarr-renovate[bot] e078237e31 fix(deps): update turbo monorepo to ^2.7.6 (#4947)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-29 22:36:34 +00:00
Meier Lukas 1a33d8ccee chore: ignore .turbo directory for docker build 2026-01-29 20:37:01 +01:00
homarr-renovate[bot] b354085c7a fix(deps): update tiptap monorepo to v3.17.1 (#4945)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-29 18:56:43 +00:00
homarr-crowdin[bot] a43429b351 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-29 18:49:45 +00:00
homarr-renovate[bot] 203ebbbd4e chore(deps): update dependency proxmox-api&gt;undici to v7.19.1 (#4944)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-29 15:44:22 +00:00
homarr-renovate[bot] 0bdc76cc23 chore(deps): update dependency vite-tsconfig-paths to ^6.0.5 (#4941)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-28 22:35:54 +00:00
homarr-renovate[bot] 840940bab6 fix(deps): update dependency @tanstack/react-query to ^5.90.20 (#4939)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-28 14:38:30 +00:00
homarr-renovate[bot] d03026187c fix(deps): update tiptap monorepo to v3.17.0 (#4940)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-28 13:58:20 +00:00
homarr-renovate[bot] aeb1df1229 fix(deps): update dependency next to v16.1.5 [security] (#4937)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 21:21:21 +00:00
homarr-renovate[bot] dea3f02e6f chore(deps): update vitest monorepo to ^4.0.18 (#4929)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 20:40:04 +01:00
homarr-renovate[bot] 6fd0fb5508 chore(deps): update dependency prettier-plugin-packagejson to v3 (#4910)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 17:16:26 +01:00
homarr-renovate[bot] ce72b21a04 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.56.0 (#4928)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 06:43:47 +00:00
homarr-renovate[bot] b1658a5d01 fix(deps): update dependency sass to ^1.97.3 (#4927)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 03:55:45 +00:00
homarr-renovate[bot] 4df63eacc5 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.5 (#4926)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-27 02:02:21 +00:00
homarr-renovate[bot] 3cca339881 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.55.3 (#4919)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-26 20:35:32 +00:00
homarr-renovate[bot] fd18cf79cc chore(deps): update dependency proxmox-api&gt;undici to v7.19.0 (#4922)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-26 19:31:50 +00:00
homarr-renovate[bot] a727b8e323 fix(deps): update dependency prettier to ^3.8.1 (#4925)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-26 18:45:54 +00:00
homarr-renovate[bot] 21c3882189 chore(deps): update dependency @types/dockerode to ^4.0.1 (#4918)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-26 04:08:39 +00:00
homarr-renovate[bot] d0c27b22ef chore(deps): update dependency @types/react to v19.2.9 (#4914)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-25 19:25:21 +00:00
homarr-renovate[bot] a50a29a778 fix(deps): update dependency pg to ^8.17.2 (#4916)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-25 18:39:14 +00:00
homarr-renovate[bot] 23545101b6 fix(deps): update tiptap monorepo to v3.16.0 (#4912)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-25 12:52:13 +00:00
homarr-renovate[bot] f2eec74849 fix(deps): update mantine monorepo to ^8.3.13 (#4911)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-25 07:29:50 +00:00
homarr-renovate[bot] 99a2574d80 fix(deps): update nextjs monorepo to v16.1.4 (#4909)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-25 02:08:32 +00:00
homarr-crowdin[bot] 66bde23667 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-25 01:02:57 +00:00
homarr-renovate[bot] c58da00957 fix(deps): update dependency typescript-eslint to ^8.53.1 (#4904)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-24 17:26:34 +00:00
homarr-renovate[bot] 6700124ccd chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.55.2 (#4902)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-24 13:37:13 +00:00
homarr-renovate[bot] f428abc0ce chore(deps): update pnpm to v10.28.1 (#4903)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-24 12:50:35 +00:00
homarr-crowdin[bot] 16e3e5b90b chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-24 00:55:54 +00:00
Releases Homarr 86b6c1a788 chore(release): 1.51.0 [skip ci] 2026-01-23 19:24:52 +00:00
homarr-releases[bot] 4648741bcc chore(release): automatic release v1.51.0 2026-01-23 19:23:48 +00:00
homarr-update-contributors[bot] 5da5a83a41 chore: update integrations list readme (#4899)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-23 20:21:20 +01:00
homarr-renovate[bot] ff338e20a5 chore(deps): update dependency @types/node to ^24.10.9 (#4897)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-23 18:43:00 +00:00
Rhiz3KandMeier Lukas 81dac58005 feat(integrations): add Coolify integration and widget (#4789)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-23 19:09:53 +01:00
Meier Lukas 0ef3046d65 ci: typo in runner for validating prebuilt-debian with arm64 (#4896) 2026-01-23 18:54:02 +01:00
62caa71a48 feat(widgets): add disks widget (#4445)
Co-authored-by: ajnart <49837342+ajnart@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-23 16:23:42 +01:00
homarr-renovate[bot]andMeier Lukas 15119b66e9 chore(deps): update node.js to v24.13.0 (#4858)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-23 16:21:21 +01:00
homarr-renovate[bot]andMeier Lukas 41b02b63d9 fix(deps): update dependency react-error-boundary to ^6.1.0 (#4884)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-23 16:14:44 +01:00
homarr-renovate[bot]andMeier Lukas 63a0793c6e fix(deps): update dependency better-sqlite3 to ^12.6.2 (#4891)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-23 16:13:55 +01:00
homarr-crowdin[bot] 101c1fd819 chore(lang): update translations from crowdin (#4890)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-23 15:42:55 +01:00
homarr-renovate[bot] 09006c3169 chore(deps): update dependency prettier-plugin-packagejson to ^2.5.22 (#4894)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-23 14:34:56 +00:00
homarr-renovate[bot] 5a8e864630 fix(deps): update nextjs monorepo to v16.1.3 (#4889)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-23 13:50:18 +00:00
homarr-renovate[bot] fa84bd569f fix(deps): update dependency @tanstack/react-query to ^5.90.19 (#4888)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-23 12:56:49 +00:00
homarr-update-contributors[bot] e50ed15eb3 chore: update contributors (#4895)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-23 12:40:06 +00:00
homarr-renovate[bot] c847f6004d fix(deps): update turbo monorepo to ^2.7.5 (#4892)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-22 03:58:10 +00:00
homarr-renovate[bot] 40ee667832 fix(deps): update dependency mysql2 to v3.16.1 (#4886)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-21 09:40:26 +00:00
homarr-renovate[bot] 02e722aa45 fix(deps): update dependency fastify to ^5.7.1 (#4887)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-21 08:40:00 +00:00
homarr-crowdin[bot] 416e31fab6 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-21 00:58:31 +00:00
homarr-renovate[bot] e3ba1ee931 fix(deps): update dependency ioredis to v5.9.2 (#4881)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-20 15:39:59 +00:00
homarr-renovate[bot] fcd417198f fix(deps): update dependency pg to ^8.17.1 (#4877)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-20 14:39:00 +00:00
homarr-renovate[bot] b9bc9dd38d fix(deps): update dependency fastify to ^5.7.0 (#4882)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-20 13:55:34 +00:00
homarr-renovate[bot] 3ade915d35 fix(deps): update dependency prettier to ^3.8.0 (#4876)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-20 01:57:28 +00:00
homarr-renovate[bot] c6be8c5475 fix(deps): update nextjs monorepo to v16.1.2 (#4875)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-19 23:29:51 +00:00
Meier Lukas 1623fbaaeb perf(memory): lazy routers (#4868) 2026-01-19 22:37:05 +01:00
homarr-renovate[bot] b923891fac fix(deps): update dependency pg to ^8.17.0 (#4874)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-19 18:41:55 +00:00
homarr-renovate[bot] 624bd55b11 fix(deps): update dependency @tanstack/react-query to ^5.90.17 (#4873)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-19 06:48:02 +00:00
homarr-renovate[bot]andMeier Lukas 9d4fb9eb46 fix(deps): update dependency better-sqlite3 to ^12.6.0 (#4853)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-18 21:07:31 +01:00
homarr-renovate[bot] fa64b2c525 chore(deps): update dependency @types/dockerode to v4 (#4867)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-18 17:14:02 +01:00
homarr-renovate[bot] 2e58acc3bd fix(deps): update dependency jotai to ^2.16.2 (#4869)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-18 15:09:24 +00:00
homarr-renovate[bot] 939996f41e chore(deps): update dependency prettier-plugin-packagejson to ^2.5.21 (#4866)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-18 07:28:16 +00:00
homarr-crowdin[bot] fbad058712 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-18 01:02:11 +00:00
homarr-renovate[bot] 0c38e2f290 fix(deps): update turbo monorepo to ^2.7.4 (#4861)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-17 18:41:01 +00:00
homarr-renovate[bot] 31c68f43d5 chore(deps): update vitest monorepo to ^4.0.17 (#4862)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-17 18:40:14 +00:00
homarr-renovate[bot] f096476fc2 chore(deps): update babel monorepo to >=7.28.6 (#4864)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-17 18:39:50 +00:00
homarr-renovate[bot] e9020e68ec fix(deps): update dependency typescript-eslint to ^8.53.0 (#4863)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-17 17:26:06 +00:00
Releases Homarr be75c320f9 chore(release): 1.50.1 [skip ci] 2026-01-16 19:20:12 +00:00
homarr-releases[bot] 05ce9cf7a6 chore(release): automatic release v1.50.1 2026-01-16 19:19:19 +00:00
homarr-renovate[bot] a4a5d0ac51 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.4 [security] (#4846)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-16 14:26:55 +00:00
homarr-update-contributors[bot] 11c92929b1 chore: update contributors (#4857)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-16 13:03:27 +00:00
homarr-renovate[bot] 70f3ab21c1 chore(deps): update dependency @types/react to v19.2.8 (#4855)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-15 19:35:21 +00:00
homarr-renovate[bot] c3dc3f2eef chore(deps): update pnpm to v10.28.0 (#4851)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-15 19:33:38 +00:00
homarr-renovate[bot] 4f8b530294 chore(deps): update dependency @types/node to ^24.10.7 (#4852)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-15 18:57:32 +00:00
homarr-renovate[bot] c54d3498f3 chore(deps): update dependency vite-tsconfig-paths to ^6.0.4 (#4849)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-14 22:31:42 +00:00
homarr-renovate[bot] 275a346afa fix(deps): update mantine monorepo to ^8.3.12 (#4848)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-14 14:34:40 +00:00
homarr-renovate[bot] c24006dca6 fix(deps): update dependency react-error-boundary to ^6.0.3 (#4847)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-13 22:31:49 +00:00
homarr-renovate[bot] 5d00642268 fix(deps): update dependency ioredis to v5.9.1 (#4844)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-13 19:28:34 +00:00
homarr-crowdin[bot] b2798d7aca chore(lang): update translations from crowdin (#4834)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-13 20:21:03 +01:00
homarr-renovate[bot] b26cf0e65f fix(deps): update tiptap monorepo to v3.15.3 (#4843)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-12 15:36:08 +00:00
homarr-renovate[bot] 55c2666f9d fix(deps): update tiptap monorepo to v3.15.2 (#4842)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-12 12:59:38 +00:00
homarr-renovate[bot] 7fa990712b fix(deps): update dependency ldapts to v8.1.3 (#4841)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-12 09:41:50 +00:00
homarr-renovate[bot] 21db9618c6 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.3.1 (#4840)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-12 06:46:30 +00:00
homarr-renovate[bot] 07ba53165c fix(deps): update dependency sass to ^1.97.2 (#4835)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-11 18:38:22 +00:00
homarr-renovate[bot] 16733c2a0e fix(deps): update dependency undici to v7.18.2 (#4837)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-11 17:26:28 +00:00
homarr-renovate[bot] 33a3c857a6 chore(deps): update dependency proxmox-api&gt;undici to v7.18.2 (#4839)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-11 16:33:38 +00:00
homarr-renovate[bot] d479b63a80 fix(deps): update tiptap monorepo to v3.15.1 (#4838)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-11 12:52:08 +00:00
homarr-renovate[bot] 9043d8e4b8 chore(deps): update dependency proxmox-api&gt;undici to v7.18.1 (#4836)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-11 12:50:29 +00:00
homarr-renovate[bot] 629359e3e4 fix(deps): update dependency ws to ^8.19.0 (#4833)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 21:45:37 +00:00
homarr-renovate[bot] 50410fedb3 fix(deps): update turbo monorepo to ^2.7.3 (#4831)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 21:45:10 +00:00
homarr-renovate[bot] ab3ee4f78a fix(deps): update tiptap monorepo to v3.15.0 (#4832)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 20:32:53 +00:00
homarr-crowdin[bot] fe615755c7 chore(lang): update translations from crowdin (#4820)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-10 20:59:19 +01:00
homarr-renovate[bot] b76ab2961d fix(deps): update dependency undici to v7.18.0 (#4829)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 18:40:02 +00:00
homarr-renovate[bot] ab2703b32a chore(deps): update dependency proxmox-api&gt;undici to v7.18.0 (#4828)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 18:38:30 +00:00
homarr-renovate[bot] f67a915174 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.55.1 (#4824)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 18:38:05 +00:00
homarr-renovate[bot] fa8af6a453 fix(deps): update dependency typescript-eslint to ^8.52.0 (#4830)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 17:26:48 +00:00
homarr-renovate[bot] 155d4f2270 fix(deps): update dependency ioredis to v5.9.0 (#4827)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 14:27:50 +00:00
homarr-renovate[bot] 21a91b1489 fix(deps): update dependency undici to v7.17.0 (#4826)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 12:50:10 +00:00
homarr-renovate[bot] 0d8695feae chore(deps): update dependency proxmox-api&gt;undici to v7.17.0 (#4825)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 12:49:27 +00:00
homarr-renovate[bot] 0364e102cd fix(deps): update mantine monorepo to ^8.3.11 (#4822)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 06:39:58 +00:00
homarr-renovate[bot] e9ba102cf6 fix(deps): update dependency react-error-boundary to ^6.0.2 (#4821)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-10 04:42:22 +00:00
Releases Homarr 830e84d546 chore(release): 1.50.0 [skip ci] 2026-01-09 19:20:08 +00:00
homarr-releases[bot] 5b5aa3caac chore(release): automatic release v1.50.0 2026-01-09 19:19:08 +00:00
homarr-update-contributors[bot] 69fb4c6856 chore: update contributors (#4817)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-09 12:40:05 +00:00
a2a34124ae feat(users): add libravatar / gravatar support (#4277)
Co-authored-by: HeapReaper <kelivn@heapreaper.nl>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-09 13:10:52 +01:00
homarr-crowdin[bot] 717e17c9f8 chore(lang): update translations from crowdin (#4809)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-08 20:14:29 +01:00
homarr-renovate[bot] dabb2bb782 fix(deps): update dependency @tabler/icons-react to ^3.36.1 (#4812)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-07 14:33:10 +00:00
homarr-renovate[bot] 35042a783c fix(deps): update dependency next-intl to v4.7.0 (#4806)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-06 19:32:00 +00:00
homarr-renovate[bot] 9e63e3443a fix(deps): update dependency ldapts to v8.1.2 (#4805)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-06 19:30:33 +00:00
Matti AirasandClaude Opus 4.5 0dc61a88b8 feat(auth): extend API key authentication to tRPC endpoints (#4732)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 18:43:17 +01:00
homarr-renovate[bot] c8ecf5f0a1 fix(deps): update dependency ldapts to v8.1.0 (#4804)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-05 17:31:37 +00:00
homarr-renovate[bot] 413e846133 fix(deps): update dependency @tanstack/react-query to ^5.90.16 (#4799)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-05 16:36:01 +00:00
homarr-renovate[bot] 6e572e3fc5 chore(deps): update pnpm to v10.27.0 (#4802)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-05 15:53:40 +00:00
homarr-crowdin[bot] 96e2f4fcca chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-04 01:02:35 +00:00
homarr-renovate[bot] ea848bdd0b fix(deps): update dependency @tanstack/react-query to ^5.90.15 (#4794)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-03 22:27:38 +00:00
homarr-renovate[bot]andMeier Lukas f0a2551fdf fix(deps): update dependency typescript-eslint to ^8.51.0 (#4795)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-03 23:17:05 +01:00
homarr-renovate[bot]andMeier Lukas 35e0198b5d fix(deps): update dependency @tabler/icons-react to ^3.36.0 (#4707)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-03 21:49:56 +01:00
Meier Lukas c13e3a1d0a chore: adjust codeowners for renovate managed files to no owner instead of homarr-labs/none (#4792) 2026-01-03 21:22:57 +01:00
Releases Homarr 0270dae3d6 chore(release): 1.49.1 [skip ci] 2026-01-03 13:06:04 +00:00
homarr-releases[bot] 19a4bee334 chore(release): automatic release v1.49.1 2026-01-03 13:05:10 +00:00
Meier Lukas 60f9d4e6e6 fix(unraid): temperature of disks can be null (#4788) 2026-01-03 13:44:24 +01:00
Meier Lukas 7d3322576c fix(db): connection issue do to missing host and name of db when connecting with host (#4786) 2026-01-03 13:44:01 +01:00
homarr-renovate[bot] 1842e5fff5 fix(deps): update dependency ldapts to v8.0.36 (#4790)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-03 03:30:32 +00:00
homarr-renovate[bot] 1b70973084 fix(deps): update dependency react-error-boundary to ^6.0.1 (#4791)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-03 01:50:19 +00:00
Meier Lukas b4ac3fc346 chore: update docs sitemap 2026-01-02 22:46:00 +01:00
Meier Lukas 4904f5c270 chore: update bug_report template versions 2026-01-02 22:45:23 +01:00
Releases Homarr 15b4dfed0f chore(release): 1.49.0 [skip ci] 2026-01-02 19:14:39 +00:00
homarr-releases[bot] a853463ade chore(release): automatic release v1.49.0 2026-01-02 19:13:35 +00:00
homarr-update-contributors[bot] 9dd00370ff chore: update integrations list readme (#4784)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-02 19:58:13 +01:00
homarr-renovate[bot] fad478c549 fix(deps): update dependency @xterm/xterm to v6 (#4757)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-02 19:56:25 +01:00
ManuelandMeier Lukas 9b0dd6d6ce feat: unraid integration (#4439)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2026-01-02 19:54:47 +01:00
homarr-renovate[bot] acb0bc68d2 chore(deps): update dependency vite-tsconfig-paths to v6 (#4709)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-02 19:50:27 +01:00
homarr-renovate[bot] 45d2102d38 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.2 (#4735)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-02 19:23:07 +01:00
homarr-renovate[bot] 72baf965b4 chore(deps): update dependency esbuild to ^0.27.2 (#4734)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-02 19:23:01 +01:00
homarr-crowdin[bot] 808ace3983 chore(lang): update translations from crowdin (#4767)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2026-01-02 18:34:13 +01:00
homarr-renovate[bot] 1e5d38fd3c fix(deps): update tanstack-query monorepo (#4782)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-02 16:34:55 +00:00
homarr-update-contributors[bot] bf44a8ecb1 chore: update contributors (#4783)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2026-01-02 14:13:47 +00:00
homarr-renovate[bot] 236fa35f7e fix(deps): update dependency isomorphic-dompurify to ^2.35.0 (#4779)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-01 20:35:52 +00:00
homarr-renovate[bot] a004bfbb9e chore(deps): update dependency jsdom to ^27.4.0 (#4776)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-01 20:33:57 +00:00
homarr-renovate[bot] e574dd70f1 fix(deps): update dependency ldapts to v8.0.35 (#4768)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-01 20:33:15 +00:00
homarr-renovate[bot] 249d929435 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.3 (#4775)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-01 20:32:51 +00:00
homarr-renovate[bot] e40a11608c fix(deps): update testcontainers-node monorepo to ^11.11.0 (#4781)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-01-01 19:26:11 +00:00
homarr-renovate[bot] 1f1a5f2583 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.2 (#4770)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-31 04:45:58 +00:00
homarr-renovate[bot] d00270046a fix(deps): update dependency jotai to ^2.16.1 (#4772)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-31 03:35:42 +00:00
homarr-renovate[bot] 809bf559fe fix(deps): update dependency ldapts to v8.0.34 (#4765)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-29 21:27:36 +00:00
homarr-renovate[bot] 67600ff687 chore(deps): update pnpm to v10.26.2 (#4761)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-28 22:28:04 +00:00
homarr-renovate[bot] 9191430229 fix(deps): update turbo monorepo to ^2.7.2 (#4764)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-28 21:27:50 +00:00
homarr-renovate[bot] 49afb82446 fix(deps): update dependency ldapts to v8.0.32 (#4762)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-28 14:28:18 +00:00
Derek Mäekask f04f53759b fix: add orphaned status for containers with invalid stats (#4441)
- Add 'orphaned' container state to handle containers with null/undefined cpu_stats.online_cpus
- Display orphaned containers with gray badge in UI
- Prevent 'Cannot read properties of undefined (reading online_cpus)' error
- Add translations for 'orphaned' status in all supported languages
- Containers with invalid stats are now marked as orphaned instead of causing errors
2025-12-28 14:13:12 +01:00
homarr-renovate[bot] 7712ab410b fix(deps): update nextjs monorepo to v16.1.1 (#4759)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-27 19:24:09 +00:00
homarr-renovate[bot] 1c727e59af fix(deps): update dependency @xterm/addon-fit to v0.11.0 (#4756)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-27 18:40:08 +00:00
homarr-renovate[bot] 8b096939e4 fix(deps): update dependency ldapts to v8.0.31 (#4755)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-27 18:37:27 +00:00
homarr-renovate[bot] adaa8039dd fix(deps): update dependency typescript-eslint to ^8.50.1 (#4758)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-27 17:25:33 +00:00
Releases Homarr 5463402f5c chore(release): 1.48.0 [skip ci] 2025-12-26 19:17:04 +00:00
homarr-releases[bot] 5baa183718 chore(release): automatic release v1.48.0 2025-12-26 19:16:01 +00:00
homarr-renovate[bot] 93bf9ab84b fix(deps): update trpc monorepo to ^11.8.1 (#4750)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-26 12:50:49 +00:00
homarr-update-contributors[bot] 4ff98e3803 chore: update contributors (#4753)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-12-26 12:37:33 +00:00
homarr-renovate[bot] d8db0169a1 fix(deps): update turbo monorepo to ^2.7.1 (#4751)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-25 23:28:39 +00:00
homarr-renovate[bot] 96c2c0d604 fix(deps): update dependency ldapts to v8.0.30 (#4749)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-25 17:26:42 +00:00
Meier Lukas 5a57115ca0 feat(http): add proxy support (#4721) 2025-12-25 11:32:14 +01:00
homarr-renovate[bot] 707a4dad83 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.54.0 (#4748)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-25 10:31:00 +00:00
homarr-renovate[bot] 5dd7400684 fix(deps): update dependency ldapts to v8.0.29 (#4747)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-25 09:31:47 +00:00
homarr-renovate[bot] 6b774f47d0 fix(deps): update dependency sass to ^1.97.1 (#4746)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-24 22:28:25 +00:00
homarr-renovate[bot] adbe707c73 fix(deps): update tiptap monorepo to v3.14.0 (#4744)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-24 21:29:30 +00:00
homarr-renovate[bot] 75c545344a fix(deps): update dependency ldapts to v8.0.28 (#4743)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-24 21:27:03 +00:00
homarr-renovate[bot] 7c399f4073 chore(deps): update pnpm to v10.26.1 (#4742)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-24 20:31:05 +00:00
homarr-renovate[bot] 5d659a3ebb fix(deps): update turbo monorepo to ^2.7.0 (#4745)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-24 19:26:16 +00:00
homarr-renovate[bot] 99f2842a5a fix(deps): update nextjs monorepo to v16.1.0 (#4739)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-23 18:40:54 +00:00
homarr-renovate[bot] f34bdce644 fix(deps): update dependency mysql2 to v3.16.0 (#4731)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-23 16:23:11 +00:00
homarr-renovate[bot] 8891ac4239 fix(deps): update dependency ldapts to v8.0.27 (#4737)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-23 04:45:56 +00:00
homarr-crowdin[bot] 602c37574e chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-22 00:58:49 +00:00
homarr-renovate[bot] f4d782abef fix(deps): update dependency next-intl to v4.6.1 (#4730)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 17:25:42 +00:00
homarr-renovate[bot] a20b479a42 chore(deps): update vitest monorepo to ^4.0.16 (#4728)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 15:27:45 +00:00
homarr-renovate[bot] 68dc6844fd fix(deps): update dependency zod to ^4.2.1 (#4722)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 09:37:08 +00:00
homarr-renovate[bot] 88baad8143 fix(deps): update dependency sass to ^1.97.0 (#4726)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 09:34:37 +00:00
homarr-renovate[bot] ef12b2b5c2 fix(deps): update dependency ldapts to v8.0.25 (#4724)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 06:40:05 +00:00
homarr-renovate[bot] 551a7ea469 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.5 (#4723)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-21 06:39:51 +00:00
Manuel fbb5298cb0 feat: enable dns caching by default (#4706) 2025-12-20 21:07:57 +01:00
homarr-renovate[bot] 2dc8feae7e fix(deps): update dependency typescript-eslint to ^8.50.0 (#4720)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 17:25:20 +00:00
homarr-renovate[bot] 6e39524f9d fix(deps): update dependency zod to ^4.2.0 (#4712)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 13:37:00 +00:00
homarr-renovate[bot] b699f28177 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.3.0 (#4713)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 13:35:32 +00:00
homarr-renovate[bot] de39c7e85b chore(deps): update pnpm to v10.26.0 (#4715)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 12:48:32 +00:00
homarr-renovate[bot] e9c33cdd5a chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.4 (#4714)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 12:47:56 +00:00
homarr-renovate[bot] 648f7e2c77 fix(deps): update dependency ldapts to v8.0.24 (#4711)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 07:28:01 +00:00
homarr-renovate[bot] 41f40149b3 chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.1 (#4708)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 07:27:41 +00:00
homarr-renovate[bot] 689523a194 fix(deps): update dependency @t3-oss/env-nextjs to ^0.13.10 (#4710)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-20 05:28:31 +00:00
Releases Homarr 2ea0437a97 chore(release): 1.47.0 [skip ci] 2025-12-19 19:35:16 +00:00
homarr-releases[bot] df3a3f94c8 chore(release): automatic release v1.47.0 2025-12-19 19:34:14 +00:00
Meier Lukas 47d7458143 fix: reference to prebuilt-debian action does not work 2025-12-19 20:27:34 +01:00
Meier Lukas 6f0dbae121 refactor(http): move to core package (#4690) 2025-12-19 16:37:21 +01:00
Meier Lukas a0a11e3570 fix(boards): selection menu not shown to users without change access (#4689) 2025-12-19 16:36:45 +01:00
Meier Lukas f4bb90013a refactor(dns): move to core package (#4687) 2025-12-19 09:55:41 +01:00
Meier Lukas 2b971b9392 refactor(certificates): move to core package (#4686) 2025-12-19 09:49:12 +01:00
Manuel 949a006b35 Update CODEOWNERS to assign files to @homarr-labs/none 2025-12-19 09:01:22 +01:00
Manuel 5011e5299e chore: exclude maintainers from renovate automerge (#4698) 2025-12-19 08:59:22 +01:00
homarr-renovate[bot] db337b2525 fix(deps): update dependency ldapts to v8.0.23 (#4701)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-19 06:41:15 +00:00
homarr-renovate[bot] 7710c09f0d chore(deps): update dependency @types/node to ^24.10.4 (#4699)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-19 04:42:49 +00:00
homarr-renovate[bot] 391d725191 fix(deps): update dependency ldapts to v8.0.22 (#4700)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-19 03:32:08 +00:00
homarr-renovate[bot] 1f44845df4 fix(deps): update trpc monorepo to ^11.8.0 (#4697)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-18 19:26:34 +00:00
homarr-renovate[bot] b005cf045f chore(deps): update dependency hono@&lt;4.6.5 to >=4.11.0 (#4696)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-18 12:57:27 +00:00
homarr-renovate[bot] 7f6eaa0b1f fix(deps): update dependency ldapts to v8.0.21 (#4695)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-18 05:31:27 +00:00
homarr-renovate[bot] 8afe7014e7 chore(deps): update dependency @semantic-release/npm to ^13.1.3 (#4692)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-18 03:28:54 +00:00
homarr-renovate[bot] f1da25d204 chore(deps): update node.js (#4693)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-18 01:49:39 +00:00
homarr-renovate[bot] 36901e80ab chore(deps): update dependency eslint to ^9.39.2 (#4694)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-17 23:28:50 +00:00
Meier Lukas 266aefd980 ci: publish additional build artifact for debian systems (#4679) 2025-12-17 20:28:27 +01:00
Meier Lukas ac6fed9946 ci: configure timeouts for all jobs (#4685) 2025-12-17 20:27:51 +01:00
homarr-renovate[bot] 611b65e8bd fix(deps): update dependency fast-xml-parser to ^5.3.3 (#4683)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-17 19:27:47 +00:00
ManuelandMeier Lukas 08e9f7d8d8 feat: #4452 improve calendar design (#4461)
* feat: #4452 improve calendar design

* fix: format issues

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-17 19:16:56 +00:00
homarr-renovate[bot] 1ff6fac71b fix(deps): update dependency next-intl to v4.6.0 (#4691)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-17 14:32:06 +00:00
Meier Lukas 298a96054e refactor(db): move to core package (#4589) 2025-12-17 08:59:52 +01:00
homarr-crowdin[bot] e954ea861c chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-17 07:05:30 +00:00
homarr-renovate[bot] 703c8ccc06 fix(deps): update dependency ldapts to v8.0.20 (#4684)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-17 06:43:06 +00:00
homarr-renovate[bot] 9adf113042 chore(deps): update node.js to v24.12.0 (#4662)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 23:29:59 +00:00
homarr-renovate[bot] 4c7185646d fix(deps): update react monorepo to v19.2.3 (#4680)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 23:28:52 +00:00
Meier Lukas d348abfe4a refactor(logs): move to core package (#4586) 2025-12-16 23:37:44 +01:00
Meier Lukas d86af072bf fix(tdarr): array parse error (#4678) 2025-12-16 22:39:28 +01:00
Meier Lukas 423da9eeb8 fix(invites): creation with custom expiration not working (#4677) 2025-12-16 22:35:42 +01:00
Meier Lukas 17fc7a043b fix(stock-price): use previous-close for change calculation (#4674) 2025-12-16 22:35:31 +01:00
homarr-renovate[bot] 82e79f2627 fix(deps): update react monorepo to v19.2.2 (#4676)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 21:32:12 +00:00
homarr-renovate[bot] 8ed771d300 fix(deps): update dependency ldapts to v8.0.19 (#4669)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 21:30:17 +00:00
homarr-renovate[bot] bdfc150115 fix(deps): update dependency sass to ^1.96.0 (#4668)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 20:34:22 +00:00
homarr-renovate[bot] 4d593f5b9d fix(deps): update dependency swagger-ui-react to ^5.31.0 (#4672)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-16 20:32:54 +00:00
homarr-crowdin[bot] 369dc898d0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-16 00:56:28 +00:00
Meier Lukas 7445c826b8 chore: update bug-report template
Added new versions to the bug report template.
2025-12-15 23:47:46 +01:00
homarr-renovate[bot] cf5aabd49f chore(deps): update dependency @types/pg to ^8.16.0 (#4665)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-15 20:33:50 +00:00
homarr-renovate[bot] f63500961f fix(deps): update dependency drizzle-orm to ^0.45.1 (#4663)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-15 15:34:03 +00:00
homarr-renovate[bot] e327c660b2 fix(deps): update dependency sass to ^1.95.1 (#4661)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-15 07:47:56 +00:00
homarr-renovate[bot] c880ce9bd9 fix(deps): update testcontainers-node monorepo to ^11.10.0 (#4659)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-15 07:45:43 +00:00
homarr-crowdin[bot] b932a8dae3 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-15 00:58:19 +00:00
homarr-renovate[bot] 4aef85ba60 fix(deps): update dependency jotai to ^2.16.0 (#4655)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 20:55:25 +00:00
homarr-renovate[bot] 790e272214 chore(deps): update peter-evans/create-pull-request action to v8 (#4657)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 21:54:33 +01:00
homarr-renovate[bot] d0652f7cf5 fix(deps): update mantine monorepo to ^8.3.10 (#4651)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 09:29:25 +00:00
homarr-renovate[bot] 4bd142e09c fix(deps): update dependency ldapts to v8.0.18 (#4653)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 09:28:45 +00:00
homarr-renovate[bot] 844a5c93f6 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.8 (#4652)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 08:34:54 +00:00
homarr-renovate[bot] 640d5e6a8e chore(deps): update dependency @types/node to ^24.10.2 (#4649)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 03:46:39 +00:00
homarr-renovate[bot] 5d5c18b364 fix(deps): update dependency isomorphic-dompurify to ^2.34.0 (#4650)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-14 01:59:22 +00:00
homarr-renovate[bot] 6deab2ecec fix(deps): update dependency dns-caching to ^0.2.9 (#4648)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 22:27:11 +00:00
homarr-renovate[bot] 220cb669a1 fix(deps): update dependency typescript-eslint to ^8.49.0 (#4645)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 20:30:13 +00:00
homarr-renovate[bot] eb760da8b3 fix(deps): update dependency sass to ^1.95.0 (#4647)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 20:29:55 +00:00
homarr-renovate[bot] e561948657 chore(deps): update pnpm to v10.25.0 (#4644)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 19:23:36 +00:00
homarr-renovate[bot] 7e91d12439 fix(deps): update dependency sass to ^1.94.3 (#4646)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 18:35:35 +00:00
homarr-renovate[bot] 36f60fd844 chore(deps): update dependency jsdom to ^27.3.0 (#4643)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 14:26:18 +00:00
Meier Lukas 10627453d5 fix(downloads): improve progress to only show 100 percent if fully completed (#4621) 2025-12-13 14:27:35 +01:00
homarr-renovate[bot] c09da85f3a fix(deps): update dependency ldapts to v8.0.17 (#4642)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 11:24:34 +00:00
homarr-renovate[bot] ada5597cf3 fix(deps): update dependency ldapts to v8.0.16 (#4640)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 10:55:07 +00:00
homarr-renovate[bot] fca0aa8735 chore(deps): update dependency @vitejs/plugin-react to ^5.1.2 (#4641)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 10:54:28 +00:00
Meier Lukas 479f083ab8 fix(iframe-widget): permission selection not applying to any origin (#4616) 2025-12-13 11:50:33 +01:00
Meier Lukas 866d3f674d chore(typescript): update to target ES2024 (#4620) 2025-12-13 11:48:32 +01:00
homarr-renovate[bot] e106eec0ee chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.7 (#4639)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-13 03:24:33 +00:00
homarr-crowdin[bot] baabb43fff chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-13 00:51:35 +00:00
Releases Homarr b0e0b1d43f chore(release): 1.46.0 [skip ci] 2025-12-12 19:17:52 +00:00
homarr-releases[bot] cc403b89eb chore(release): automatic release v1.46.0 2025-12-12 19:16:55 +00:00
Meier Lukas dd24925d90 feat(docker): add widget options to sort containers (#4636) 2025-12-12 19:59:28 +01:00
ManuelandMeier Lukas 984b29d951 ci: publish build archives to release for bare metal installs (#4535)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-12 19:51:19 +01:00
Meier Lukas 2b2c0e7e3a fix(deps): update next monorepo to v16.0.10 [security] (#4634) 2025-12-12 15:44:35 +01:00
homarr-update-contributors[bot] e7b3be2edb chore: update contributors (#4633)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-12-12 12:38:42 +00:00
homarr-renovate[bot] 3b1c564a5a fix(deps): update dependency winston to v3.19.0 (#4632)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-12 08:39:42 +00:00
homarr-renovate[bot] e37325f5e0 fix(deps): update dependency ldapts to v8.0.14 (#4627)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-11 21:31:12 +00:00
homarr-renovate[bot] 8a14a6cb45 fix(deps): update dependency ldapts to v8.0.13 (#4626)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-11 00:37:25 +01:00
homarr-renovate[bot]andMeier Lukas d111eee0e0 fix(deps): update tiptap monorepo to v3 (major) (#3612)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-11 00:35:55 +01:00
Meier Lukas 0b4ca93aa1 fix(transmission): total download incorrect for cross seeded torrents (#3211) 2025-12-10 20:50:39 +01:00
Meier Lukas 6a908397cd fix(plex): test connection not fully checking connection (#4617) 2025-12-10 13:28:28 +01:00
homarr-renovate[bot] 85689caf6c fix(deps): update turbo monorepo to ^2.6.3 (#4622)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 18:13:32 +00:00
homarr-renovate[bot]andMeier Lukas cab5d19141 fix(deps): update dependency drizzle-orm to ^0.45.0 (#4619)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-09 19:07:54 +01:00
homarr-renovate[bot] 5cbab28099 fix(deps): update dependency drizzle-kit to ^0.31.8 (#4618)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 16:39:05 +01:00
Meier Lukas 1dd9694719 fix: format issues 2025-12-09 16:34:54 +01:00
Copilotandajnart 681aee05f0 fix: add autocomplete and id attributes for password manager compatibility (#4602)
Co-authored-by: ajnart <49837342+ajnart@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-12-09 15:59:33 +01:00
homarr-renovate[bot] c3ed7090c2 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.1 (#4611)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 15:51:42 +01:00
homarr-renovate[bot]andMeier Lukas a20248d0b6 fix(deps): update dependency better-sqlite3 to ^12.5.0 (#4569)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-09 15:51:11 +01:00
homarr-crowdin[bot] 5a95cd3753 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-09 14:49:00 +00:00
homarr-renovate[bot] efc0384b37 fix(deps): update dependency @tanstack/react-query to ^5.90.12 (#4615)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 14:48:34 +00:00
homarr-renovate[bot] fb04875253 chore(deps): update dependency esbuild to ^0.27.1 (#4610)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 15:46:59 +01:00
homarr-renovate[bot] 4689ec9933 fix(deps): update dependency ldapts to v8.0.12 (#4613)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-09 05:29:10 +00:00
TobiasandMeier Lukas d084dfb470 fix: improve run script (#4609)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-08 22:59:59 +01:00
homarr-renovate[bot] 7de45e6fe5 fix(deps): update turbo monorepo to ^2.6.2 (#4612)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-08 21:26:08 +00:00
homarr-renovate[bot] f6d16fe44b fix(deps): update react monorepo to v19.2.1 (#4608)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-08 16:36:42 +00:00
Releases Homarr 340f5606a9 chore(release): 1.45.3 [skip ci] 2025-12-08 16:11:13 +00:00
homarr-releases[bot] ca9478dce7 chore(release): automatic release v1.45.3 2025-12-08 16:10:20 +00:00
Meier Lukas 1bb3654bf7 Merge commit from fork 2025-12-08 16:54:15 +01:00
homarr-renovate[bot]andMeier Lukas d88c6027fe fix(deps): update dependency typescript-eslint to ^8.48.1 (#4438)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-08 16:52:25 +01:00
homarr-renovate[bot] 020cbd72d3 fix(deps): update dependency glob to v13 (#4584)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-08 15:50:54 +01:00
homarr-renovate[bot] aed2025b30 chore(deps): update vitest monorepo to ^4.0.15 (#4603)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-08 13:24:28 +00:00
homarr-renovate[bot]andMeier Lukas 54809823e9 fix(deps): update dependency prettier to ^3.7.4 (#4582)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-12-08 14:19:46 +01:00
homarr-renovate[bot] 4f92e5265a fix(deps): update dependency next-intl to v4.5.8 (#4606)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-08 11:38:56 +00:00
homarr-renovate[bot] 234266ebd9 chore(deps): update actions/checkout action to v6 (#4601)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-07 17:36:30 +01:00
homarr-renovate[bot] 6b28aa86d0 fix(deps): update dependency next-intl to v4.5.7 (#4598)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-07 01:59:48 +00:00
homarr-renovate[bot] ed638d4767 fix(deps): update dependency jotai to ^2.15.2 (#4597)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-07 01:59:14 +00:00
homarr-renovate[bot] a2f7d63d2a chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.6 (#4595)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-07 01:58:21 +00:00
homarr-crowdin[bot] 9639f44560 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-07 00:59:37 +00:00
Releases Homarr bc087e6e60 chore(release): 1.45.2 [skip ci] 2025-12-05 19:17:05 +00:00
homarr-releases[bot] d347d4455b chore(release): automatic release v1.45.2 2025-12-05 19:16:11 +00:00
Meier Lukas 10572ca962 fix: disable react-compiler due to issue with mantine-react-table data updates (#4593) 2025-12-05 19:10:23 +01:00
homarr-update-contributors[bot] d350e48998 chore: update contributors (#4591)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-12-05 14:56:10 +00:00
DZ945brH 2c48b18968 fix: add ipv6 support for internal nginx proxy 2025-12-05 13:04:17 +01:00
Meier Lukas 069ed0a267 chore: update bug-report template 2025-12-03 23:42:06 +01:00
Releases Homarr a3e53ec291 chore(release): 1.45.1 [skip ci] 2025-12-03 17:43:49 +00:00
homarr-releases[bot] 38a1c9ca83 chore(release): automatic release v1.45.1 2025-12-03 17:42:39 +00:00
Meier Lukas b40deba9ff fix(security): rce vulnerability in nextjs 2025-12-03 18:33:01 +01:00
homarr-renovate[bot] d5d59dd256 fix(deps): update mantine monorepo to ^8.3.9 (#4576)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 13:44:52 +00:00
homarr-renovate[bot] 3453482ed4 fix(deps): update trpc monorepo to ^11.7.2 (#4579)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 12:57:36 +00:00
homarr-renovate[bot] d2c1dc3cc1 fix(deps): update dependency swagger-ui-react to ^5.30.3 (#4574)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 12:54:17 +00:00
homarr-renovate[bot] 59bcbc8b4d fix(deps): update tanstack-query monorepo (#4578)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 11:33:29 +00:00
homarr-renovate[bot] b2c46d33d6 fix(deps): update dependency chroma-js to ^3.2.0 (#4585)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 11:28:54 +00:00
homarr-renovate[bot] ca01a31fe5 fix(deps): update dependency isomorphic-dompurify to ^2.33.0 (#4581)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:53:13 +00:00
homarr-renovate[bot] deb5e9d960 fix(deps): update dependency superjson to v2.2.6 (#4573)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:48:15 +00:00
homarr-renovate[bot] 16f12d98e6 fix(deps): update nextjs monorepo to v16.0.5 (#4577)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:45:55 +00:00
homarr-renovate[bot] 10bdd74b2b fix(deps): update testcontainers-node monorepo to ^11.9.0 (#4583)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:35:20 +00:00
Meier Lukas a91955a35b chore(docs): update sitemap 2025-12-03 11:31:46 +01:00
Meier Lukas 87deba417f chore: update bug-report template 2025-12-03 11:30:41 +01:00
homarr-renovate[bot] 220f68ee04 chore(deps): update pnpm to v10.24.0 (#4580)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:27:50 +00:00
homarr-renovate[bot] d6fc46df3b fix(deps): update dependency chroma-js to ^3.1.4 (#4570)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:24:55 +00:00
homarr-renovate[bot] 7a8c50fa4c fix(deps): update dependency sass to ^1.94.2 (#4572)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:24:23 +00:00
homarr-renovate[bot] 59eecaf842 chore(deps): update vitest monorepo to ^4.0.14 (#4568)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:12:54 +00:00
homarr-renovate[bot] 879a77ff2a fix(deps): update dependency zod to ^4.1.13 (#4575)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:10:53 +00:00
homarr-renovate[bot] b53bcb77e9 chore(deps): update dependency prettier-plugin-packagejson to ^2.5.20 (#4566)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:06:51 +00:00
homarr-renovate[bot] 3062ddafbe fix(deps): update dependency next-intl to v4.5.6 (#4571)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:06:32 +00:00
homarr-renovate[bot] 7f782220a1 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.4 (#4567)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:06:17 +00:00
homarr-renovate[bot] aa2ec5d221 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.7 (#4565)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 10:00:23 +00:00
homarr-renovate[bot] e6db47aaab chore(deps): update dependency @types/react to v19.2.7 (#4564)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-12-03 09:59:46 +00:00
homarr-crowdin[bot] f3d2026746 chore(lang): update translations from crowdin (#4560)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-12-01 10:43:38 +01:00
homarr-crowdin[bot] ed31e32150 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-29 00:50:15 +00:00
Releases Homarr d07730b5f8 chore(release): 1.45.0 [skip ci] 2025-11-28 19:15:49 +00:00
homarr-releases[bot] 681236ec3b chore(release): automatic release v1.45.0 2025-11-28 19:14:48 +00:00
Meier Lukas 524e1a485b fix(security): restrict modification of entrypoint script (#4555) 2025-11-28 18:34:51 +01:00
homarr-renovate[bot] 2bc6964f7e fix(deps): update dependency next-intl to v4.5.5 (#4542)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-28 17:27:04 +00:00
Meier Lukas 21de817dba chore(deps): security hardening (#4551) 2025-11-28 18:09:10 +01:00
homarr-update-contributors[bot] b15d96e8dd chore: update contributors (#4554)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-11-28 12:36:13 +00:00
Noah Croghan 99949fe095 fix: Add fallback when no icon in Minecraft Server widget (#4544) (#4545) 2025-11-27 17:06:31 +01:00
homarr-crowdin[bot] 85d4931538 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-26 00:52:18 +00:00
homarr-renovate[bot] 77a86ead41 fix(deps): update dependency next-intl to v4.5.4 (#4540)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-24 13:02:10 +00:00
homarr-renovate[bot] 27ca124d2a chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.3 (#4537)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-24 09:51:55 +00:00
homarr-renovate[bot] 3ca6cb18eb chore(deps): update dependency @types/dockerode to ^3.3.47 (#4539)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-24 09:39:01 +00:00
homarr-crowdin[bot] 245bab7cdd chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-24 00:56:25 +00:00
homarr-renovate[bot] 18a6bfd69d fix(deps): update dependency glob to v12 (#4530)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-23 20:07:39 +01:00
homarr-renovate[bot] c4e6528e6c chore(deps): update dependency @types/react to v19.2.6 (#4532)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-23 04:47:11 +00:00
homarr-renovate[bot] 24c985424e fix(deps): update dependency glob to ^11.1.0 (#4529)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-23 04:06:56 +00:00
homarr-renovate[bot] 292e36fec5 fix(deps): update dependency sass to ^1.94.1 (#4531)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-23 02:19:13 +00:00
homarr-renovate[bot] 7eee48ae88 chore(deps): update vitest monorepo to ^4.0.10 (#4528)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-22 13:34:54 +00:00
homarr-renovate[bot] 1b09b588f3 chore(deps): update dependency form-data@&gt;&#x3d;4.0.0 &lt;4.0.4 to >=4.0.5 (#4525)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-22 10:42:15 +00:00
ManuelandCopilot Autofix powered by AI 22fb696f25 ci(security): missing permissions for workflow (#4474)
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-11-22 10:39:45 +00:00
generalmat82andMeier Lukas 60ab98ae36 feat(docker): hide containers with label homarr.hide (#4506)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-22 11:32:31 +01:00
homarr-renovate[bot] 9a3feb404c fix(deps): update dependency zod-validation-error to v5 (#4437)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-22 10:35:43 +01:00
homarr-renovate[bot] 9c5c4f33ef chore(deps): update node.js to v24.11.1 (#4502)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-22 10:34:17 +01:00
homarr-crowdin[bot] 3ec0c4097a chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-22 00:49:38 +00:00
homarr-renovate[bot] e87170ae6e fix(deps): update dependency @tanstack/react-query to ^5.90.10 (#4523)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-21 21:29:15 +00:00
Meier Lukas 30fedcb6f1 chore: update bug-report template 2025-11-21 22:14:37 +01:00
Releases Homarr 6cc1209fc0 chore(release): 1.44.0 [skip ci] 2025-11-21 19:17:06 +00:00
homarr-releases[bot] 2b8fdc0281 chore(release): automatic release v1.44.0 2025-11-21 19:16:09 +00:00
Meier Lukas d9cc35b985 fix(media-requests): incorrect availability mapping (#4520) 2025-11-21 19:05:51 +01:00
Meier Lukas 5a418d73bd fix(iframe): allow clicking links within (#4521) 2025-11-21 19:05:24 +01:00
homarr-renovate[bot] ded4e72e54 fix(deps): update mantine monorepo to ^8.3.8 (#4516)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-20 11:30:16 +00:00
homarr-renovate[bot] de3602da84 chore(deps): update dependency @semantic-release/npm to ^13.1.2 (#4513)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 23:30:39 +00:00
homarr-renovate[bot] c80075f1c3 chore(deps): update dependency @types/react to v19.2.5 (#4515)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 22:32:13 +00:00
homarr-renovate[bot] be52cb82fd chore(deps): update vitest monorepo to ^4.0.9 (#4509)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 21:28:39 +00:00
homarr-renovate[bot] 9304d73054 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.6 (#4512)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 21:27:46 +00:00
homarr-renovate[bot] 912f9ff884 chore(deps): update dependency @types/dockerode to ^3.3.46 (#4514)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 20:33:11 +00:00
homarr-renovate[bot] 5e57a4906b fix(deps): update dependency fast-xml-parser to ^5.3.2 (#4510)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 09:36:42 +00:00
homarr-renovate[bot] b3db5d5f7b fix(deps): update dependency @tanstack/react-query to ^5.90.9 (#4508)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 08:41:31 +00:00
homarr-renovate[bot] ebc5bd170d chore(deps): update dependency glob to v11.1.0 [security] (#4500)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-19 03:19:15 +00:00
homarr-renovate[bot] b4f9fb8b46 fix(deps): update dependency drizzle-kit to ^0.31.7 (#4507)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 23:31:02 +00:00
homarr-renovate[bot] 7d0c1a14fd fix(deps): update nextjs monorepo to v16.0.3 (#4504)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 22:34:27 +00:00
Meier Lukas c89e35e13c feat(pi-hole): support no-auth (#4480) 2025-11-18 21:05:00 +01:00
homarr-renovate[bot] 8ea6cffb53 fix(deps): update dependency @tanstack/react-query-next-experimental to ^5.91.0 (#4505)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 17:39:07 +00:00
homarr-renovate[bot] 1bb96ce5cf chore(deps): update pnpm to v10.22.0 (#4495)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 17:38:36 +00:00
homarr-renovate[bot] 6da511bc2e chore(deps): update dependency @types/react to v19.2.4 (#4501)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 17:36:32 +00:00
homarr-renovate[bot] 064277373c fix(deps): update dependency next-intl to v4.5.3 (#4503)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-18 17:34:29 +00:00
homarr-crowdin[bot] 88fd0a63b6 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-18 00:51:48 +00:00
homarr-renovate[bot] 7fd5bf0699 chore(deps): update dependency jsdom to ^27.2.0 (#4492)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-17 14:35:27 +00:00
homarr-renovate[bot] 1bfa9d7158 chore(deps): update dependency @vitejs/plugin-react to ^5.1.1 (#4493)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-17 13:43:40 +00:00
homarr-renovate[bot] 57140f2c71 chore(deps): update dependency @types/react-dom to v19.2.3 (#4491)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-17 13:43:26 +00:00
homarr-renovate[bot] a5b6203be6 fix(deps): update dependency @tanstack/react-query to ^5.90.8 (#4494)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-17 13:00:35 +00:00
homarr-renovate[bot] aae81d3120 chore(deps): update dependency node to v24.11.1 (#4490)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-17 02:07:01 +00:00
homarr-crowdin[bot] 0fb01c90e9 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-17 00:53:59 +00:00
homarr-renovate[bot] 06942ecbcd fix(deps): update dependency next-intl to v4.5.1 (#4484)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 16:38:54 +00:00
homarr-renovate[bot] 006dee9e9b chore(deps): update node.js to v24.11.1 (#4481)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 16:37:12 +00:00
homarr-renovate[bot] f2df9839f1 chore(deps): update dependency @types/react to v19.2.3 (#4487)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 16:36:19 +00:00
homarr-renovate[bot] dcc23e721a chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.5 (#4485)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 16:35:49 +00:00
homarr-renovate[bot] 64657d831c fix(deps): update testcontainers-node monorepo to ^11.8.1 (#4486)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 15:30:16 +00:00
homarr-renovate[bot] cd124d6e83 fix(deps): update turbo monorepo to ^2.6.1 (#4483)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 06:43:04 +00:00
homarr-renovate[bot] 19ecedea43 fix(deps): update dependency sass to ^1.94.0 (#4482)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-16 02:12:03 +00:00
homarr-renovate[bot] 5b55a4751b chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.2 (#4479)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-15 09:30:25 +00:00
homarr-renovate[bot] 266b9ffd1b chore(deps): update pnpm to v10.21.0 (#4478)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-15 02:01:31 +00:00
homarr-renovate[bot] 7a3a05b172 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.27.0 (#4477)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 20:36:02 +00:00
homarr-renovate[bot] a62c1385e3 chore(deps): update dependency esbuild to ^0.27.0 (#4476)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 19:28:44 +00:00
Releases Homarr 0bba7be8d5 chore(release): 1.43.3 [skip ci] 2025-11-14 19:16:15 +00:00
homarr-releases[bot] 96b556f558 chore(release): automatic release v1.43.3 2025-11-14 19:15:12 +00:00
Manuel aaa23f3732 Merge commit from fork
* fix: sanitize user-media svg api endpoint using isomorphic dompurify

* fix: add iframe sandbox to prevent priviledge escalation
2025-11-14 18:00:15 +01:00
homarr-update-contributors[bot] d33cfe211a chore: update contributors (#4473)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-11-14 12:36:49 +00:00
homarr-renovate[bot] e7071bf2bf fix(deps): update dependency fastify to ^5.6.2 (#4471)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 10:35:22 +00:00
homarr-renovate[bot] 8a87dbad59 fix(deps): update mantine monorepo to ^8.3.7 (#4472)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 09:35:28 +00:00
homarr-renovate[bot] 6a5f069383 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.26.0 (#4470)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 04:37:00 +00:00
homarr-renovate[bot] d8e4255733 chore(deps): update dependency esbuild to ^0.26.0 (#4469)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-14 03:25:59 +00:00
homarr-crowdin[bot] 1916eacb4d chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-14 00:52:23 +00:00
AartSchinkelandMeier Lukas c30c98b153 fix(stock-price): ignore missing data points in price history (#4429)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-13 22:07:23 +01:00
homarr-renovate[bot] 89aed57645 chore(deps): update semantic-release monorepo (#4464)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-13 14:33:37 +00:00
homarr-renovate[bot] 251d1d0da3 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.1 (#4465)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-12 22:31:40 +00:00
homarr-renovate[bot] 51ce5da45b fix(deps): update dependency next-intl to v4.5.0 (#4462)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-12 17:33:22 +00:00
homarr-renovate[bot] eff2202e92 chore(deps): update vitest monorepo to ^4.0.8 (#4459)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-12 17:32:42 +00:00
homarr-renovate[bot] bb25410a40 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.2 (#4457)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-12 17:31:53 +00:00
homarr-renovate[bot] 1a56a56989 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.53.0 (#4463)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-12 16:42:50 +00:00
homarr-renovate[bot] ddfed18acf fix(deps): update dependency @ctrl/qbittorrent to ^9.11.0 (#4456)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-11 07:32:42 +00:00
homarr-renovate[bot] 7bc2f87f31 fix(deps): update dependency @tanstack/react-query to ^5.90.7 (#4451)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-11 05:33:17 +00:00
homarr-renovate[bot] 05a9d26138 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.1 (#4454)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-11 04:37:45 +00:00
homarr-renovate[bot] 4f96cdf9f7 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.2.0 (#4449)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-10 15:13:48 +00:00
ManuelandMeier Lukas 1c1f8a48d2 fix(users): next button in create form always disabled (#4443)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-10 16:02:14 +01:00
homarr-renovate[bot] f648af0e2b fix(deps): update testcontainers-node monorepo to ^11.8.0 (#4450)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-10 10:36:35 +00:00
homarr-crowdin[bot] 35ca0571ad chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-10 00:55:24 +00:00
homarr-renovate[bot] 92a91329c9 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.2 (#4447)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-09 20:31:57 +00:00
homarr-renovate[bot] 23edb55c67 chore(deps): update dependency eslint to ^9.39.1 (#4440)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-09 16:34:41 +00:00
homarr-renovate[bot] 8449d606d7 chore(deps): update vitest monorepo to ^4.0.7 (#4444)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-09 15:28:38 +00:00
homarr-renovate[bot] d3edfcf3dc fix(deps): update dependency swagger-ui-react to ^5.30.2 (#4442)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-09 10:30:28 +00:00
homarr-renovate[bot] 65f2e825fd fix(deps): update dependency fast-xml-parser to ^5.3.1 (#4435)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-08 19:36:33 +00:00
homarr-renovate[bot] 286f4e764a chore(deps): update dependency @types/node to ^24.10.0 (#4434)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-08 01:57:46 +00:00
Releases Homarr def87f36fd chore(release): 1.43.2 [skip ci] 2025-11-07 19:16:38 +00:00
homarr-releases[bot] 5adc2049cc chore(release): automatic release v1.43.2 2025-11-07 19:15:38 +00:00
homarr-renovate[bot] 5f9054b162 fix(deps): update dependency @tanstack/react-query to ^5.90.6 (#4427)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-07 03:23:11 +00:00
homarr-renovate[bot] b450ff6877 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.25.12 (#4431)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-07 02:04:23 +00:00
homarr-renovate[bot] 97052b8bff chore(deps): update dependency esbuild to ^0.25.12 (#4430)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-07 02:03:50 +00:00
homarr-renovate[bot] 07af9d8673 fix(deps): update dependency jotai to ^2.15.1 (#4426)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-06 06:44:55 +00:00
homarr-renovate[bot] 4516f27fa6 fix(deps): update dependency @gitbeaker/rest to ^43.8.0 (#4425)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-06 06:44:37 +00:00
homarr-renovate[bot] f2164272a5 fix(deps): update dependency sass to ^1.93.3 (#4421)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-06 02:05:33 +00:00
homarr-renovate[bot] 50caa1fcf9 chore(deps): update vitest monorepo to ^4.0.6 (#4420)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 23:30:24 +00:00
homarr-renovate[bot] 742ef66e3c fix(deps): update turbo monorepo to ^2.6.0 (#4422)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 22:34:14 +00:00
homarr-renovate[bot] 0d10b2b99a chore(deps): update dependency @semantic-release/github to ^12.0.1 (#4423)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 22:31:09 +00:00
homarr-renovate[bot] 2ff32627f4 chore(deps): update dependency eslint to ^9.39.0 (#4424)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 21:32:12 +00:00
homarr-renovate[bot] d9b14db6a1 fix(deps): update dependency swagger-ui-react to ^5.30.1 (#4418)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 09:36:37 +00:00
homarr-renovate[bot] 186e3e445d fix(deps): update dependency octokit to ^5.0.5 (#4413)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 09:35:58 +00:00
homarr-renovate[bot] 160c20a9a6 fix(deps): update dependency tsdav to ^2.1.6 (#4417)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 08:43:04 +00:00
homarr-renovate[bot] 97cbade713 fix(deps): update dependency dayjs to ^1.11.19 (#4414)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 07:32:10 +00:00
homarr-renovate[bot] 816c6a0329 chore(deps): update dependency jsdom to ^27.1.0 (#4416)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 06:44:28 +00:00
homarr-renovate[bot] 018a33b078 fix(deps): update dependency @octokit/auth-app to ^8.1.2 (#4412)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-05 02:04:46 +00:00
homarr-renovate[bot] 168458e9e1 chore(deps): update actions/setup-node action to v6 (#4320)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-04 22:15:15 +01:00
homarr-renovate[bot] ebc64f3090 chore(deps): update dependency dotenv-cli to v11 (#4402)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-04 22:13:26 +01:00
homarr-renovate[bot]andMeier Lukas d255492bb7 chore(deps): update vitest monorepo to v4 (major) (#4367)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-04 22:03:43 +01:00
homarr-renovate[bot]andMeier Lukas dcf960fa97 fix(deps): update dependency @gitbeaker/rest to ^43.7.0 (#4386)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-04 21:28:11 +01:00
homarr-renovate[bot]andMeier Lukas 6ce23a6e97 fix(deps): update nextjs monorepo to v16 (major) (#4363)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-11-04 21:26:44 +01:00
homarr-renovate[bot] a43ac18bef chore(deps): update node.js to v24 (#4395)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-04 21:14:13 +01:00
homarr-renovate[bot] 881d0d1219 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.4 (#4410)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-04 19:03:28 +00:00
homarr-crowdin[bot] 3fff8b88b3 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-11-04 00:50:14 +00:00
homarr-renovate[bot] 57d1a91866 fix(deps): update dependency @ctrl/deluge to ^7.5.0 (#4407)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-03 21:18:41 +00:00
homarr-renovate[bot] d34f9e5b3e fix(deps): update tiptap monorepo to v2.27.1 (#4405)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-03 16:37:13 +00:00
homarr-renovate[bot] cf89a03f0c chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.1 (#4401)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-03 10:36:04 +00:00
homarr-renovate[bot] f4caddfd56 fix(deps): update tiptap monorepo to v2.27.0 (#4404)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-03 09:38:19 +00:00
homarr-renovate[bot] 9e2bbb8a3f fix(deps): update mantine monorepo to ^8.3.6 (#4403)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-03 06:45:35 +00:00
homarr-renovate[bot] 6dbd2802c9 chore(deps): update pnpm to v10.20.0 (#4400)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 18:37:28 +00:00
homarr-renovate[bot] 19e25a095f fix(deps): update dependency superjson to v2.2.5 (#4398)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 17:26:14 +00:00
homarr-renovate[bot] 4c4e901e7d fix(deps): update dependency @jellyfin/sdk to ^0.13.0 (#4399)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 16:34:38 +00:00
homarr-renovate[bot] 5aca5d1b0a fix(deps): update trpc monorepo to ^11.7.1 (#4396)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 14:27:23 +00:00
homarr-renovate[bot] 59434ee33a fix(deps): update dependency drizzle-kit to ^0.31.6 (#4397)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 13:34:04 +00:00
homarr-renovate[bot] b59ee77c28 chore(deps): update node.js to v22.21.1 (#4355)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 02:09:11 +00:00
homarr-renovate[bot] 5effee8148 chore(deps): update dependency @types/pg to ^8.15.6 (#4394)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-02 02:08:59 +00:00
homarr-renovate[bot] ba82853f5c chore(deps): update dependency @types/chroma-js to v3.1.2 (#4393)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-01 21:26:47 +00:00
homarr-renovate[bot] 1491b0fe0e chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.13.0 (#4392)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-01 16:33:43 +00:00
homarr-renovate[bot] b51e285c92 fix(deps): update dependency swagger-ui-react to ^5.30.0 (#4391)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-11-01 12:51:55 +00:00
Meier Lukas 6d9726e19e chore: update bug report template 2025-10-31 23:35:49 +01:00
Releases Homarr 145bea727f chore(release): 1.43.1 [skip ci] 2025-10-31 19:14:59 +00:00
homarr-releases[bot] 5b7de36642 chore(release): automatic release v1.43.1 2025-10-31 19:13:48 +00:00
Meier Lukas 6f3b7ec491 fix(media-releases): support more media type mappings for jellyfin and emby (#4382) 2025-10-31 16:56:15 +01:00
homarr-update-contributors[bot] bbfc6e48fe chore: update contributors (#4389)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-10-31 12:36:00 +00:00
homarr-renovate[bot] 2fe36564c2 fix(deps): update dependency @auth/drizzle-adapter to ^1.11.1 (#4388)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-31 04:38:56 +00:00
homarr-renovate[bot] 747bb922cc fix(deps): update dependency @auth/core to ^0.41.1 (#4387)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-31 03:22:51 +00:00
homarr-renovate[bot] 24def99827 fix(deps): update trpc monorepo to ^11.7.0 (#4385)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-30 17:29:32 +00:00
castielwaverly e0526c5ea7 fix(releases-widget): Search multiple docker hub pages for releases (#4158) 2025-10-29 19:33:50 +01:00
homarr-renovate[bot] 9e4b93abcf chore(deps): update dependency node to v24 (#4368)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 18:30:02 +01:00
homarr-renovate[bot] c544d6ec2e fix(deps): update dependency next-auth to v5.0.0-beta.30 [security] (#4379)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 12:55:30 +00:00
homarr-renovate[bot] 2c0c589bb5 chore(deps): update dependency @vitejs/plugin-react to ^5.1.0 (#4377)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 09:34:20 +00:00
homarr-renovate[bot] 8242bfc95c fix(deps): update dependency drizzle-orm to ^0.44.7 (#4372)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 06:46:08 +00:00
homarr-renovate[bot] 3a06ce7553 chore(deps): update dependency @types/dockerode to ^3.3.45 (#4376)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 05:33:31 +00:00
homarr-renovate[bot] c18d04616e chore(deps): update dependency @types/cookies to v0.9.2 (#4375)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-29 04:39:02 +00:00
homarr-crowdin[bot] 6e5fbde23b chore(lang): update translations from crowdin (#4362)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-28 16:13:39 +01:00
homarr-renovate[bot] 136ed8e8b4 fix(deps): update tiptap monorepo to v2.26.4 (#4371)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-28 13:43:01 +00:00
homarr-renovate[bot] 920a33861f chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.12 (#4370)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-28 07:32:04 +00:00
homarr-renovate[bot] 7329135fd8 fix(deps): update testcontainers-node monorepo to ^11.7.2 (#4366)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-27 13:00:55 +00:00
homarr-renovate[bot] 18cc04e7f2 fix(deps): update dependency superjson to v2.2.3 (#4364)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-27 11:28:47 +00:00
homarr-renovate[bot] ce6338840c fix(deps): update dependency next-intl to v4.4.0 (#4365)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-27 10:36:32 +00:00
homarr-renovate[bot] 6e6c912225 fix(deps): update dependency mysql2 to v3.15.3 (#4360)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 19:33:05 +00:00
homarr-renovate[bot] 554d19a458 fix(deps): update dependency @jellyfin/sdk to ^0.12.0 (#4359)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 17:12:05 +00:00
homarr-renovate[bot] 0491598d59 chore(deps): update pnpm to v10.19.0 (#4358)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 14:28:32 +00:00
homarr-renovate[bot] 3c4c26ee21 fix(deps): update dependency ioredis to v5.8.2 (#4357)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 14:28:07 +00:00
homarr-renovate[bot] 29da5cc905 chore(deps): update dependency node to v22.21.0 (#4354)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 03:23:45 +00:00
homarr-renovate[bot] f96cbe0652 fix(deps): update dependency typescript-eslint to ^8.46.2 (#4352)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 03:23:16 +00:00
homarr-renovate[bot] fc46d88071 chore(deps): update dependency @types/node to ^22.18.12 (#4350)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-26 02:06:12 +00:00
homarr-crowdin[bot] 1abece05ae chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-26 00:53:29 +00:00
Meier Lukas 945d2a1244 chore: update bug report template 2025-10-25 10:06:52 +02:00
homarr-crowdin[bot] d9d9afd5e3 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-25 08:03:49 +00:00
homarr-renovate[bot] ddb8a99631 chore(deps): update node.js to v22.21.0 (#4349)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-25 08:02:56 +00:00
homarr-renovate[bot] ef18c58f5b fix(deps): update dependency node-ical to ^0.22.1 (#4346)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-25 10:02:42 +02:00
homarr-renovate[bot] 94eafddc72 chore(deps): update semantic-release monorepo (#4318)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-25 10:01:51 +02:00
homarr-renovate[bot] 074d27e37e fix(deps): update dependency @paralleldrive/cuid2 to v3 (#4343)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-25 10:00:19 +02:00
homarr-renovate[bot] b030c128c1 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.3 [security] (#4347)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-24 21:22:24 +00:00
Releases Homarr 0ca225d790 chore(release): 1.43.0 [skip ci] 2025-10-24 19:16:03 +00:00
homarr-releases[bot] cd391c6b08 chore(release): automatic release v1.43.0 2025-10-24 19:14:56 +00:00
homarr-renovate[bot] 7281b4ae32 fix(deps): update dependency node-ical to ^0.22.0 (#4344)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-24 18:40:53 +00:00
homarr-renovate[bot] 4cab12b80a fix(deps): update dependency @tanstack/react-query to ^5.90.5 (#4316)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-24 18:39:45 +00:00
Meier Lukas 172db0e3f9 feat(integrations): add app linking (#4338) 2025-10-24 20:21:27 +02:00
homarr-renovate[bot] 6f0b5d7e04 chore(deps): update dependency jsdom to ^27.0.1 (#4341)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-23 16:56:22 +00:00
homarr-renovate[bot] 6d5153e5dc chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.52.5 (#4342)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-23 16:55:56 +00:00
homarr-renovate[bot] ee8d49c7e4 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.2 [security] (#4337)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 22:21:01 +00:00
homarr-renovate[bot] c9637021f0 chore(deps): update dependency eslint to ^9.38.0 (#4339)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 21:17:18 +00:00
homarr-renovate[bot] bd983701b7 fix(deps): update dependency octokit to ^5.0.4 (#4340)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 20:36:10 +00:00
homarr-renovate[bot] e7598ee0e1 chore(deps): update dependency @types/node to ^22.18.11 (#4334)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 17:14:28 +02:00
homarr-crowdin[bot] 26a11e5d62 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-22 15:04:16 +00:00
homarr-renovate[bot] 0df6e8fb20 fix(deps): update nextjs monorepo to v15.5.6 (#4314)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 14:37:02 +00:00
homarr-renovate[bot] c2453b6c96 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.1 (#4332)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 14:35:23 +00:00
homarr-renovate[bot] fb4b8f7ca3 fix(deps): update dependency swagger-ui-react to ^5.29.5 (#4335)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-22 13:45:28 +00:00
homarr-renovate[bot] 592412d240 chore(deps): update dependency hono@&lt;4.6.5 to >=4.10.0 (#4308)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-21 22:28:55 +00:00
homarr-renovate[bot] eb717da792 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.11 [security] (#4328)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-20 22:23:40 +00:00
Meier Lukas ed5127de64 ci(renovate): add config validation job (#4303) 2025-10-20 19:18:22 +02:00
homarr-crowdin[bot] e1b4186aa2 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-20 11:08:44 +00:00
homarr-renovate[bot] 63c5c9ca98 fix(deps): update mantine monorepo to ^8.3.5 (#4291)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-20 04:39:14 +00:00
homarr-renovate[bot] b0e44943a3 chore(deps): update dependency esbuild to ^0.25.11 (#4325)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-20 04:37:22 +00:00
homarr-renovate[bot] 448272091b chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.25.11 (#4326)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-20 03:29:55 +00:00
homarr-renovate[bot] ceec6d2789 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.10 (#4323)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-19 13:34:19 +00:00
homarr-renovate[bot] e216ae3a70 chore(deps): update pnpm to v10.18.3 (#4322)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-19 10:29:49 +00:00
homarr-crowdin[bot] ce26cdf2b2 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-19 00:55:57 +00:00
Meier Lukas d66be5ff82 chore: update bug report template 2025-10-18 20:45:30 +02:00
Releases Homarr d6e463f6e4 chore(release): 1.42.1 [skip ci] 2025-10-18 18:31:36 +00:00
homarr-releases[bot] f643a185f6 chore(release): automatic release v1.42.1 2025-10-18 18:30:40 +00:00
Meier Lukas 9aa2d5ccd8 fix(docker): stats not working (#4311) 2025-10-18 20:29:11 +02:00
homarr-renovate[bot] f78eaa533e fix(deps): update dependency typescript-eslint to ^8.46.1 (#4313)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-18 17:26:43 +00:00
homarr-renovate[bot] 857b46bc33 fix(deps): update nextjs monorepo to v15.5.5 (#4312)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-18 16:36:12 +00:00
homarr-renovate[bot] 3f87bbd42b fix(deps): update dependency @ctrl/qbittorrent to ^9.10.0 (#4310)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-18 15:29:18 +00:00
homarr-renovate[bot] 9c1059afe6 chore(deps): update dependency @types/react-dom to v19.2.2 (#4309)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-18 15:28:34 +00:00
homarr-crowdin[bot] 4e1f7c5785 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-18 13:14:06 +00:00
homarr-renovate[bot] 6e37416e76 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.12 (#4307)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-18 09:33:02 +00:00
Meier Lukas 27de0ce2a2 chore(renovate): prevent special characters in branch name 2025-10-17 23:05:56 +02:00
Meier Lukas 90784116e8 chore: update bug report template
Added new version option 1.42.0 to bug report template.
2025-10-17 22:49:14 +02:00
Releases Homarr d8a2ab74d2 chore(release): 1.42.0 [skip ci] 2025-10-17 19:15:33 +00:00
homarr-releases[bot] 4dabc98bd4 chore(release): automatic release v1.42.0 2025-10-17 19:14:09 +00:00
homarr-update-contributors[bot] 84909b2535 chore: update contributors (#4300)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-10-17 12:35:12 +00:00
homarr-renovate[bot] f2540c7d8e chore(deps): update dependency @types/node to ^22.18.10 (#4289)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-16 14:26:31 +00:00
homarr-renovate[bot] 0e63ffe611 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.11 (#4298)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-16 13:00:11 +00:00
homarr-crowdin[bot] 0b120455fd chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-16 00:50:00 +00:00
homarr-renovate[bot] fde68f8bcc fix(deps): update dependency swagger-ui-react to ^5.29.4 (#4293)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-15 13:00:10 +00:00
homarr-renovate[bot] 38e368fdbc fix(deps): update tiptap monorepo to v2.26.3 (#4292)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-14 23:30:27 +00:00
homarr-renovate[bot] 94533c667c fix(deps): update mantine monorepo to ^8.3.4 (#4290)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-14 19:27:59 +00:00
homarr-renovate[bot] cd25bdfc0e chore(deps): update dependency @types/node to ^22.18.9 (#4288)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-14 18:42:56 +00:00
homarr-renovate[bot] 3a7c8d5e19 fix(deps): update dependency next-intl to v4.3.12 (#4274)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-14 17:27:31 +00:00
homarr-renovate[bot] 1afbdd0511 chore(deps): update pnpm to v10.18.2 (#4262)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-14 16:37:03 +00:00
homarr-crowdin[bot] 1fa60cbea6 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-14 00:48:41 +00:00
homarr-crowdin[bot] 3cbb664bc0 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-13 22:01:32 +00:00
Meier Lukas a80c5d40e0 fix(plex): tv show links not working (#4272) 2025-10-13 23:52:52 +02:00
Meier Lukas cccec5e195 fix(docker-widget): memory usage wrong (#4266) 2025-10-13 23:52:40 +02:00
Meier Lukas afca8007f1 feat(nextcloud): reuse color from event for indicator (#4270) 2025-10-13 23:52:27 +02:00
Meier Lukas 5c86930220 feat(users): allow profile picture change for external providers (#4275) 2025-10-13 23:52:17 +02:00
Meier Lukas 35a8ac820f fix(users): profile picture upload limit wrong (#4276) 2025-10-13 23:52:05 +02:00
homarr-renovate[bot] cd5d9c66ca fix(deps): update dependency @auth/drizzle-adapter to ^1.11.0 (#4283)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-13 18:41:36 +00:00
homarr-renovate[bot] 60370a7e33 fix(deps): update dependency @auth/core to ^0.41.0 (#4282)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-13 17:28:20 +00:00
homarr-renovate[bot] 65ccfdfb13 fix(deps): update dependency mysql2 to v3.15.2 (#4280)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-13 08:42:02 +00:00
homarr-renovate[bot] f792b2a553 fix(deps): update dependency next-intl to v4.3.11 (#4273)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-12 10:51:20 +00:00
homarr-renovate[bot] 5d402f88d2 fix(deps): update dependency next-intl to v4.3.10 (#4271)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-12 09:28:56 +00:00
homarr-renovate[bot] 7a7b3a32f8 chore(deps): update react monorepo (#4269)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-12 06:33:55 +00:00
homarr-renovate[bot] d80f070ba3 fix(deps): update dependency trpc-to-openapi to ^3.1.0 (#4268)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-12 02:01:30 +00:00
homarr-renovate[bot] d7182b9cf5 chore(deps): update dependency @types/react to v19.2.1 (#4236)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-12 02:00:11 +00:00
homarr-crowdin[bot] 6a199561b6 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-12 00:50:43 +00:00
Meier Lukas 7e5f4e59a9 fix(management): improve homepage (#4260) 2025-10-11 22:55:56 +02:00
Meier Lukas 1b7e67dd97 fix(calendar): recurring events not working (#4265) 2025-10-11 22:54:51 +02:00
homarr-renovate[bot] 0aede0dec3 fix(deps): update dependency typescript-eslint to ^8.46.0 (#4264)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-11 17:26:36 +00:00
homarr-renovate[bot] e8877169f8 fix(deps): update dependency zod to ^4.1.12 (#4263)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-11 17:26:06 +00:00
homarr-renovate[bot] 4ffbea3b52 fix(deps): update dependency ioredis to v5.8.1 (#4259)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-11 16:11:48 +00:00
homarr-renovate[bot] fab57e6fbd chore(deps): update pnpm to v10.18.1 (#4240)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-11 12:48:47 +00:00
homarr-renovate[bot] c2b2b098a1 fix(deps): update dependency @ctrl/qbittorrent to ^9.9.1 (#4229)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-11 01:52:48 +00:00
homarr-crowdin[bot] 4f74395000 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-11 00:46:35 +00:00
Meier Lukas 073ede3aad chore: update bug report template 2025-10-10 23:09:36 +02:00
Releases Homarr 40f9ce0530 chore(release): 1.41.0 [skip ci] 2025-10-10 19:15:36 +00:00
homarr-releases[bot] 92802a37db chore(release): automatic release v1.41.0 2025-10-10 19:14:15 +00:00
Meier Lukas 4c2e352aca feat(dynamic-sections): add custom css classes option (#4256) 2025-10-10 19:59:41 +02:00
Meier Lukas 3b708c5ebd feat(integrations): allow changing secret kinds of existing integration (#4254) 2025-10-10 19:59:23 +02:00
Meier Lukas 50a23d76e3 feat(weather-widget): add imperial windspeed option (#4253) 2025-10-10 19:59:05 +02:00
homarr-renovate[bot] 6d0a1452a6 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.10 (#4255)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-10 14:30:52 +00:00
homarr-update-contributors[bot] a9f73bc279 chore: update contributors (#4252)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-10-10 12:35:36 +00:00
homarr-renovate[bot] 76bc24b06a fix(deps): update dependency eslint-plugin-react-hooks to v6 (#4231)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-10 13:43:07 +02:00
homarr-crowdin[bot] 196a9b4b6d chore(lang): update translations from crowdin (#4250)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-10 13:41:03 +02:00
Meier Lukas eb39eea87f chore: update bug report template 2025-10-10 13:40:09 +02:00
homarr-renovate[bot] e0fe6d5b81 chore(deps): update dependency eslint to ^9.37.0 (#4249)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-09 12:24:54 +00:00
homarr-renovate[bot] 530335eecc chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.52.4 (#4244)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 18:42:31 +00:00
homarr-renovate[bot] c35c15c635 fix(deps): update dependency fast-xml-parser to ^5.3.0 (#4245)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 17:33:46 +00:00
homarr-renovate[bot] e7267548fe fix(deps): update dependency swagger-ui-react to ^5.29.3 (#4238)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 17:31:57 +00:00
homarr-renovate[bot] ec09fb70a9 fix(deps): update dependency @kubernetes/client-node to ^1.4.0 (#4247)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 16:38:39 +00:00
homarr-renovate[bot] 7e500f772d fix(deps): update testcontainers-node monorepo to ^11.7.1 (#4213)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 11:21:30 +00:00
homarr-renovate[bot] c9841dfb47 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.9 (#4235)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-08 01:55:12 +00:00
homarr-crowdin[bot] 6aa127e57a chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-08 00:48:02 +00:00
homarr-crowdin[bot] bd6761cb75 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-07 20:57:52 +00:00
homarr-renovate[bot] 982a0c96a5 fix(deps): update mantine monorepo to ^8.3.3 (#4242)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 19:28:00 +00:00
homarr-renovate[bot] 0ff0b17c28 chore(deps): update pnpm to v10.18.0 (#4239)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 15:33:42 +00:00
homarr-renovate[bot] 055770c5e8 fix(deps): update dependency swagger-ui-react to ^5.29.2 (#4212)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 10:32:59 +00:00
homarr-renovate[bot] 3934252053 fix(deps): update dependency drizzle-orm to ^0.44.6 (#4237)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 10:32:37 +00:00
homarr-renovate[bot] 35172fa910 fix(deps): update react monorepo to v19.2.0 (#4230)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 07:35:22 +00:00
homarr-renovate[bot] 9e059a9632 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.8 (#4234)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-07 06:43:09 +00:00
homarr-renovate[bot] 82cd072753 chore(deps): update react monorepo (#4221)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-06 17:29:00 +00:00
homarr-renovate[bot] ee05137351 fix(deps): update dependency @ctrl/qbittorrent to ^9.9.0 (#4228)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-06 08:40:41 +00:00
homarr-renovate[bot] d9de9694c0 fix(deps): update dependency winston to v3.18.3 (#4222)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-06 07:33:09 +00:00
homarr-renovate[bot] 915a759d7e chore(deps): update dependency @types/node to ^22.18.8 (#4225)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-06 07:32:12 +00:00
homarr-renovate[bot] cf2977f821 fix(deps): update dependency @ctrl/deluge to ^7.4.0 (#4227)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-06 06:43:46 +00:00
homarr-crowdin[bot] c072e19150 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-06 00:49:37 +00:00
homarr-renovate[bot] 4da24060c9 chore(deps): update dependency typescript to ^5.9.3 (#4223)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 21:27:02 +00:00
homarr-renovate[bot] 84ace42aa5 fix(deps): update dependency winston to v3.18.1 (#4220)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 07:28:09 +00:00
homarr-renovate[bot] 040786353d chore(deps): update dependency @types/react to v19.1.16 (#4207)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 06:39:12 +00:00
homarr-renovate[bot] e1162c7907 fix(deps): update dependency winston to v3.18.0 (#4219)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 04:37:00 +00:00
homarr-renovate[bot] e827f6653f fix(deps): update dependency typescript-eslint to ^8.45.0 (#4215)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 04:36:38 +00:00
homarr-renovate[bot] 67184890ec chore(deps): update dependency cross-env to ^10.1.0 (#4216)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 03:24:19 +00:00
homarr-renovate[bot] 340f8f98e4 fix(deps): update dependency dockerode to ^4.0.9 (#4214)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 03:20:13 +00:00
homarr-renovate[bot] 5955ae6f8b fix(deps): update dependency @octokit/auth-app to ^8.1.1 (#4217)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 03:19:25 +00:00
homarr-renovate[bot] af448f0085 fix(deps): update dependency dotenv to ^17.2.3 (#4218)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-05 02:05:41 +00:00
homarr-crowdin[bot] b4cfc3bf8b chore(lang): update translations from crowdin (#4203)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-04 15:13:35 +02:00
homarr-renovate[bot] a21fbd26da fix(deps): update testcontainers-node monorepo to ^11.7.0 (#4211)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-04 08:36:05 +00:00
homarr-renovate[bot] eb7a3a31f0 fix(deps): update dependency swagger-ui-react to ^5.29.1 (#4210)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-04 08:34:49 +00:00
Releases Homarr 6ce712794a chore(release): 1.40.0 [skip ci] 2025-10-03 19:14:43 +00:00
homarr-releases[bot] aa67e109dd chore(release): automatic release v1.40.0 2025-10-03 19:13:40 +00:00
homarr-renovate[bot] 24c8dde969 chore(deps): update dependency @types/react to v19.1.15 (#4197)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-03 12:54:48 +00:00
homarr-update-contributors[bot] fdf48d6184 chore: update contributors (#4205)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-10-03 12:34:22 +00:00
Meier Lukas 6e93c3b608 feat(media-server): add stats for nerds (#4170) 2025-10-02 19:54:53 +02:00
Meier Lukas dcb845b609 feat(medias): support upload of multiple items (#4169) 2025-10-02 19:54:40 +02:00
Meier Lukas f82f343631 feat(about): add hotkeys list (#4165) 2025-10-02 19:54:30 +02:00
Meier Lukas b76003de9b feat(media-transcoding): add periodic live updates (#4166) 2025-10-02 19:54:20 +02:00
Meier Lukas 514034d184 feat(translations): add crowdin live support (#4177) 2025-10-02 19:54:08 +02:00
homarr-renovate[bot] 878f8f3d60 chore(deps): update dependency @vitejs/plugin-react to ^5.0.4 (#4202)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-02 14:31:47 +00:00
homarr-renovate[bot] 2540c94697 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.52.3 (#4200)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-02 07:29:42 +00:00
homarr-renovate[bot] 8a552b81d8 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.9 (#4199)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-02 01:54:52 +00:00
homarr-crowdin[bot] 0dd076e6c9 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-10-02 00:47:34 +00:00
homarr-renovate[bot] b81a62127e chore(deps): update dependency @types/react to v19.1.14 (#4196)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-01 18:41:19 +00:00
homarr-renovate[bot] 2ec0ffec5e fix(deps): update dependency drizzle-kit to ^0.31.5 (#4195)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-10-01 12:59:49 +00:00
homarr-renovate[bot] 82c31efc02 fix(deps): update dependency jotai to ^2.15.0 (#4192)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-30 16:37:46 +00:00
homarr-renovate[bot] b7b79d8722 fix(deps): update trpc monorepo to ^11.6.0 (#4188)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-30 01:54:38 +00:00
homarr-renovate[bot] 88651171ad chore(deps): update dependency node to v22.20.0 (#4183)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-29 22:21:10 +00:00
homarr-renovate[bot] 026d9b8418 fix(deps): update dependency mysql2 to v3.15.1 (#4185)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-29 18:42:03 +00:00
homarr-renovate[bot] 89a1cc84bc fix(deps): update turbo monorepo to ^2.5.8 (#4180)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-29 03:15:31 +00:00
homarr-renovate[bot] bd6655b585 chore(deps): update node.js to v22.20.0 (#4182)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-29 02:01:38 +00:00
homarr-crowdin[bot] faacdc03d4 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-29 00:50:12 +00:00
homarr-renovate[bot] 6d3005fb70 fix(deps): update dependency sass to ^1.93.2 (#4171)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 22:21:55 +00:00
homarr-renovate[bot] 82ce369c04 fix(deps): update turbo monorepo to ^2.5.7 (#4176)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 18:39:39 +00:00
homarr-renovate[bot] 6932f3198a fix(deps): update mantine monorepo to ^8.3.2 (#4179)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 18:37:57 +00:00
homarr-renovate[bot] 333ef48351 fix(deps): update nextjs monorepo to v15.5.4 (#4178)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 17:26:25 +00:00
homarr-crowdin[bot]andMeier Lukas ca1b3383e8 chore(lang): updated translations from crowdin
* ci: add write permission to download translations

* chore(lang): update translations from crowdin

---------

Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-28 12:05:13 +00:00
homarr-renovate[bot] bb47f163d3 fix(deps): update dependency ioredis to v5.8.0 (#4174)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 08:57:22 +00:00
homarr-renovate[bot] 5f4734ef6b fix(deps): update tanstack-query monorepo to ^5.90.2 (#4163)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 08:34:23 +00:00
homarr-renovate[bot] 1346370ce3 fix(deps): update tiptap monorepo to v2.26.2 (#4173)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 07:27:23 +00:00
homarr-renovate[bot] 4da3aa43f3 fix(deps): update dependency better-sqlite3 to ^12.4.1 (#4162)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 02:06:07 +00:00
homarr-renovate[bot] 319aafe35d fix(deps): update dependency fastify to ^5.6.1 (#4167)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-28 02:05:49 +00:00
homarr-renovate[bot] 16dff3f982 fix(deps): update dependency typescript-eslint to ^8.44.1 (#4168)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 23:31:06 +00:00
homarr-renovate[bot] 2049b90c5b fix(deps): update dependency sass to ^1.93.1 (#4149)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 22:27:11 +00:00
homarr-renovate[bot] 4ebfb33f45 chore(deps): update pnpm to v10.17.1 (#4136)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 14:20:50 +00:00
homarr-renovate[bot] d42d81d03c chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.6 (#4164)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 10:45:33 +00:00
homarr-renovate[bot] e5dddc8444 fix(deps): update tanstack-query monorepo to ^5.90.1 (#4161)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 08:36:29 +00:00
homarr-renovate[bot] 0b797c1fd0 fix(deps): update dependency better-sqlite3 to ^12.3.0 (#4160)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-27 07:26:22 +00:00
Meier Lukas 2e56d9a6c7 chore: update bug report template 2025-09-26 23:40:02 +02:00
Releases Homarr 499bdf110a chore(release): 1.39.0 [skip ci] 2025-09-26 19:15:07 +00:00
homarr-releases[bot] 993a0d78ef chore(release): automatic release v1.39.0 2025-09-26 19:13:45 +00:00
Meier Lukas 5b32f1eb79 feat(weather): add periodic live updates (#4155) 2025-09-26 20:42:13 +02:00
castielwaverly 0b15561f20 fix: Recalculate time ago on re-render (#4107) 2025-09-26 20:30:56 +02:00
Meier Lukas 2443d7300b feat(calendar): add periodic live updates (#4154) 2025-09-26 20:03:34 +02:00
Meier Lukas 0a908de1e7 feat(calendar): add homeassistant support (#4152) 2025-09-26 17:34:33 +02:00
homarr-update-contributors[bot] e1a232b37a chore: update contributors (#4153)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-26 12:39:02 +00:00
Meier Lukas c8a6cdae81 fix(calendar): support multi-day events (#4151) 2025-09-25 21:55:20 +02:00
homarr-renovate[bot] f0a0b9bca1 fix(deps): update dependency zod to ^4.1.11 (#4128)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-25 19:27:40 +00:00
Meier Lukas 3aea77a64f chore(docs): update sitemap 2025-09-25 21:08:37 +02:00
Meier Lukas b7d1d4ceef fix(calendar): missing badge for sonarr series (#4150) 2025-09-25 20:19:21 +02:00
homarr-renovate[bot] aced8c77bb fix(deps): update dependency sass to ^1.93.0 (#4147)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-25 15:23:12 +00:00
homarr-renovate[bot] 717d4ccff2 chore(deps): update dependency semantic-release to ^24.2.9 (#4146)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 20:34:42 +00:00
homarr-renovate[bot] 441e1ceba2 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.52.2 (#4144)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 21:50:50 +02:00
homarr-renovate[bot] 9ad8c6dbf1 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.7 (#4140)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 21:49:15 +02:00
homarr-renovate[bot] c17e5e8774 chore(deps): update dependency eslint to ^9.36.0 (#4145)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 16:39:21 +00:00
homarr-renovate[bot] 0c577a6f11 fix(deps): update dependency zod-validation-error to ^4.0.2 (#4142)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 10:35:41 +00:00
homarr-renovate[bot] a5ec293dda chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.51.0 (#4112)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-24 09:33:50 +00:00
homarr-renovate[bot] 484f0bdca4 fix(deps): update dependency dns-caching to ^0.2.7 (#4137)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-23 11:21:20 +00:00
homarr-renovate[bot] 7e4bde03e4 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.8 (#4141)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-23 09:33:29 +00:00
homarr-renovate[bot] 2c3f7c02d6 chore(deps): update dependency @types/node to ^22.18.6 (#4127)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-23 05:30:14 +00:00
homarr-renovate[bot] 1892987976 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.6 (#4139)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-23 04:36:03 +00:00
homarr-renovate[bot] bd5065ba88 chore(deps): update dependency esbuild to ^0.25.10 (#4134)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 17:28:44 +00:00
homarr-renovate[bot] 9b63fb6df6 chore(deps): update dependency @vitejs/plugin-react to ^5.0.3 (#4129)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 17:25:57 +00:00
homarr-renovate[bot] 588f8a4faa chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.25.10 (#4135)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 16:42:37 +00:00
homarr-renovate[bot] cf892f517f fix(deps): update dependency mysql2 to v3.15.0 (#4125)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 16:25:37 +00:00
homarr-renovate[bot] 3eb2b3795b chore(deps): update pnpm to v10.17.0 (#4133)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 16:19:21 +00:00
homarr-renovate[bot] 2c3856a2a9 fix(deps): update dependency dns-caching to ^0.2.6 (#4131)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 16:14:26 +00:00
homarr-renovate[bot] 83df2ec58b fix(deps): update testcontainers-node monorepo to ^11.6.0 (#4130)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-22 10:34:51 +00:00
homarr-renovate[bot] 303067b0c8 fix(deps): update dependency zod to ^4.1.9 (#4094)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 22:29:44 +00:00
homarr-renovate[bot] 9b8ec975e4 chore(deps): update dependency @types/dockerode to ^3.3.44 (#4126)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 22:29:15 +00:00
homarr-renovate[bot] 92811db400 chore(deps): update dependency @types/node to ^22.18.5 (#4117)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 22:28:12 +00:00
homarr-renovate[bot] eb85804cff fix(deps): update dependency @ctrl/deluge to ^7.3.0 (#4121)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 16:38:14 +00:00
homarr-renovate[bot] 25e32e0010 chore(deps): update dependency tar-fs@&gt;&#x3d;3.0.0 &lt;3.0.9 to >=3.1.1 (#4124)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 16:34:31 +00:00
homarr-renovate[bot] 4af13a8d32 chore(deps): update dependency tar-fs@&gt;&#x3d;2.0.0 &lt;2.1.3 to >=3.1.1 (#4123)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 15:28:08 +00:00
homarr-renovate[bot] 11f29d8def fix(deps): update tanstack-query monorepo to ^5.89.0 (#4122)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 09:28:40 +00:00
homarr-renovate[bot] c0ed041bdf fix(deps): update dependency @ctrl/qbittorrent to ^9.8.0 (#4118)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 07:30:25 +00:00
homarr-renovate[bot] 2eb82108a8 fix(deps): update dependency @ctrl/transmission to ^7.4.0 (#4120)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-21 06:41:05 +00:00
homarr-renovate[bot] 034dcacb08 fix(deps): update dependency next-intl to v4.3.9 (#4096)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 21:26:27 +00:00
homarr-renovate[bot] 966e1ac81e chore(deps): update dependency @types/node to ^22.18.4 (#4116)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 21:25:25 +00:00
homarr-renovate[bot] bcc71e6eaa fix(deps): update dependency node-ical to ^0.21.0 (#4111)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 20:33:50 +00:00
homarr-renovate[bot] 61ae703014 fix(deps): update dependency @tabler/icons-react to ^3.35.0 (#4115)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 19:24:29 +00:00
homarr-renovate[bot] 7ea746bed1 fix(deps): update dependency typescript-eslint to ^8.44.0 (#4114)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 17:25:55 +00:00
homarr-renovate[bot] c0197d0e96 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.50.2 (#4110)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-20 07:27:51 +00:00
Meier Lukas 75f9ead209 chore: update bug report template 2025-09-19 21:34:27 +02:00
Releases Homarr c9983ad5a9 chore(release): 1.38.0 [skip ci] 2025-09-19 19:14:52 +00:00
homarr-releases[bot] 5045c64fe2 chore(release): automatic release v1.38.0 2025-09-19 19:13:45 +00:00
homarr-renovate[bot] 69d6ffd9ce chore(deps): update dependency jsdom to v27 (#4102)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-19 17:03:36 +02:00
Meier Lukas 3c2e6a852f feat(system-resources-widget): add has-shadow option (#4093) 2025-09-19 16:58:46 +02:00
Meier Lukas 312e084e2c feat(system-resources-widget): add label display mode option (#4086) 2025-09-19 16:19:58 +02:00
homarr-renovate[bot] 2a67d2f9da chore(deps): update dependency @types/react to v19.1.13 (#4100)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-19 16:16:06 +02:00
homarr-renovate[bot] a81634d239 chore(deps): update dependency @types/node to ^22.18.3 (#4101)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-19 16:15:30 +02:00
homarr-renovate[bot] 288e37553c chore(deps): update pnpm to v10.16.1 (#4098)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-19 16:14:31 +02:00
homarr-renovate[bot] 03545cee52 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.12.2 (#4104)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-19 16:13:34 +02:00
homarr-update-contributors[bot] 88c718eb41 chore: update contributors (#4103)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-19 16:12:49 +02:00
homarr-update-contributors[bot] ccf7e540dc chore: update integrations list readme (#4099)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-17 19:51:13 +02:00
Meier Lukas 9f2b868fce feat(redis): add database index environment variable (#4092) 2025-09-17 19:08:00 +02:00
Nicolas NewmanandMeier Lukas fedbff3fd1 feat(integrations): add ICal (#3980)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-09-17 18:57:50 +02:00
homarr-renovate[bot] 0a1a75dc5f chore(deps): update pnpm to v10.16.0 (#4097)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-17 13:39:05 +00:00
homarr-renovate[bot] 2d3af7afca fix(deps): update dependency next-intl to v4.3.8 (#4095)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-17 11:26:44 +00:00
homarr-renovate[bot] 6e31e25671 fix(deps): update dependency zod to ^4.1.8 (#4090)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-16 21:21:51 +00:00
homarr-renovate[bot] 12b2b82b4e fix(deps): update tanstack-query monorepo to ^5.87.4 (#4071)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-16 07:22:08 +00:00
homarr-renovate[bot] 94fb9b2502 fix(deps): update nextjs monorepo to v15.5.3 (#4087)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-16 06:29:06 +00:00
homarr-renovate[bot] 687cfd4cc7 fix(deps): update dependency zod to ^4.1.7 (#4089)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-16 06:28:48 +00:00
homarr-renovate[bot] 5babf0b240 chore(deps): update dependency @semantic-release/github to ^11.0.6 (#4088)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-16 05:21:44 +00:00
homarr-renovate[bot] 4287d1743b fix(deps): update dependency undici to v7.16.0 (#4083)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-14 17:18:49 +00:00
homarr-renovate[bot] b749dc110d chore(deps): update dependency proxmox-api&gt;undici to v7.16.0 (#4082)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-14 17:18:22 +00:00
homarr-renovate[bot] 0e563fc47f fix(deps): update dependency swagger-ui-react to ^5.29.0 (#4081)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-14 14:28:15 +00:00
Meier Lukas 1d485cf26c docs(readme): add screenshot of example dashboard (#4077) 2025-09-14 15:59:16 +02:00
Meier Lukas 69b46959aa ci(on-release): update bug report template failing (#4073) 2025-09-14 00:49:52 +02:00
Meier Lukas fe676daad2 feat(tasks): add one second interval (#4074) 2025-09-14 00:45:23 +02:00
homarr-renovate[bot] 43d5a27552 fix(deps): update dependency dockerode to ^4.0.8 (#4076)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 22:19:17 +00:00
homarr-renovate[bot] 809fbd5176 fix(deps): update dependency typescript-eslint to ^8.43.0 (#4075)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 17:17:35 +00:00
Meier Lukas 5c65e1a75f chore: update bug report template 2025-09-13 17:20:11 +02:00
Meier Lukas 86cf290c31 refactor(ci): migrate tibdex/github-app-token to actions/create-github-app-token (#4072) 2025-09-13 17:15:33 +02:00
Meier Lukas b398be0303 ci(stability-days): still runs for renovate branches 2025-09-13 14:37:18 +02:00
homarr-renovate[bot] 1412b6c0d3 fix(deps): update mantine monorepo to ^8.3.1 (#4070)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 12:31:01 +00:00
Meier Lukas 6b3672a04d fix(system-resources-widget): chart resizing not working well (#4069) 2025-09-13 14:13:34 +02:00
Meier Lukas b30cc21dbe feat(system-resources-widget): add visible charts option (#4069) 2025-09-13 14:13:18 +02:00
homarr-renovate[bot] 8c24da8732 fix(deps): update mantine monorepo to ^8.3.0 (#4068)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 11:16:56 +00:00
Meier Lukas cb7a6abca7 feat(notebook-widget): add confirmation on dismiss (#4064) 2025-09-13 12:32:21 +02:00
homarr-renovate[bot] cd4c236e5e fix(deps): update dependency mysql2 to v3.14.5 (#4067)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 09:19:52 +00:00
homarr-renovate[bot] 6880d61d6b fix(deps): update dependency jotai to ^2.14.0 (#4066)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-13 06:24:47 +00:00
homarr-crowdin[bot] 764d5eb0ea chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-13 00:46:30 +00:00
Meier Lukas b7d7767343 chore(docs): update sitemap 2025-09-13 01:11:55 +02:00
homarr-renovate[bot] f7d6f3d9e1 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.7 [security] (#4063)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-12 22:24:32 +00:00
Meier Lukas 3b7e3da17c ci: add missing if for pnpm action-setup (#4062) 2025-09-12 23:28:39 +02:00
Meier Lukasandhomarr-renovate[bot] f360c9768a chore(deps): update actions/setup-node action to v5 (#4060)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-12 21:59:37 +02:00
homarr-update-contributors[bot] 8df7fdcab4 chore: update contributors (#4061)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-12 19:54:34 +00:00
Releases Homarr b8f0d9a21f chore(release): 1.37.0 [skip ci] 2025-09-12 19:19:10 +00:00
homarr-releases[bot] 73a50fa687 chore(release): automatic release v1.37.0 2025-09-12 19:18:10 +00:00
Meier Lukas 78626121dd revert(deps): update actions/setup-node action to v5 (#4058) 2025-09-12 21:16:25 +02:00
homarr-releases[bot] c69602ff07 chore(release): automatic release v1.37.0 2025-09-12 19:13:23 +00:00
homarr-update-contributors[bot] 7c22e1d05d chore: update integrations list readme (#4056)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-12 19:22:10 +02:00
ManuelandMeier Lukas dc08bacebf feat(integrations): add truenas (#3745)
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-09-12 19:18:20 +02:00
Meier Lukas 26eb2c08c9 fix(update-checker): cached through updates (#4046) 2025-09-12 18:50:41 +02:00
Meier Lukas f7471b6c63 fix(boards): issues with old-import board name containing spaces (#4052) 2025-09-12 18:44:37 +02:00
homarr-renovate[bot] 3703f428b0 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.12.1 [security] (#4055)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-12 16:43:21 +00:00
homarr-renovate[bot] 1019657a63 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.50.1 (#4054)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-12 16:52:58 +02:00
homarr-crowdin[bot] 789ac65cbd chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-11 00:48:42 +00:00
homarr-renovate[bot] d7902f80c2 chore(deps): update dependency semantic-release to ^24.2.8 (#4048)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 23:20:34 +00:00
homarr-renovate[bot] 44d4cec3ff chore(deps): update dependency @semantic-release/release-notes-generator to ^14.1.0 (#4047)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 22:20:12 +00:00
Meier Lukas a843f6043b fix(api): page is crashing (#4039) 2025-09-10 21:18:59 +02:00
Meier Lukas bfcbffbdc6 feat(integration): add github app authentication (#3968) 2025-09-10 21:17:36 +02:00
Meier Lukas 4d57c7ca13 fix(plex-integration): unknown badge shown for added tv-shows (#4032) 2025-09-10 20:46:42 +02:00
homarr-renovate[bot] a7976e9d70 fix(deps): update trpc monorepo to ^11.5.1 (#4045)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 17:19:30 +00:00
homarr-renovate[bot] a149d8c3c1 fix(deps): update dependency fastify to ^5.6.0 (#4042)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 16:25:35 +00:00
homarr-renovate[bot] 3e1285cacd chore(deps): update dependency eslint to ^9.35.0 (#4044)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 16:25:12 +00:00
homarr-renovate[bot] 5b24eb3074 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.5 [security] (#4041)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 16:24:34 +00:00
homarr-renovate[bot] 6389fd8807 chore(deps): update babel monorepo to >=7.28.4 (#4043)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-10 15:21:47 +00:00
homarr-renovate[bot] 1d9eb9bf24 chore(deps): update actions/setup-node action to v5 (#4033)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-09 21:36:11 +02:00
homarr-renovate[bot] 3c9f7ecbf8 chore(deps): update dependency @types/node to ^22.18.1 (#4036)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-09 19:30:11 +00:00
homarr-renovate[bot] cd90eaae9d fix(deps): update dependency next-intl to v4.3.7 (#4038)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-09 19:19:22 +00:00
homarr-renovate[bot] fbb86c452d fix(deps): update dependency @extractus/feed-extractor to v7.1.7 (#4034)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-09 19:10:14 +00:00
homarr-renovate[bot] a1b5f5ceea fix(deps): update dependency next-intl to v4.3.6 (#4035)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-09 19:09:12 +00:00
Meier Lukas eb5af11643 fix(adguard-integration): parse error with protection_disabled_duration field (#4018) 2025-09-08 16:09:42 +02:00
Meier Lukas 7ac2a81f94 fix(iframe): disable scrolling not working (#4017) 2025-09-08 16:09:12 +02:00
homarr-renovate[bot] ecf1bd98b7 fix(deps): update dependency swagger-ui-react to ^5.28.1 (#4029)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-08 10:22:50 +00:00
homarr-renovate[bot] 8231efa281 fix(deps): update dependency sass to ^1.92.1 (#4031)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-08 10:22:21 +00:00
homarr-renovate[bot] 1323bb276f fix(deps): update dependency dotenv to ^17.2.2 (#4024)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-08 10:01:47 +00:00
homarr-renovate[bot] 2eef4a8304 fix(deps): update dependency sass to ^1.92.0 (#4025)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-08 10:01:15 +00:00
homarr-crowdin[bot] 842f4f6284 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-08 10:01:00 +00:00
homarr-renovate[bot] 4fc38bcd5b fix(deps): update dependency @gitbeaker/rest to ^43.5.0 (#4023)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-07 16:21:29 +00:00
homarr-renovate[bot] 99179e4e7d fix(deps): update dependency typescript-eslint to ^8.42.0 (#4022)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-07 13:24:28 +00:00
homarr-crowdin[bot] 8fa245910c chore(lang): update translations from crowdin (#4021)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-07 14:28:54 +02:00
homarr-renovate[bot] b50ec029fa chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to >=7.1.4 (#4016)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-06 11:17:10 +00:00
homarr-renovate[bot] 8bf278f603 fix(deps): update dependency mysql2 to v3.14.4 (#4013)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-06 10:42:44 +00:00
Meier Lukas de33439b22 fix(video-widget): hls videos not working (#4015) 2025-09-06 12:29:30 +02:00
homarr-renovate[bot] b65ec27c0d chore(deps): update pnpm to v10.15.1 (#4014)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-06 10:19:12 +00:00
homarr-crowdin[bot] 1f4a9037d7 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-06 00:46:43 +00:00
homarr-renovate[bot] e70074b219 fix(deps): update dependency @ctrl/deluge to ^7.2.0 (#4009)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 23:19:40 +00:00
homarr-renovate[bot] bc94e34ada fix(deps): update dependency @ctrl/transmission to ^7.3.0 (#4011)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 22:19:45 +00:00
Meier Lukas d9440087b7 chore: update bug report template 2025-09-05 23:23:09 +02:00
homarr-renovate[bot] 32b2a09ab4 fix(deps): update dependency @ctrl/qbittorrent to ^9.7.0 (#4010)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 21:19:04 +00:00
Releases Homarr 5d8e2a3c7b chore(release): 1.36.1 [skip ci] 2025-09-05 21:14:37 +00:00
Meier Lukas dd67dd794a chore(release): hotfix for dns-caching (#4008) 2025-09-05 23:13:20 +02:00
Meier Lukas 10668ee359 fix(dns): disable caching by default (#4007) 2025-09-05 23:05:30 +02:00
Meier Lukas d5eb812b72 chore: update bug report template 2025-09-05 22:55:05 +02:00
Releases Homarr 2ac96a11b7 chore(release): 1.36.0 [skip ci] 2025-09-05 19:14:50 +00:00
homarr-releases[bot] 52f0b86e7b chore(release): automatic release v1.36.0 2025-09-05 19:13:51 +00:00
homarr-renovate[bot] d7146d82d1 fix(deps): update tanstack-query monorepo to ^5.87.1 (#3997)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 17:19:13 +00:00
homarr-renovate[bot] eef6b86ad6 fix(deps): update mantine monorepo to ^8.2.8 (#4004)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 16:23:46 +00:00
Meier Lukas 9cb8261ddc fix(header): avatar menu flashes when opening on mobile (#3999) 2025-09-05 18:17:30 +02:00
Meier Lukas d4f73d2b39 ci: add job to skip renovate stability days for non renovate prs (#3967) 2025-09-05 18:17:07 +02:00
homarr-update-contributors[bot] e4f14140a3 chore: update contributors (#4003)
Co-authored-by: Homarr Update Contributors <210161987+homarr-update-contributors[bot]@users.noreply.github.com>
2025-09-05 18:16:33 +02:00
homarr-crowdin[bot] b77d8114ab chore(lang): update translations from crowdin (#3995)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-05 11:51:50 +02:00
homarr-renovate[bot] 0df1555b50 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.50.0 (#4002)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-05 08:25:05 +00:00
b2eb2c32f6 feat(rss-widget): add hide description option (#4000)
Co-authored-by: HeapReaper <kelivn@heapreaper.nl>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2025-09-04 22:57:24 +02:00
homarr-renovate[bot] b34440470f chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.6 [security] (#3994)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-04 20:53:48 +02:00
Meier Lukas 047654351a fix(deps): tsx breaks imports like dns-caching (#3998) 2025-09-04 20:07:13 +02:00
homarr-renovate[bot] 4e4483c42d fix(deps): update tanstack-query monorepo to ^5.85.6 (#3996)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-04 17:06:31 +00:00
homarr-renovate[bot] 5e92e66803 fix(deps): update dependency dayjs to ^1.11.18 (#3982)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-04 04:17:26 +00:00
homarr-renovate[bot] 83fec579e7 chore(deps): update dependency @semantic-release/github to ^11.0.5 (#3993)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-03 20:54:28 +00:00
Meier Lukas 1a30ccc857 Merge branch 'main' into dev 2025-09-03 21:08:58 +02:00
Meier Lukas 0ee023adf3 chore: update bug report template 2025-09-03 21:06:34 +02:00
Releases Homarr 1bcab1797b chore(release): 1.35.1 [skip ci] 2025-09-03 18:53:33 +00:00
Meier Lukas 8ff29b82e5 fix(db): increase integration kind limit from 16 to 64 characters 2025-09-03 20:51:28 +02:00
Meier Lukas fb6b5e88ff fix: add dns caching (#3736) 2025-09-03 17:37:18 +02:00
homarr-crowdin[bot] ca488f8210 chore(lang): update translations from crowdin (#3989)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-03 17:21:36 +02:00
Meier Lukas d317cacbe8 feat(widget): show name in edit modal (#3970) 2025-09-02 21:53:57 +02:00
Meier Lukas 65b9ddd771 fix(widgets): improve integration selection (#3969) 2025-09-02 21:52:47 +02:00
oussama Dahmazandoussama Dahmaz 3e59c20dba feat(kubernetes): add Talos providers (#3979)
Co-authored-by: oussama Dahmaz <dahmaz@MacBook-Pro-de-odahmaz.local>
2025-09-02 20:29:18 +02:00
homarr-renovate[bot] d2e9b5e983 fix(deps): update dependency swagger-ui-react to ^5.28.0 (#3985)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-02 17:18:51 +00:00
homarr-renovate[bot] 75683c206d fix(deps): update dependency zod-form-data to ^3.0.1 (#3986)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-02 16:24:06 +00:00
homarr-renovate[bot] a3dde2e7ee fix(deps): update dependency @ianvs/prettier-plugin-sort-imports to ^4.7.0 (#3977)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-02 12:29:49 +00:00
homarr-renovate[bot] 7b26a386eb chore(deps): update dependency @vitejs/plugin-react to ^5.0.2 (#3981)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-02 06:29:04 +00:00
homarr-renovate[bot] 032f7ffd29 fix(deps): update dependency dayjs to ^1.11.15 (#3975)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-02 05:21:51 +00:00
homarr-renovate[bot] 2b1a3de8df fix(deps): update dependency @ianvs/prettier-plugin-sort-imports to ^4.6.3 (#3976)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-09-01 14:21:33 +00:00
homarr-crowdin[bot] 4823c0db8b chore(lang): update translations from crowdin (#3973)
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-09-01 06:28:14 +02:00
homarr-renovate[bot] b0fe8a9f65 fix(deps): update nextjs monorepo to v15.5.2 (#3972)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-31 23:14:02 +00:00
homarr-renovate[bot] a1def95852 fix(deps): update nextjs monorepo to v15.5.1 (#3971)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-31 18:25:39 +00:00
homarr-renovate[bot] 9c2d50de91 chore(deps): update dependency vite@&gt;&#x3d;5.0.0 &lt;&#x3d;5.4.18 to v7 (#3954)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-31 11:51:35 +02:00
homarr-renovate[bot] 0e5f43c1c3 fix(deps): update dependency sass to ^1.91.0 (#3965)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-31 09:46:55 +00:00
homarr-renovate[bot] 42071e36ca chore(deps): update dependency tar-fs@&gt;&#x3d;2.0.0 &lt;2.1.3 to v3 (#3953)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-31 11:42:41 +02:00
homarr-crowdin[bot] de7699689f chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-08-31 11:18:34 +02:00
homarr-renovate[bot] be0e78371e fix(deps): update dependency typescript-eslint to ^8.41.0 (#3963)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 18:54:54 +00:00
homarr-renovate[bot] ea4960e113 fix(deps): update dependency drizzle-orm to ^0.44.5 (#3962)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 16:35:30 +00:00
homarr-renovate[bot] 916542210d fix(deps): update dependency zod to ^4.1.5 (#3961)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 13:26:09 +00:00
homarr-renovate[bot] 94eb6772b9 fix(deps): update dependency zod to ^4.1.1 (#3950)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 12:35:09 +00:00
homarr-renovate[bot] afe10b8715 chore(deps): update node.js (#3959)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 12:34:03 +00:00
homarr-renovate[bot] 99bfc4a0b6 chore(deps): update react monorepo (#3955)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 12:32:23 +00:00
homarr-renovate[bot] d58faf5976 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.5 (#3958)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 12:31:21 +00:00
homarr-renovate[bot] cf98156bdc chore(deps): update dependency brace-expansion@&gt;&#x3d;2.0.0 &lt;&#x3d;2.0.1 to v4 (#3952)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 13:49:20 +02:00
homarr-renovate[bot] f166d153fe fix(deps): update dependency undici to v7.15.0 (#3949)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 11:30:46 +00:00
homarr-renovate[bot] dc9a83ba3c chore(deps): update dependency proxmox-api&gt;undici to v7.15.0 (#3945)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 11:30:15 +00:00
homarr-renovate[bot] 0e3c6f0f97 chore(deps): update dependency @types/node to ^22.18.0 (#3956)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 11:08:51 +00:00
homarr-renovate[bot] 51b06922bd chore(deps): update babel monorepo to >=7.28.3 (#3940)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 11:08:30 +00:00
homarr-renovate[bot] 9f3e68fdfe fix(deps): update dependency @testcontainers/postgresql to ^11.5.1 (#3948)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 11:07:59 +00:00
homarr-renovate[bot] 88eed15faf fix(deps): update trpc monorepo to ^11.5.0 (#3951)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:59:36 +00:00
homarr-renovate[bot] f277ceb302 chore(deps): update dependency tar-fs@&gt;&#x3d;3.0.0 &lt;3.0.9 to >=3.1.0 (#3947)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:55:42 +00:00
homarr-renovate[bot] e0c9c0fab7 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.49.0 (#3957)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:47:51 +00:00
homarr-renovate[bot] 21bde0f3ea chore(deps): update dependency eslint to ^9.34.0 (#3942)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:47:27 +00:00
homarr-renovate[bot] 5d908093ce fix(deps): update mantine monorepo to ^8.2.7 (#3939)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:39:01 +00:00
homarr-renovate[bot] 6081a5af13 chore(deps): update dependency hono@&lt;4.6.5 to >=4.9.4 (#3943)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:31:01 +00:00
homarr-renovate[bot] a488efc6f8 chore(deps): update dependency nanoid@&gt;&#x3d;4.0.0 &lt;5.0.9 to >=5.1.5 (#3944)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:29:14 +00:00
homarr-renovate[bot] 24e4d718e2 chore(deps): update dependency rollup@&gt;&#x3d;4.0.0 &lt;4.22.4 to >=4.48.1 (#3946)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:26:07 +00:00
homarr-renovate[bot] 71c75a3507 chore(deps): update dependency esbuild@&lt;&#x3d;0.24.2 to >=0.25.9 (#3935)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:24:11 +00:00
homarr-renovate[bot] 5bd6757e22 chore(deps): update dependency axios@&gt;&#x3d;1.0.0 &lt;1.8.2 to >=1.11.0 (#3941)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:21:29 +00:00
homarr-renovate[bot] 81a7f3e93d fix(deps): update dependency next-intl to v4.3.5 (#3937)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:19:47 +00:00
homarr-renovate[bot] 93186c3be1 fix(deps): update dependency tsx to v4.20.5 (#3938)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:18:23 +00:00
homarr-renovate[bot] e695bccfc0 chore(deps): update dependency @types/react to v19.1.11 (#3933)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:17:37 +00:00
homarr-crowdin[bot] a12a86b672 chore(lang): updated translations from crowdin
Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com>
2025-08-30 10:16:49 +00:00
homarr-renovate[bot] feee4b3ad7 chore(deps): update dependency tmp@&lt;&#x3d;0.2.3 to >=0.2.5 (#3936)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:14:49 +00:00
homarr-renovate[bot] 36f2181643 chore(deps): update dependency concurrently to ^9.2.1 (#3934)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:11:46 +00:00
homarr-renovate[bot] bc746b67b4 chore(deps): update dependency @types/dockerode to ^3.3.43 (#3931)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:10:17 +00:00
homarr-renovate[bot] 0fb7fd4292 chore(deps): update dependency @types/pg to ^8.15.5 (#3932)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-30 10:07:30 +00:00
Meier Lukas 51f3cd2ce7 chore: update bug report template 2025-08-29 21:28:56 +02:00
homarr-renovate[bot] 8dea07250f chore(deps): update dependency brace-expansion@&gt;&#x3d;1.0.0 &lt;&#x3d;1.1.11 to v4 [security] (#3927)
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2025-08-29 21:28:19 +02:00
887 changed files with 88661 additions and 27633 deletions

No files matched your search

+191
View File
@@ -0,0 +1,191 @@
---
description: Comprehensive Homarr codebase architecture and conventions reference
alwaysApply: true
---
# Homarr Codebase Context
Homarr is an open-source, self-hosted dashboard for managing homelab services. It integrates with 50+ self-hosted apps (media servers, download clients, DNS, NAS, etc.) and provides a drag-and-drop widget-based UI.
## Tech Stack
- **Monorepo**: pnpm workspaces + Turborepo
- **Framework**: Next.js (App Router, `output: "standalone"`) — T3 Stack
- **Language**: TypeScript throughout
- **ORM**: Drizzle (supports SQLite via better-sqlite3, MySQL, PostgreSQL)
- **API**: tRPC (HTTP + WebSocket subscriptions) with superjson + OpenAPI bridge via `trpc-to-openapi`
- **Auth**: NextAuth v5 (database sessions, Credentials/LDAP/OIDC providers)
- **UI**: Mantine v7 (not Tailwind) + Tabler icons
- **State**: Jotai (atoms), TanStack Query (server state via tRPC)
- **Realtime**: WebSocket server (`ws`) for tRPC subscriptions, backed by Redis pub/sub
- **Cron**: `node-cron` in a standalone Fastify service (`apps/tasks`)
- **i18n**: next-intl with `[locale]` dynamic segment (prefix mode: `"never"`, locale from cookie)
- **Testing**: Vitest + jsdom, Playwright for E2E
- **Package manager**: pnpm 10.33.2, Node >= 24.15.0
## Repository Structure
```
homarr/
├── apps/
│ ├── nextjs/ # Main Next.js application (port 3000)
│ ├── tasks/ # Cron job runner + Fastify tRPC API (port 3002)
│ └── websocket/ # Standalone tRPC WebSocket server (port 3001)
├── packages/
│ ├── api/ # tRPC appRouter, procedures, OpenAPI
│ ├── auth/ # NextAuth config, providers, session, API keys
│ ├── db/ # Drizzle schema (3 DB drivers), migrations, queries
│ ├── core/ # Env validation, DB/Redis driver factories, logging
│ ├── definitions/ # Domain enums: WidgetKind, IntegrationKind, permissions
│ ├── widgets/ # All 39 dashboard widgets (definitions + components)
│ ├── integrations/ # Integration classes (HTTP clients to external apps)
│ ├── redis/ # Redis pub/sub channels, caching abstractions
│ ├── translation/ # next-intl setup, locale configs, lang JSON files
│ ├── ui/ # Shared Mantine components, theme, hooks
│ ├── validation/ # Shared zod schemas for API/forms
│ ├── common/ # Shared utilities, IDs, errors
│ ├── cron-jobs/ # Cron job implementations (25+ jobs)
│ ├── cron-jobs-core/ # Cron scheduling primitives
│ ├── cron-job-api/ # tRPC router for job management (start/stop/trigger)
│ ├── cron-job-status/ # Cron status via Redis
│ ├── boards/ # Board context, edit mode, cache updater
│ ├── modals/ # Modal primitives on Mantine
│ ├── modals-collection/ # Feature modals (apps, boards, docker, etc.)
│ ├── form/ # useZodForm (Mantine + zod resolver)
│ ├── forms-collection/# Reusable form UIs (new app, icon picker, upload)
│ ├── spotlight/ # Command palette / search with multiple modes
│ ├── request-handler/ # Server request handlers (feeds, integrations)
│ ├── notifications/ # Mantine notifications wrapper
│ ├── docker/ # Dockerode-based Docker access
│ ├── icons/ # Icon DB/repo integration
│ ├── image-proxy/ # Image proxy + caching
│ ├── ping/ # Reachability / ping utilities
│ ├── analytics/ # Server-side analytics (Umami)
│ ├── server-settings/ # Server setting keys/types
│ ├── settings/ # User-facing settings UI context
│ ├── old-import/ # Legacy Homarr import
│ ├── old-schema/ # Legacy Homarr zod schemas
│ └── cli/ # Node CLI for ops (brocli)
├── tooling/
│ ├── eslint/ # Shared ESLint configs
│ ├── prettier/ # Shared Prettier config
│ ├── typescript/ # Base tsconfig
│ └── github/ # CI setup action
├── development/ # Dev docker-compose (Redis, MySQL, PostgreSQL)
├── e2e/ # E2E test specs
└── Dockerfile # Multi-stage production build
```
## Three Runtime Services
| Service | Port | Role |
|---------|------|------|
| Next.js | 3000 | Main web app (SSR + API routes) |
| WebSocket | 3001 | tRPC subscriptions via `ws` |
| Tasks | 3002 | Cron job runner + management API via Fastify |
In Docker, nginx listens on **7575** and proxies to all three. The tasks service authenticates via `CRON_JOB_API_KEY` header.
## Package Dependency Layers
1. **Foundation**: `core` (env, DB drivers, Redis client, logging) → no `@homarr` deps
2. **Domain**: `definitions` → `common` → `core`
3. **Data**: `db` → `core`, `definitions`, `common`
4. **Auth**: `auth` → `db`, `definitions`, `core`, `validation`
5. **Cross-cutting**: `translation`, `validation`, `redis`, `server-settings`
6. **Feature backends**: `integrations`, `request-handler`, `cron-jobs`, `docker`, `ping`
7. **API surface**: `api` → pulls in auth, db, redis, integrations, etc.
8. **UI stack**: `ui`, `modals`, `form`, `notifications`, `boards`, `spotlight`
9. **Composed features**: `widgets`, `modals-collection`, `forms-collection`
## Key Patterns
### tRPC
- **Server caller** (RSC): `import { api } from "@homarr/api/server"` → cached caller with auth context
- **Client hooks**: `import { clientApi } from "@homarr/api/client"` → React Query hooks
- **Router structure**: `packages/api/src/root.ts` defines top-level namespaces (`user`, `board`, `widget`, `integration`, `docker`, `kubernetes`, etc.)
- **Procedures**: `publicProcedure`, `protectedProcedure`, `permissionRequiredProcedure`, `onboardingProcedure`
- **WebSocket subscriptions**: Client uses `wsLink` when `type === "subscription"`, connects to port 3001
### Multi-Database Support
Drizzle schemas exist in three parallel implementations:
- `packages/db/schema/sqlite.ts`
- `packages/db/schema/mysql.ts`
- `packages/db/schema/postgresql.ts`
Selected at runtime via `DB_DRIVER` env (`better-sqlite3` | `mysql2` | `node-postgres`). Migrations are per-engine in `packages/db/migrations/{sqlite,mysql,postgresql}/`.
### Widget System
Widgets are registered in `packages/widgets/src/index.tsx` as `widgetImports` (must satisfy `Record<WidgetKind, ...>`). Each widget:
- Has a `definition` created via `createWidgetDefinition(kind, { icon, createOptions, supportedIntegrations? })`
- Uses `optionsBuilder.from(factory => ({ ... }))` for typed options
- Loads dynamically via `next/dynamic`
- Fetches data via tRPC client hooks (backed by cron job caches)
### Integration System
Integrations are defined in `packages/definitions/src/integration.ts` (`integrationDefs`) and instantiated via `createIntegrationAsync` in `packages/integrations/src/base/creator.ts`. Each extends abstract `Integration` class with `testConnectionAsync` and typed methods.
### Cron Job System
Jobs defined in `packages/cron-jobs/src/jobs/`. Each job:
- Uses `createCronJob` with a cron expression
- Publishes results to Redis channels
- Widget subscriptions consume those channels via tRPC subscriptions
- Job management (start/stop/trigger) via `cronJobApi` HTTP client to port 3002
### Modals
Created with `createModal(component).withOptions({ defaultTitle })` from `@homarr/modals`. Opened via `useModalAction(SomeModal)`. Feature modals live in `packages/modals-collection/`.
### Forms
`useZodForm` from `@homarr/form` wraps Mantine `useForm` with zod validation. Shared form UIs in `packages/forms-collection/`.
### Routing (App Router)
- `apps/nextjs/src/app/[locale]/` — all UI routes under locale segment
- Route groups: `(home)`, `(content)`, `(board)` — don't affect URLs
- Key routes: `boards/[name]`, `manage/...` (admin), `auth/login`, `init` (onboarding), `widgets/[kind]`
- Locale driven by cookie (no URL prefix)
### Auth Providers
Configured via `AUTH_PROVIDERS` env. Supports: `credentials` (local), `ldap`, `oidc`. Database sessions with httpOnly cookies. API key auth for programmatic access.
## Environment Variables
Key env vars (from `.env.example`):
- `DB_DRIVER`: `better-sqlite3` | `mysql2` | `node-postgres`
- `DB_URL`: Database connection string
- `AUTH_SECRET`: NextAuth secret
- `SECRET_ENCRYPTION_KEY`: AES-256-CBC for integration secrets
- `AUTH_PROVIDERS`: Comma-separated (`credentials`, `ldap`, `oidc`)
- `CRON_JOB_API_KEY`: Shared key between Next.js and tasks service
- `REDIS_*`: Redis connection (host, port, password)
- `ENABLE_KUBERNETES`: Optional Kubernetes integration
## Development Commands
- `pnpm dev` — runs all three services in parallel via Turborepo
- `pnpm docker:dev` — starts Redis + MySQL + PostgreSQL containers
- `pnpm db:push` — push schema to SQLite (dev)
- `pnpm db:studio` — Drizzle Studio
- `pnpm test` — Vitest unit tests
- `pnpm test:e2e` — Playwright E2E
- `pnpm lint` / `pnpm format` — ESLint + Prettier
- `pnpm typecheck` — tsc --noEmit across all packages
## Conventions
- Workspace packages use `@homarr/` scope
- All versions managed via pnpm `catalog:` in workspace
- Path alias `~/*` → `./src/*` in Next.js app
- Mantine for all UI (no Tailwind) — primary color is red, `autoContrast: true`
- Icons from `@tabler/icons-react`
- Drag-and-drop via `@dnd-kit/*`
- `typescript.ignoreBuildErrors: true` in next.config (types checked separately via `typecheck`)
- `serverExternalPackages`: `dockerode`, `isomorphic-dompurify`, `jsdom`
+3 -6
View File
@@ -3,9 +3,6 @@ version = 1
[[analyzers]]
name = "javascript"
[analyzers.meta]
plugins = ["react"]
environment = ["nodejs"]
[[transformers]]
name = "prettier"
[analyzers.meta]
plugins = ["react"]
environment = ["nodejs"]
+6 -1
View File
@@ -5,7 +5,12 @@ node_modules
npm-debug.log
README.md
.next
.turbo
.git
dev
.build
e2e
e2e
apps/nextjs/.next
.env
.env.*
!.env.example
+14 -4
View File
@@ -12,10 +12,6 @@ AUTH_SECRET="supersecret"
# or starting the project without any (which will show a randomly generated one).
SECRET_ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000
# Cron job API key is generated every time the container starts as it is required for communication between nextjs-api and tasks-api
# export CRON_JOB_API_KEY=$(openssl rand -base64 32)
# CRON_JOB_API_KEY="your-generated-api-key"
LOG_LEVEL='info'
# This is how you can use the sqlite driver:
@@ -45,6 +41,20 @@ DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE'
TURBO_TELEMETRY_DISABLED=1
# Turborepo remote cache (optional, for faster CI/local builds)
# Uncomment and fill in to enable remote caching locally.
# CI uses GitHub secrets for these values automatically.
# TURBO_API=https://your-cache-worker.workers.dev
# TURBO_TEAM=team_your_team
# TURBO_TOKEN=your-turbo-token
# TURBO_REMOTE_CACHE_SIGNATURE_KEY=your-signature-key
# Comma-separated paths to Docker-compatible Unix sockets.
# Useful for connecting to multiple runtimes (Docker + Podman) simultaneously.
# When unset and no TCP hosts configured, defaults to /var/run/docker.sock.
# Example: DOCKER_SOCKET_PATHS=/var/run/docker.sock,/run/user/1000/podman/podman.sock
# DOCKER_SOCKET_PATHS=
# Enable kubernetes tool
# ENABLE_KUBERNETES=true
+44
View File
@@ -33,6 +33,50 @@ body:
options:
# The below comment is used to insert a new version with on-release.yml
#NEXT_VERSION#
- 1.62.0
- 1.61.0
- 1.60.1-beta.1
- 1.60.0
- 1.59.3
- 1.59.2
- 1.59.1
- 1.59.0
- 1.58.1
- 1.58.0
- 1.57.1
- 1.57.0
- 1.56.1
- 1.56.0
- 1.55.0
- 1.54.0
- 1.53.0
- 1.52.0
- 1.51.0
- 1.50.1
- 1.50.0
- 1.49.1
- 1.49.0
- 1.48.0
- 1.47.0
- 1.46.0
- 1.45.3
- 1.45.2
- 1.45.1
- 1.45.0
- 1.44.0
- 1.43.1
- 1.43.0
- 1.42.1
- 1.42.0
- 1.41.0
- 1.40.0
- 1.39.0
- 1.38.0
- 1.37.0
- 1.36.1
- 1.36.0
- 1.35.1
- 1.35.0
- 1.34.0
- 1.33.0
- 1.32.0
+5 -5
View File
@@ -25,16 +25,16 @@ body:
label: Public API available?
description: Is there a public API available, that we can consume in Homarr?
options:
- Yes, available on a website
- Yes, available in the application itself
- No
- "Yes, available on a website"
- "Yes, available in the application itself"
- "No"
validations:
required: true
- type: dropdown
attributes:
label: Are you willing to contribute this yourself?
options:
- Yes
- No
- "Yes"
- "No"
validations:
required: true
+2 -2
View File
@@ -24,7 +24,7 @@ body:
attributes:
label: Are you willing to contribute this yourself?
options:
- Yes
- No
- "Yes"
- "No"
validations:
required: true
@@ -0,0 +1,64 @@
name: Extract Build Artifact
description: Extracts artifacts from an existing Docker image to be used for from source installation
inputs:
digest:
description: Digest of Docker image to use
required: true
architecture:
description: Name of architecture, will be used to build artifact content (amd64 or arm64)
required: true
release-tag:
description: Tag of the release to which the artifact will be attached
required: true
repository:
description: Repository to which the release belongs, e.g. owner/repo
required: true
token:
description: GitHub token with permissions to upload release assets
required: true
runs:
using: "composite"
steps:
- name: Prebuilt debian dependencies
uses: homarr-labs/homarr/.github/actions/prebuilt-debian@dev
id: prebuilt-debian
with:
architecture: ${{ inputs.architecture }}
- name: Start docker container for ${{ inputs.architecture }}
run: |
docker run --name homarr \
-e "SECRET_ENCRYPTION_KEY=0000000000000000000000000000000000000000000000000000000000000000" \
--detach --rm ${{ inputs.digest }}
shell: bash
- name: Prepare extraction
run: |
docker exec homarr cp /etc/nginx/templates/nginx.conf /app && \
mkdir -p ${{ runner.temp }}/extraction/${{ inputs.architecture }}
shell: bash
- name: Extract source from ${{ inputs.architecture }} container (alpine)
run: |
docker exec homarr tar -czf extraction-alpine.tar.gz -C /app . && \
docker cp homarr:/app/extraction-alpine.tar.gz ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-alpine-${{ inputs.architecture }}.tar.gz && \
docker exec homarr rm /app/extraction-alpine.tar.gz
shell: bash
- name: Extract source from ${{ inputs.architecture }} container (debian)
run: |
docker cp ${{ steps.prebuilt-debian.outputs.path }}/. homarr:/app/build && \
docker cp ${{ steps.prebuilt-debian.outputs.path }}/. homarr:/app/node_modules/better-sqlite3/build/Release && \
docker exec homarr tar -czf extraction-debian.tar.gz -C /app . && \
docker cp homarr:/app/extraction-debian.tar.gz ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-debian-${{ inputs.architecture }}.tar.gz
shell: bash
- name: Stop ${{ inputs.architecture }} container
if: always()
run: docker container remove --force --volumes homarr
shell: bash
- name: Add build archive to release (alpine)
env:
GH_TOKEN: ${{ inputs.token }}
run: gh release upload --repo ${{ inputs.repository }} ${{ inputs.release-tag }} ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-alpine-${{ inputs.architecture }}.tar.gz --clobber
shell: bash
- name: Add build archive to release (debian)
env:
GH_TOKEN: ${{ inputs.token }}
run: gh release upload --repo ${{ inputs.repository }} ${{ inputs.release-tag }} ${{ runner.temp }}/extraction/${{ inputs.architecture }}/build-debian-${{ inputs.architecture }}.tar.gz --clobber
shell: bash
@@ -0,0 +1,42 @@
name: Prebuilt dependencies for debian
description: Provides prebuilt dependencies for debian based docker images
inputs:
architecture:
description: Name of architecture, will be used to build docker image (e.g. amd64, arm64)
required: true
outputs:
path:
description: Path to extracted prebuilt dependencies
value: ${{ runner.temp }}/prebuilts
runs:
using: "composite"
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build docker image for ${{ inputs.architecture }}
id: build
uses: docker/build-push-action@v7
with:
push: false
load: true
context: ./deployments/prebuilt-debian
platforms: linux/${{ inputs.architecture }}
tags: prebuilt-debian
- name: Start docker container for ${{ inputs.architecture }}
run: |
docker run --name prebuilt-debian \
--detach --rm prebuilt-debian
shell: bash
- name: Extract prebuilt dependencies from ${{ inputs.architecture }} container
run: |
mkdir -p ${{ runner.temp }}/prebuilts && \
docker cp prebuilt-debian:/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node ${{ runner.temp }}/prebuilts/better_sqlite3.node
shell: bash
- name: Stop ${{ inputs.architecture }} container
if: always()
run: docker container remove --force --volumes prebuilt-debian
shell: bash
+35 -1
View File
@@ -3,17 +3,51 @@
extends: ["config:recommended"],
packageRules: [
{
matchPackagePatterns: ["^@homarr/"],
matchPackageNames: ["^@homarr/"],
enabled: false,
},
// Reenable once https://github.com/privatenumber/tsx/issues/737 is fixed
{
matchPackageNames: ["tsx"],
enabled: false,
},
// Reenable once bug with undici v8 is fixed (https://github.com/homarr-labs/homarr/issues/5467)
{
matchPackageNames: ["undici"],
matchNewValue: "8.*",
enabled: false,
},
{
matchUpdateTypes: ["minor", "patch", "pin", "digest"],
automerge: true,
},
{
// disallow automerge for onlyBuiltDependencies
matchPackageNames: [
"@tree-sitter-grammars/tree-sitter-yaml",
"bcrypt",
"better-sqlite3",
"cpu-features",
"esbuild",
"sharp",
"ssh2",
"tree-sitter",
"tree-sitter-json",
],
automerge: false,
},
],
// Updates lockfile for prebuilt-debian after if package.json is updated, otherwise only root lockfile is updated
postUpgradeTasks: {
commands: ["cd deployments/prebuilt-debian && pnpm install --ignore-workspace --lockfile-only"],
fileFilters: ["deployments/prebuilt-debian/pnpm-lock.yaml"],
executionMode: "update",
},
updateInternalDeps: true,
rangeStrategy: "bump",
automerge: false,
baseBranches: ["dev"],
dependencyDashboard: false,
// prevent special characters in branch names (otherwise git errors occur on windows)
branchNameStrict: true,
}
+15 -5
View File
@@ -3,19 +3,29 @@ on:
pull_request:
types: [opened, synchronize]
permissions: {}
jobs:
approve-automatic-prs:
runs-on: ubuntu-latest
if: github.actor_id == 158783068 || github.actor_id == 190541745 || github.actor_id == 210161987 # Id of renovate bot and crowdin bot see https://api.github.com/users/homarr-renovate%5Bbot%5D and https://api.github.com/users/homarr-crowdin%5Bbot%5D and https://api.github.com/users/homarr-update-contributors%5Bbot%5D
timeout-minutes: 2
# 158783068: homarr-renovate[bot]
# 190541745: homarr-crowdin[bot]
# 210161987: homarr-update-contributors[bot]
# 175486441: homarr-releases[bot]
# Extracted from https://api.github.com/users/<username>
if: github.actor_id == 158783068 || github.actor_id == 190541745 || github.actor_id == 210161987 || github.actor_id == 175486441
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }}
app_id: ${{ secrets.RENOVATE_APPROVE_APP_ID }}
private-key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_APPROVE_APP_ID }}
permission-pull-requests: write # required to approve pull request
- name: Install GitHub CLI
run: sudo apt-get install -y gh
- name: Approve automatic PRs
+71 -16
View File
@@ -1,4 +1,6 @@
name: "[Quality] Code Analysis"
permissions:
contents: read
on:
pull_request:
@@ -9,20 +11,58 @@ on:
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
# You can leverage Vercel Remote Caching with Turbo to speed up your builds
# @link https://turborepo.org/docs/core-concepts/remote-caching#remote-caching-on-vercel-builds
env:
FORCE_COLOR: 3
SKIP_ENV_VALIDATION: true
TURBO_API: ${{ secrets.TURBO_API }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }}
TURBO_SCM_BASE: ${{ github.event.pull_request.base.sha || github.event.before || 'HEAD~1' }}
TURBO_SCM_HEAD: ${{ github.sha }}
jobs:
lint-format-autofix:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
- name: Setup
uses: ./tooling/github/setup
- name: Get changed files
id: changed
run: |
git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx' > /tmp/changed-files
echo "count=$(wc -l < /tmp/changed-files | tr -d '[:space:]')" >> $GITHUB_OUTPUT
- name: Auto-fix lint + format
if: steps.changed.outputs.count != '0'
run: |
xargs -r -a /tmp/changed-files pnpm exec oxlint --fix || true
xargs -r -a /tmp/changed-files pnpm exec oxfmt --write
- name: Commit fixes
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "style: auto-fix lint and format"
lint:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup
uses: ./tooling/github/setup
@@ -32,34 +72,41 @@ jobs:
run: cp .env.example .env
- name: Lint
run: pnpm lint && pnpm lint:ws
run: pnpm turbo lint --affected && pnpm lint:ws
format:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup
uses: ./tooling/github/setup
- name: Format
run: pnpm format
run: pnpm turbo format --affected --continue
typecheck:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup
uses: ./tooling/github/setup
- name: Typecheck
run: turbo typecheck
run: pnpm turbo typecheck --affected
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Setup
uses: ./tooling/github/setup
@@ -75,20 +122,25 @@ jobs:
e2e:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Setup
uses: ./tooling/github/setup
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build docker image
id: build-docker-image
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
platforms: linux/amd64
context: .
push: false
load: true
tags: homarr-e2e
network: host
cache-from: type=gha
cache-to: type=gha,mode=max
env:
SKIP_ENV_VALIDATION: true
- name: Install playwright browsers
@@ -99,12 +151,15 @@ jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup
uses: ./tooling/github/setup
- name: Copy env
shell: bash
run: cp .env.example .env
- name: Build
run: pnpm build
run: pnpm turbo build --affected
@@ -13,7 +13,8 @@ permissions:
jobs:
validate-pull-request-title:
runs-on: ubuntu-latest
timeout-minutes: 1
steps:
- uses: amannn/action-semantic-pull-request@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -5,20 +5,26 @@ on:
schedule:
- cron: "0 0 * * *" # every day at midnight
permissions:
contents: write # required to push changes
jobs:
download-crowdin-translations:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.CROWDIN_APP_PRIVATE_KEY }}
app_id: ${{ secrets.CROWDIN_APP_ID }}
private-key: ${{ secrets.CROWDIN_APP_PRIVATE_KEY }}
client-id: ${{ secrets.CROWDIN_APP_ID }}
permission-contents: write # required to commit to crowdin branch
permission-pull-requests: write # required to create pull request
- name: Download Crowdin translations
id: crowdin-download
+4 -1
View File
@@ -1,4 +1,6 @@
name: "[Crowdin] Upload translations"
permissions:
contents: read
on:
workflow_dispatch:
@@ -12,10 +14,11 @@ jobs:
# Don't run this action if the downloaded translations are being pushed
if: "!contains(github.event.head_commit.message, 'chore(lang)')"
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Upload Crowdin translations
uses: crowdin/github-action@v2
@@ -0,0 +1,104 @@
name: "[Deployment] Beta Release"
on:
workflow_dispatch:
inputs:
send-notifications:
type: boolean
required: false
default: true
description: Send notifications
permissions:
contents: write
pull-requests: write
jobs:
create-and-merge-pr:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Discord notification
if: ${{ github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.4.0
with:
args: "Beta release has been triggered: [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})"
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Get Next Version
id: semver
uses: ietf-tools/semver-action@v1
with:
token: ${{ github.token }}
branch: next
- name: Create pull request
id: create-pull-request
run: 'gh pr create --title "chore(release): release ${{ steps.semver.outputs.next }}-beta" --body "Detected change to be ``${{ steps.semver.outputs.bump }}``<br/>Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}-beta``" --base beta --head next --label automerge'
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- name: Discord notification
if: ${{ github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.4.0
with:
args: "Created a release PR ${{ steps.create-pull-request.outputs.url }} for version ${{ steps.semver.outputs.next }}-beta (new behaviour: ${{ steps.semver.outputs.bump }})"
- name: Obtain token
id: obtainApprovalToken
uses: actions/create-github-app-token@v3
with:
private-key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_APPROVE_APP_ID }}
permission-pull-requests: write
- name: Approve PR
env:
GITHUB_TOKEN: ${{ steps.obtainApprovalToken.outputs.token }}
run: |
gh pr review --approve --body "Automatically approved by GitHub Action"
- name: Obtain token
id: obtainMergeToken
uses: actions/create-github-app-token@v3
with:
private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
permission-contents: write # write to beta branch (due to merge)
permission-pull-requests: write # merge pull request
- id: automerge
if: ${{ steps.semver.outputs.bump != 'major' }}
name: automerge
uses: "pascalgn/automerge-action@v0.16.4"
env:
GITHUB_TOKEN: ${{ steps.obtainMergeToken.outputs.token }}
MERGE_METHOD: merge # we prefer merge commits for merging to beta
MERGE_COMMIT_MESSAGE: "chore(release): release ${{ steps.semver.outputs.next }}-beta"
MERGE_DELETE_BRANCH: false # never set to true!
PULL_REQUEST: "${{ steps.create-pull-request.outputs.pr_number }}"
MERGE_RETRIES: 20 # 20 retries * MERGE_RETRY_SLEEP until step fails
MERGE_RETRY_SLEEP: 10000 # 10 seconds * MERGE_RETRIES until step fails
MERGE_REQUIRED_APPROVALS: 0 # do not require approvals
- name: Merged Discord notification
if: ${{ steps.automerge.outputs.mergeResult == 'merged' && github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.4.0
with:
args: "Merged PR ${{ steps.create-pull-request.outputs.url }} for release ${{ steps.semver.outputs.next }}-beta"
- name: Major Bump Discord notification
if: ${{ steps.semver.outputs.bump == 'major' && github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.4.0
with:
args: "The release PR must be manually merged because the next version is a major version: ${{ steps.create-pull-request.outputs.url }} for release ${{ steps.semver.outputs.next }}-beta"
- name: Discord Fail Notification
if: failure() && github.event.inputs.send-notifications
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.4.0
with:
args: "The beta release workflow [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) has failed"
+83 -27
View File
@@ -5,6 +5,7 @@ on:
branches:
- main
- beta
- next
- dev
workflow_dispatch:
inputs:
@@ -32,12 +33,13 @@ jobs:
release:
name: Create tag and release
runs-on: ubuntu-latest
timeout-minutes: 5
env:
SKIP_RELEASE: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'dev' }}
SKIP_RELEASE: ${{ github.event_name == 'workflow_dispatch' || github.ref_name == 'dev' || github.ref_name == 'next' }}
outputs:
version: ${{ steps.read-semver.outputs.version || steps.version-fallback.outputs.version }}
git_ref: ${{ steps.read-git-ref.outputs.ref || github.ref }}
skipped: ${{ env.SKIP_RELEASE }}
steps:
- run: echo "Skipping release for workflow_dispatch event"
if: env.SKIP_RELEASE == 'true'
@@ -49,18 +51,23 @@ jobs:
- name: Obtain token
if: env.SKIP_RELEASE == 'false'
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
- uses: actions/checkout@v5
private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
permission-contents: write # required to commit package.json & changelog changes, merge them to dev / next and publish the release
- uses: actions/checkout@v6
if: env.SKIP_RELEASE == 'false'
with:
persist-credentials: false
- uses: actions/setup-node@v4
- uses: pnpm/action-setup@v6
if: env.SKIP_RELEASE == 'false'
- uses: actions/setup-node@v6
if: env.SKIP_RELEASE == 'false'
with:
node-version: 22.18.0
node-version: 24.16.0
package-manager-cache: false
- run: npm i -g pnpm
if: env.SKIP_RELEASE == 'false'
- name: Install dependencies
@@ -89,50 +96,52 @@ jobs:
id: read-git-ref
run: |
echo "ref=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Update dev branch
- name: Update dev / next branch
if: env.SKIP_RELEASE == 'false'
continue-on-error: true # Prevent pipeline from failing when merge fails
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
UPSTREAM_BRANCH: ${{ github.ref_name == 'main' && 'dev' || 'next' }}
run: |
git config user.name "Releases Homarr"
git config user.email "175486441+homarr-releases[bot]@users.noreply.github.com"
git remote set-url origin https://x-access-token:${{ steps.obtainToken.outputs.token }}@github.com/${{ github.repository }}.git
git fetch origin dev
git checkout dev
git pull origin dev
git fetch origin ${{ env.UPSTREAM_BRANCH }}
git checkout ${{ env.UPSTREAM_BRANCH }}
git pull origin ${{ env.UPSTREAM_BRANCH }}
git rebase ${{ github.ref_name }}
git push origin dev
git push origin ${{ env.UPSTREAM_BRANCH }}
build-amd64:
name: Build docker image for amd64
needs: release
runs-on: ubuntu-latest
timeout-minutes: 15
outputs:
digest: ${{ steps.build.outputs.digest }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
ref: ${{ needs.release.outputs.git_ref }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: "${{ env.GHCR_REPO }}"
- name: Log in to the Container registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: .
network: host
@@ -141,37 +150,37 @@ jobs:
outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=true
env:
SKIP_ENV_VALIDATION: true
build-arm64:
name: Build docker image for arm64
needs: release
runs-on: ubuntu-24.04-arm
timeout-minutes: 20
outputs:
digest: ${{ steps.build.outputs.digest }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
ref: ${{ needs.release.outputs.git_ref }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: "${{ env.GHCR_REPO }}"
- name: Log in to the Container registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: .
network: host
@@ -180,18 +189,58 @@ jobs:
outputs: type=image,"name=${{ env.GHCR_REPO }}",push-by-digest=true,name-canonical=true,push=true
env:
SKIP_ENV_VALIDATION: true
extract-asset-amd64:
name: Extract amd64 asset from docker image
needs: [release, build-amd64]
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Extract amd64
if: needs.release.outputs.skipped == 'false'
uses: homarr-labs/homarr/.github/actions/extract-build-artifact@dev
with:
digest: "${{ env.GHCR_REPO }}@${{ needs.build-amd64.outputs.digest }}"
architecture: amd64
release-tag: ${{ needs.release.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
extract-asset-arm64:
name: Extract arm64 asset from docker image
needs: [release, build-arm64]
runs-on: ubuntu-24.04-arm
timeout-minutes: 5
steps:
- name: Extract arm64
if: needs.release.outputs.skipped == 'false'
uses: homarr-labs/homarr/.github/actions/extract-build-artifact@dev
with:
digest: "${{ env.GHCR_REPO }}@${{ needs.build-arm64.outputs.digest }}"
architecture: arm64
release-tag: ${{ needs.release.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
publish:
name: Complete deployment and notify
needs: [release, build-amd64, build-arm64]
needs: [release, build-amd64, build-arm64, extract-asset-amd64, extract-asset-arm64]
runs-on: ubuntu-latest
timeout-minutes: 5
env:
NEXT_VERSION: ${{ needs.release.outputs.version }}
DEPLOY_LATEST: ${{ github.ref_name == 'main' }}
DEPLOY_BETA: ${{ github.ref_name == 'beta' }}
steps:
- name: Obtain token
if: needs.release.outputs.skipped == 'false'
id: obtainToken
uses: actions/create-github-app-token@v3
with:
private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
permission-contents: write # required to publish the release
- name: Log in to the Container registry
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -217,9 +266,16 @@ jobs:
${{ env.GHCR_REPO }}@${{ needs.build-amd64.outputs.digest }} \
${{ env.GHCR_REPO }}@${{ needs.build-arm64.outputs.digest }}
- name: Publish release
if: needs.release.outputs.skipped == 'false'
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
run: |
gh release edit --repo ${{ github.repository }} ${{ needs.release.outputs.version }} --draft=false
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "Successfully deployed images for branch **${{ github.ref_name }}**. Tagged as **${{env.NEXT_VERSION}}**."
+23 -18
View File
@@ -18,16 +18,17 @@ permissions:
jobs:
create-and-merge-pr:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Discord notification
if: ${{ github.events.inputs.send-notifications }}
if: ${{ github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "Automatic release has been triggered: [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})"
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Get Next Version
@@ -37,22 +38,24 @@ jobs:
token: ${{ github.token }}
branch: dev
- name: Create pull request
id: create-pull-request
run: 'gh pr create --title "chore(release): automatic release ${{ steps.semver.outputs.next }}" --body "**This is an automatic release**.<br/>Manual action may be required for major bumps.<br/>Detected change to be ``${{ steps.semver.outputs.bump }}``<br/>Bump version from ``${{ steps.semver.outputs.current }}`` to ``${{ steps.semver.outputs.next }}``" --base main --head dev --label automerge'
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- name: Discord notification
if: ${{ github.events.inputs.send-notifications }}
if: ${{ github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "Created a release PR ${{ steps.create-pull-request.outputs.url }} for version ${{ steps.semver.outputs.next }} (new behaviour: ${{ steps.semver.outputs.bump }})"
- name: Obtain token
id: obtainApprovalToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }}
app_id: ${{ secrets.RENOVATE_APPROVE_APP_ID }}
private-key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_APPROVE_APP_ID }}
permission-pull-requests: write
- name: Approve PR
env:
GITHUB_TOKEN: ${{ steps.obtainApprovalToken.outputs.token }}
@@ -60,17 +63,19 @@ jobs:
gh pr review --approve --body "Automatically approved by GitHub Action"
- name: Obtain token
id: obtainMergeToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
permission-contents: write # write to main branch (due to merge)
permission-pull-requests: write # merge pull request
- id: automerge
if: ${{ steps.semver.outputs.bump != 'major' }}
name: automerge
uses: "pascalgn/automerge-action@v0.16.4"
env:
GITHUB_TOKEN: ${{ steps.obtainMergeToken.outputs.token }}
MERGE_METHOD: merge # we prefer merge commits for merging to master
MERGE_METHOD: merge # we prefer merge commits for merging to main
MERGE_COMMIT_MESSAGE: "chore(release): automatic release ${{ steps.semver.outputs.next }}"
MERGE_DELETE_BRANCH: false # never set to true!
PULL_REQUEST: "${{ steps.create-pull-request.outputs.pr_number }}"
@@ -79,23 +84,23 @@ jobs:
MERGE_REQUIRED_APPROVALS: 0 # do not require approvals
- name: Merged Discord notification
if: ${{ steps.automerge.outputs.mergeResult == 'merged' && github.events.inputs.send-notifications }}
if: ${{ steps.automerge.outputs.mergeResult == 'merged' && github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "Merged PR ${{ steps.create-pull-request.outputs.url }} for release ${{ steps.semver.outputs.next }}"
- name: Major Bump Discord notification
if: ${{ steps.semver.outputs.bump == 'major' && github.events.inputs.send-notifications }}
if: ${{ steps.semver.outputs.bump == 'major' && github.event.inputs.send-notifications }}
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "The release PR must be manually merged because the next version is a major version: ${{ steps.create-pull-request.outputs.url }} for release ${{ steps.semver.outputs.next }}"
- name: Discord Fail Notification
if: failure() && github.events.inputs.send-notifications
if: failure() && github.event.inputs.send-notifications
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@master
uses: Ilshidur/action-discord@0.4.0
with:
args: "The automatic release workflow [run ${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) has failed"
@@ -0,0 +1,45 @@
name: "[Deployments] Validate prebuilt debian dependencies"
permissions:
contents: read
on:
pull_request:
branches: ["*"]
paths: [".github/actions/prebuilt-debian/**", "deployments/prebuilt-debian/**"]
jobs:
prebuilt-debian-validate-amd64:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- name: Validate prebuilt dependencies for amd64
id: validate-amd64
uses: ./.github/actions/prebuilt-debian
with:
architecture: amd64
- name: Check extracted files for amd64
run: |
if [ ! -f "${{ steps.validate-amd64.outputs.path }}/better_sqlite3.node" ]; then
echo "better_sqlite3.node not found for amd64!"
exit 1
fi
prebuilt-debian-validate-arm64:
runs-on: ubuntu-24.04-arm
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
- name: Validate prebuilt dependencies for arm64
id: validate-arm64
uses: ./.github/actions/prebuilt-debian
with:
architecture: arm64
- name: Check extracted files for arm64
run: |
if [ ! -f "${{ steps.validate-arm64.outputs.path }}/better_sqlite3.node" ]; then
echo "better_sqlite3.node not found for arm64!"
exit 1
fi
@@ -0,0 +1,19 @@
name: "[Renovate] Validate configuration"
permissions:
contents: read
on:
pull_request:
branches: ["*"]
paths: [".github/renovate.json5"]
jobs:
renovate-validate:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v6
- run: |
npx --yes --package renovate -- \
renovate-config-validator --strict .github/renovate.json5
+22 -17
View File
@@ -2,21 +2,24 @@ permissions: {}
on:
release:
types: [published]
types: [released]
jobs:
trigger-docs-release:
name: Trigger Documentation Release
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.HOMARR_DOCS_RELEASE_APP_PRIVATE_KEY }}
app_id: ${{ vars.HOMARR_DOCS_RELEASE_APP_ID }}
installation_retrieval_mode: repository
installation_retrieval_payload: homarr-labs/documentation
private-key: ${{ secrets.HOMARR_DOCS_RELEASE_APP_PRIVATE_KEY }}
client-id: ${{ vars.HOMARR_DOCS_RELEASE_APP_ID }}
owner: homarr-labs
repositories: |
documentation
permission-contents: write # required to dispatch repository workflow
- name: Trigger documentation release
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
@@ -34,36 +37,38 @@ jobs:
}
}
EOF
update-bug-report-template:
name: Update Bug Report Template
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }}
client-id: ${{ secrets.RENOVATE_MERGE_APP_ID }}
permission-contents: write # required to commit to branch
permission-pull-requests: write # required to create pr & enable automerge
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
token: ${{ steps.obtainToken.outputs.token }}
ref: dev
- name: Setup
uses: ./tooling/github/setup
- run: pnpm run scripts:update-bug-report-template
env:
NEXT_VERSION: ${{ github.event.release.tag_name }}
- name: Commit changes
run: |
git config --global user.email "175486441+homarr-releases[bot]@users.noreply.github.com"
git config --global user.name "Releases Homarr"
git add .
git commit -m "chore: update bug report template"
- name: Create Pull Request
id: create-pull-request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
add-paths: .github/ISSUE_TEMPLATE/bug_report.yml
commit-message: "chore: update bug report template"
author: Releases Homarr <175486441+homarr-releases[bot]@users.noreply.github.com>
token: ${{ steps.obtainToken.outputs.token }}
branch: update-bug-report-template
base: dev
@@ -0,0 +1,27 @@
permissions:
statuses: write
on:
pull_request:
types: [opened, synchronize]
jobs:
skip-stability-days:
if: ${{ !startsWith(github.head_ref, 'renovate/') && github.event.pull_request.head.repo.full_name == github.repository }}
name: Skip Stability Days
runs-on: ubuntu-latest
timeout-minutes: 1
steps:
- name: Add status check
env:
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: |
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/${{github.repository}}/statuses/${{github.event.pull_request.head.sha}} \
-f 'state=success' \
-f 'target_url=https://docs.renovatebot.com/configuration-options#minimumreleaseage' \
-f 'description=Skipped for non renovate branches' \
-f 'context=renovate/stability-days'
+12 -8
View File
@@ -10,31 +10,35 @@ env:
CROWDIN_TOKEN: "${{ secrets.CROWDIN_UPDATE_CONTRIBUTORS_TOKEN }}"
permissions:
contents: write
contents: read
jobs:
update-contributors:
runs-on: ubuntu-latest
timeout-minutes: 2
strategy:
matrix:
node-version: [22]
steps:
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }}
app_id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }}
private-key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }}
client-id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }}
permission-contents: write # required to commit to branch
permission-pull-requests: write # required to create pr & enable automerge
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v6
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
- uses: pnpm/action-setup@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Run update script
run: node ./scripts/update-contributors.mjs
@@ -50,7 +54,7 @@ jobs:
- name: Create Pull Request
id: create-pull-request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
token: ${{ steps.obtainToken.outputs.token }}
branch: update-contributors
+10 -7
View File
@@ -1,7 +1,7 @@
name: Update integration list
on:
workflow_dispatch: { }
workflow_dispatch: {}
push:
paths:
- packages/definitions/src/integration.ts
@@ -17,15 +17,18 @@ jobs:
group: update-integration
cancel-in-progress: false
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Obtain token
id: obtainToken
uses: tibdex/github-app-token@v2
uses: actions/create-github-app-token@v3
with:
private_key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }}
app_id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }}
private-key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }}
client-id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }}
permission-contents: write # required to commit to branch
permission-pull-requests: write # required to create pr & enable automerge
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v6
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
- name: Setup
@@ -42,7 +45,7 @@ jobs:
- name: Create Pull Request
id: create-pull-request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@v8
with:
token: ${{ steps.obtainToken.outputs.token }}
branch: update-integrations-readme
@@ -59,4 +62,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }}
run: |
gh pr merge ${{steps.create-pull-request.outputs.pull-request-number}} --auto --squash
gh pr merge ${{steps.create-pull-request.outputs.pull-request-number}} --auto --squash
+5 -1
View File
@@ -67,4 +67,8 @@ e2e/shared/tmp
apps/nextjs/public/images/background.png
# next-intl
en.d.json.ts
en.d.json.ts
# personal agent config
AGENTS.md
.opencode
+1
View File
@@ -3,3 +3,4 @@
# @link https://docs.expo.dev/guides/monorepos/#common-issues
node-linker=hoisted
strict-peer-dependencies=false
engine-strict=true
+1 -1
View File
@@ -1 +1 @@
22.18.0
24.16.0
+7
View File
@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 120,
"endOfLine": "lf",
"sortPackageJson": true,
"ignorePatterns": ["**/*.cjs", "**/lang/**", "static-data/**", "CHANGELOG.md"]
}
+37
View File
@@ -0,0 +1,37 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["eslint", "typescript", "unicorn", "oxc", "react", "import", "jsx-a11y"],
"categories": {
"correctness": "error",
"suspicious": "warn",
"pedantic": "off",
"perf": "off",
"style": "off",
"restriction": "off",
"nursery": "off"
},
"rules": {
"eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
"typescript/consistent-type-imports": ["warn", { "prefer": "type-imports", "fixStyle": "separate-type-imports" }],
"typescript/no-non-null-assertion": "error",
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],
"unicorn/no-new-array": "warn",
"unicorn/no-useless-spread": "warn",
"unicorn/no-useless-length-check": "warn",
"unicorn/no-useless-fallback-in-spread": "warn",
"jsx-a11y/prefer-tag-over-role": "warn",
"oxc/const-comparisons": "warn",
"react-hooks/exhaustive-deps": "warn",
"react/no-children-prop": "warn",
"jsx-a11y/no-autofocus": "warn",
"jsx-a11y/img-redundant-alt": "warn",
"react/react-in-jsx-scope": "off"
},
"options": {
"reportUnusedDisableDirectives": "off"
},
"ignorePatterns": ["**/*.config.js", "**/*.config.mjs", "**/*.cjs", "**/lang/*.d.json.ts", ".next/**"],
"settings": {
"react": { "version": "19" }
}
}
+1
View File
@@ -44,6 +44,7 @@
{
"successComment": false,
"failComment": false,
"draftRelease": true,
"releaseBodyTemplate": "<%= _.truncate(nextRelease.notes, { 'length': 124000, 'omission': '' }) %>"
}
]
+1 -2
View File
@@ -31,6 +31,5 @@ scopeRangeRegex: "(?:const|let|var)\\s+t\\s*=\\s*(?:await\\s+)?(?:getScopedI18n|
# refactorTemplates:
# - i18n.get("$1")
# If set to true, only enables this custom framework (will disable all built-in frameworks)
monopoly: true
monopoly: true
+5 -15
View File
@@ -15,9 +15,7 @@
"request": "launch",
"command": "pnpm docker:dev",
"cwd": "${workspaceFolder}",
"skipFiles": [
"<node_internals>/**"
]
"skipFiles": ["<node_internals>/**"]
},
{
"name": "lint fix",
@@ -25,9 +23,7 @@
"request": "launch",
"command": "pnpm lint:fix",
"cwd": "${workspaceFolder}",
"skipFiles": [
"<node_internals>/**"
]
"skipFiles": ["<node_internals>/**"]
},
{
"name": "format fix",
@@ -35,9 +31,7 @@
"request": "launch",
"command": "pnpm format:fix",
"cwd": "${workspaceFolder}",
"skipFiles": [
"<node_internals>/**"
]
"skipFiles": ["<node_internals>/**"]
},
{
"name": "db push",
@@ -69,9 +63,7 @@
"request": "launch",
"command": "pnpm test",
"cwd": "${workspaceFolder}",
"skipFiles": [
"<node_internals>/**"
]
"skipFiles": ["<node_internals>/**"]
},
{
"name": "test ui",
@@ -79,9 +71,7 @@
"request": "launch",
"command": "pnpm test:ui",
"cwd": "${workspaceFolder}",
"skipFiles": [
"<node_internals>/**"
]
"skipFiles": ["<node_internals>/**"]
}
]
}
+3 -14
View File
@@ -1,13 +1,6 @@
{
"eslint.workingDirectories": [
{
"mode": "auto"
}
],
"eslint.experimental.useFlatConfig": true,
"typescript.tsdk": "node_modules\\typescript\\lib",
"js/ts.implicitProjectConfig.experimentalDecorators": true,
"prettier.configPath": "./tooling/prettier/index.mjs",
"cSpell.words": [
"ajnart",
"cqmin",
@@ -34,11 +27,7 @@
],
"i18n-ally.dirStructure": "auto",
"i18n-ally.displayLanguage": "en",
"i18n-ally.enabledFrameworks": [
"custom"
],
"i18n-ally.localesPaths": [
"packages/translation/src/lang",
],
"i18n-ally.keystyle": "nested",
"i18n-ally.enabledFrameworks": ["custom"],
"i18n-ally.localesPaths": ["packages/translation/src/lang"],
"i18n-ally.keystyle": "nested"
}
+4197 -3133
View File
File diff suppressed because it is too large. Load diff
+12
View File
@@ -1 +1,13 @@
# ── CODEOWNERS ───────────────────────────────────────
* @homarr-labs/maintainers
# Exempt Renovate‑managed files (no owners)
package.json
**/package.json
package-lock.json
**/package-lock.json
pnpm-lock.yaml
**/pnpm-lock.yaml
pnpm-workspace.yaml
Dockerfile
docker-compose.yml
+2 -4
View File
@@ -1,4 +1,4 @@
FROM node:22.18.0-alpine AS base
FROM node:24.16.0-alpine AS base
FROM base AS builder
RUN apk add --no-cache libc6-compat
@@ -43,8 +43,6 @@ RUN mkdir -p /var/cache/nginx && \
COPY --from=builder /app/apps/nextjs/next.config.ts .
COPY --from=builder /app/apps/nextjs/package.json .
COPY --from=builder /app/apps/tasks/tasks.cjs ./apps/tasks/tasks.cjs
COPY --from=builder /app/apps/websocket/wssServer.cjs ./apps/websocket/wssServer.cjs
COPY --from=builder /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/build/better_sqlite3.node
COPY --from=builder /app/packages/db/migrations ./db/migrations
@@ -55,7 +53,7 @@ COPY --from=builder /app/apps/nextjs/.next/standalone ./
COPY --from=builder /app/apps/nextjs/.next/static ./apps/nextjs/.next/static
COPY --from=builder /app/apps/nextjs/public ./apps/nextjs/public
COPY scripts/run.sh ./run.sh
COPY --chmod=777 scripts/entrypoint.sh ./entrypoint.sh
COPY --chmod=755 scripts/entrypoint.sh ./entrypoint.sh
COPY packages/redis/redis.conf /app/redis.conf
COPY nginx.conf /etc/nginx/templates/nginx.conf
-13
View File
@@ -1,13 +0,0 @@
import baseConfig from "@homarr/eslint-config/base";
import nextjsConfig from "@homarr/eslint-config/nextjs";
import reactConfig from "@homarr/eslint-config/react";
/** @type {import('typescript-eslint').Config} */
export default [
{
ignores: [".next/**"],
},
...baseConfig,
...reactConfig,
...nextjsConfig,
];
+28 -12
View File
@@ -1,12 +1,11 @@
// Importing env files here to validate on build
import "@homarr/auth/env";
import "@homarr/db/env";
import "@homarr/core/infrastructure/db/env";
import "@homarr/common/env";
import "@homarr/log/env";
import "@homarr/core/infrastructure/logs/env";
import "@homarr/docker/env";
import type { NextConfig } from "next";
import MillionLint from "@million/lint";
import createNextIntlPlugin from "next-intl/plugin";
// Package path does not work... so we need to use relative path
@@ -20,31 +19,52 @@ const withNextIntl = createNextIntlPlugin({
const nextConfig: NextConfig = {
output: "standalone",
reactStrictMode: true,
/** We already do linting and typechecking as separate tasks in CI */
eslint: { ignoreDuringBuilds: true },
// react compiler breaks mantine-react-table, so disabled for now
//reactCompiler: true,
/** We already do typechecking as separate tasks in CI */
typescript: { ignoreBuildErrors: true },
/**
* dockerode is required in the external server packages because of https://github.com/homarr-labs/homarr/issues/612
* isomorphic-dompurify and jsdom are required, see https://github.com/kkomelin/isomorphic-dompurify/issues/356
*/
serverExternalPackages: ["dockerode"],
serverExternalPackages: ["dockerode", "isomorphic-dompurify", "jsdom"],
experimental: {
optimizePackageImports: ["@mantine/core", "@mantine/hooks", "@tabler/icons-react"],
turbopackFileSystemCacheForDev: true,
preloadEntriesOnStart: false,
webpackMemoryOptimizations: true,
},
transpilePackages: ["@homarr/ui", "@homarr/notifications", "@homarr/modals", "@homarr/spotlight", "@homarr/widgets"],
images: {
domains: ["cdn.jsdelivr.net"],
localPatterns: [
{
pathname: "/**",
search: "",
},
],
},
// skipcq: JS-0116
// eslint-disable-next-line @typescript-eslint/require-await,no-restricted-syntax
async headers() {
return [
{
source: "/sw.js",
headers: [
{ key: "Content-Type", value: "application/javascript; charset=utf-8" },
{ key: "Cache-Control", value: "no-cache, no-store, must-revalidate" },
{ key: "Content-Security-Policy", value: "default-src 'self'; script-src 'self'" },
],
},
{
source: "/(.*)", // Apply CSP to all routes
headers: [
{
key: "Content-Security-Policy",
// worker-src / media-src with blob: is necessary for video.js, see https://github.com/homarr-labs/homarr/issues/3912 and https://stackoverflow.com/questions/65792855/problem-with-video-js-and-content-security-policy-csp
value: `
default-src 'self';
script-src * 'unsafe-inline' 'unsafe-eval';
worker-src * blob:;
base-uri 'self';
connect-src *;
style-src * 'unsafe-inline';
@@ -53,7 +73,7 @@ const nextConfig: NextConfig = {
form-action 'self';
img-src * data:;
font-src * data:;
media-src * data:;
media-src * data: blob:;
`
.replace(/\s{2,}/g, " ")
.trim(),
@@ -64,8 +84,4 @@ const nextConfig: NextConfig = {
},
};
// Skip transform is used because of webpack loader, without it for example 'Tooltip.Floating' will not work and show an error
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const withMillionLint = MillionLint.next({ rsc: true, skipTransform: true, telemetry: false });
export default withNextIntl(nextConfig);
+58 -61
View File
@@ -7,23 +7,21 @@
"build": "pnpm with-env next build",
"clean": "git clean -xdf .next .turbo node_modules",
"dev": "pnpm with-env next dev",
"format": "prettier --check . --ignore-path ../../.gitignore",
"lint": "eslint",
"format": "oxfmt .",
"lint": "oxlint",
"start": "pnpm with-env next start",
"typecheck": "tsc --noEmit",
"with-env": "dotenv -e ../../.env --"
},
"prettier": "@homarr/prettier-config",
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@dnd-kit/core": "catalog:",
"@dnd-kit/modifiers": "catalog:",
"@dnd-kit/sortable": "catalog:",
"@dnd-kit/utilities": "catalog:",
"@homarr/analytics": "workspace:^0.1.0",
"@homarr/api": "workspace:^0.1.0",
"@homarr/auth": "workspace:^0.1.0",
"@homarr/boards": "workspace:^0.1.0",
"@homarr/certificates": "workspace:^0.1.0",
"@homarr/common": "workspace:^0.1.0",
"@homarr/core": "workspace:^0.1.0",
"@homarr/cron-job-status": "workspace:^0.1.0",
@@ -32,11 +30,10 @@
"@homarr/docker": "workspace:^0.1.0",
"@homarr/form": "workspace:^0.1.0",
"@homarr/forms-collection": "workspace:^0.1.0",
"@homarr/gridstack": "^1.12.0",
"@homarr/gridstack": "catalog:",
"@homarr/icons": "workspace:^0.1.0",
"@homarr/image-proxy": "workspace:^0.1.0",
"@homarr/integrations": "workspace:^0.1.0",
"@homarr/log": "workspace:^",
"@homarr/modals": "workspace:^0.1.0",
"@homarr/modals-collection": "workspace:^0.1.0",
"@homarr/notifications": "workspace:^0.1.0",
@@ -46,63 +43,63 @@
"@homarr/server-settings": "workspace:^0.1.0",
"@homarr/settings": "workspace:^0.1.0",
"@homarr/spotlight": "workspace:^0.1.0",
"@homarr/tasks": "workspace:^0.1.0",
"@homarr/translation": "workspace:^0.1.0",
"@homarr/ui": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
"@homarr/websocket": "workspace:^0.1.0",
"@homarr/widgets": "workspace:^0.1.0",
"@mantine/colors-generator": "^8.2.5",
"@mantine/core": "^8.2.5",
"@mantine/dropzone": "^8.2.5",
"@mantine/hooks": "^8.2.5",
"@mantine/modals": "^8.2.5",
"@mantine/tiptap": "^8.2.5",
"@million/lint": "1.0.14",
"@tabler/icons-react": "^3.34.1",
"@tanstack/react-query": "^5.85.5",
"@tanstack/react-query-devtools": "^5.85.5",
"@tanstack/react-query-next-experimental": "^5.85.5",
"@trpc/client": "^11.4.4",
"@trpc/next": "^11.4.4",
"@trpc/react-query": "^11.4.4",
"@trpc/server": "^11.4.4",
"@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": "^17.2.1",
"flag-icons": "^7.5.0",
"glob": "^11.0.3",
"jotai": "^2.13.1",
"mantine-react-table": "2.0.0-beta.9",
"next": "15.5.0",
"postcss-preset-mantine": "^1.18.0",
"prismjs": "^1.30.0",
"react": "19.1.1",
"react-dom": "19.1.1",
"react-error-boundary": "^6.0.0",
"react-simple-code-editor": "^0.14.1",
"sass": "^1.90.0",
"superjson": "2.2.2",
"swagger-ui-react": "^5.27.1",
"use-deep-compare-effect": "^1.8.1",
"zod": "^4.0.17"
"@mantine/colors-generator": "catalog:",
"@mantine/core": "catalog:",
"@mantine/dropzone": "catalog:",
"@mantine/hooks": "catalog:",
"@mantine/modals": "catalog:",
"@mantine/tiptap": "catalog:",
"@tabler/icons-react": "catalog:",
"@tanstack/react-query": "catalog:",
"@tanstack/react-query-devtools": "catalog:",
"@tanstack/react-query-next-experimental": "catalog:",
"@trpc/client": "catalog:",
"@trpc/next": "catalog:",
"@trpc/react-query": "catalog:",
"@trpc/server": "catalog:",
"@xterm/addon-canvas": "catalog:",
"@xterm/addon-fit": "catalog:",
"@xterm/xterm": "catalog:",
"babel-plugin-react-compiler": "catalog:",
"chroma-js": "catalog:",
"clsx": "catalog:",
"dayjs": "catalog:",
"dotenv": "catalog:",
"flag-icons": "catalog:",
"glob": "catalog:",
"isomorphic-dompurify": "catalog:",
"jotai": "catalog:",
"mantine-react-table": "catalog:",
"next": "catalog:",
"postcss-preset-mantine": "catalog:",
"prismjs": "catalog:",
"react": "catalog:",
"react-dom": "catalog:",
"react-error-boundary": "catalog:",
"react-simple-code-editor": "catalog:",
"sass": "catalog:",
"superjson": "catalog:",
"swagger-ui-react": "catalog:",
"use-deep-compare-effect": "catalog:",
"yaml": "catalog:",
"zod": "catalog:"
},
"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.17.2",
"@types/prismjs": "^1.26.5",
"@types/react": "19.1.10",
"@types/react-dom": "19.1.7",
"@types/swagger-ui-react": "^5.18.0",
"concurrently": "^9.2.0",
"eslint": "^9.33.0",
"node-loader": "^2.1.0",
"prettier": "^3.6.2",
"typescript": "^5.9.2"
"@types/chroma-js": "catalog:",
"@types/node": "catalog:",
"@types/prismjs": "catalog:",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@types/swagger-ui-react": "catalog:",
"concurrently": "catalog:",
"node-loader": "catalog:",
"typescript": "catalog:"
}
}
+7
View File
@@ -0,0 +1,7 @@
self.addEventListener("install", () => {
self.skipWaiting();
});
self.addEventListener("activate", (event) => {
event.waitUntil(self.clients.claim());
});
@@ -2,29 +2,27 @@
import type { PropsWithChildren } from "react";
import type { MantineColorScheme, MantineColorSchemeManager } from "@mantine/core";
import { createTheme, DirectionProvider, MantineProvider } from "@mantine/core";
import { DirectionProvider, MantineProvider, v8CssVariablesResolver } from "@mantine/core";
import dayjs from "dayjs";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
import { parseCookies, setClientCookie } from "@homarr/common";
import type { ColorScheme } from "@homarr/definitions";
import { colorSchemeCookieKey } from "@homarr/definitions";
import { theme } from "@homarr/ui";
export const CustomMantineProvider = ({
children,
defaultColorScheme,
}: PropsWithChildren<{ defaultColorScheme: ColorScheme }>) => {
}: PropsWithChildren<{ defaultColorScheme: MantineColorScheme }>) => {
const manager = useColorSchemeManager();
return (
<DirectionProvider>
<MantineProvider
defaultColorScheme={defaultColorScheme}
colorSchemeManager={manager}
theme={createTheme({
primaryColor: "red",
autoContrast: true,
})}
theme={theme}
cssVariablesResolver={v8CssVariablesResolver}
>
{children}
</MantineProvider>
@@ -35,7 +33,7 @@ export const CustomMantineProvider = ({
export function useColorSchemeManager(): MantineColorSchemeManager {
const { data: session } = useSession();
const updateCookieValue = (value: Exclude<MantineColorScheme, "auto">) => {
const updateCookieValue = (value: MantineColorScheme) => {
setClientCookie(colorSchemeCookieKey, value, { expires: dayjs().add(1, "year").toDate(), path: "/" });
};
@@ -60,7 +58,6 @@ export function useColorSchemeManager(): MantineColorSchemeManager {
},
set: (value) => {
if (value === "auto") return;
try {
if (session) {
mutateColorScheme({ colorScheme: value });
@@ -64,16 +64,23 @@ export const RegistrationForm = ({ invite }: RegistrationFormProps) => {
<Stack gap="xl">
<form onSubmit={form.onSubmit(handleSubmit)}>
<Stack gap="lg">
<TextInput label={t("field.username.label")} autoComplete="off" {...form.getInputProps("username")} />
<TextInput
label={t("field.username.label")}
id="username"
autoComplete="username"
{...form.getInputProps("username")}
/>
<CustomPasswordInput
withPasswordRequirements
label={t("field.password.label")}
id="password"
autoComplete="new-password"
{...form.getInputProps("password")}
/>
<PasswordInput
label={t("field.passwordConfirm.label")}
id="password-confirm"
autoComplete="new-password"
{...form.getInputProps("confirmPassword")}
/>
@@ -59,7 +59,7 @@ export default async function InviteUsagePage(props: InviteUsagePageProps) {
{t("subtitle")}
</Text>
</Stack>
<Card withBorder w={64 * 6} maw="90vw">
<Card w={64 * 6} maw="90vw">
<RegistrationForm invite={invite} />
</Card>
<Text size="xs" c="gray.5" ta="center">
@@ -9,10 +9,11 @@ import { z } from "zod/v4";
import { signIn } from "@homarr/auth/client";
import { revalidatePathActionAsync } from "@homarr/common/client";
import type { useForm } from "@homarr/form";
import type { UseFormReturnType } from "@homarr/form";
import { useZodForm } from "@homarr/form";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useScopedI18n } from "@homarr/translation/client";
import { sanitizeRedirectionUrl } from "@homarr/validation/redirection-url";
import { userSignInSchema } from "@homarr/validation/user";
type Provider = "credentials" | "ldap" | "oidc";
@@ -70,7 +71,7 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c
// Redirect to the callback URL if the response is defined and comes from a credentials provider (ldap or credentials). oidc is redirected automatically.
await revalidatePathActionAsync("/");
router.push(callbackUrl);
router.push(sanitizeRedirectionUrl(callbackUrl));
},
[t, router, callbackUrl],
);
@@ -116,8 +117,18 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c
<>
<form onSubmit={form.onSubmit((credentials) => void signInAsync(credentials.provider, credentials))}>
<Stack gap="lg">
<TextInput label={t("field.username.label")} {...form.getInputProps("name")} />
<PasswordInput label={t("field.password.label")} {...form.getInputProps("password")} />
<TextInput
label={t("field.username.label")}
id="username"
autoComplete="username"
{...form.getInputProps("name")}
/>
<PasswordInput
label={t("field.password.label")}
id="password"
autoComplete="current-password"
{...form.getInputProps("password")}
/>
{providers.includes("credentials") && (
<Stack gap="sm">
@@ -151,7 +162,7 @@ export const LoginForm = ({ providers, oidcClientName, isOidcAutoLoginEnabled, c
interface SubmitButtonProps {
isPending: boolean;
form: ReturnType<typeof useForm<FormType, (values: FormType) => FormType>>;
form: UseFormReturnType<FormType>;
provider: "credentials" | "ldap";
}
@@ -187,7 +198,7 @@ const PasswordForgottenCollapse = ({ username }: PasswordForgottenCollapseProps)
{tForgotPassword("label")}
</Anchor>
<Collapse in={visible}>
<Collapse expanded={visible}>
<Card>
<Stack gap="xs">
<Text size="sm">{tForgotPassword("description")}</Text>
@@ -4,6 +4,7 @@ import { Card, Center, Stack, Text, Title } from "@mantine/core";
import { env } from "@homarr/auth/env";
import { auth } from "@homarr/auth/next";
import { getScopedI18n } from "@homarr/translation/server";
import { sanitizeRedirectionUrl } from "@homarr/validation/redirection-url";
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
import { LoginForm } from "./_login-form";
@@ -19,7 +20,7 @@ export default async function Login(props: LoginProps) {
const session = await auth();
if (session) {
redirect(searchParams.callbackUrl ?? "/");
redirect(sanitizeRedirectionUrl(searchParams.callbackUrl));
}
const t = await getScopedI18n("user.page.login");
@@ -36,7 +37,7 @@ export default async function Login(props: LoginProps) {
{t("subtitle")}
</Text>
</Stack>
<Card withBorder w={64 * 6} maw="90vw">
<Card w={64 * 6} maw="90vw">
<LoginForm
providers={env.AUTH_PROVIDERS}
oidcClientName={env.AUTH_OIDC_CLIENT_NAME}
@@ -1,70 +1,27 @@
"use client";
import { useCallback, useRef } from "react";
import { Box, LoadingOverlay, Stack } from "@mantine/core";
import { Box, Stack } from "@mantine/core";
import type { RouterOutputs } from "@homarr/api";
import { clientApi } from "@homarr/api/client";
import { useCurrentLayout, useRequiredBoard } from "@homarr/boards/context";
import { BoardCategorySection } from "~/components/board/sections/category-section";
import { BoardEmptySection } from "~/components/board/sections/empty-section";
import { BoardBackgroundVideo } from "~/components/layout/background";
import { fullHeightWithoutHeaderAndFooter } from "~/constants";
import { useIsBoardReady } from "./_ready-context";
let boardName: string | null = null;
export const updateBoardName = (name: string | null) => {
boardName = name;
};
type UpdateCallback = (prev: RouterOutputs["board"]["getHomeBoard"]) => RouterOutputs["board"]["getHomeBoard"];
export const useUpdateBoard = () => {
const utils = clientApi.useUtils();
const updateBoard = useCallback(
(updaterWithoutUndefined: UpdateCallback) => {
if (!boardName) {
throw new Error("Board name is not set");
}
utils.board.getBoardByName.setData({ name: boardName }, (previous) =>
previous ? updaterWithoutUndefined(previous) : previous,
);
},
[utils],
);
return {
updateBoard,
};
};
export const ClientBoard = () => {
const board = useRequiredBoard();
const currentLayoutId = useCurrentLayout();
const isReady = useIsBoardReady();
const fullWidthSortedSections = board.sections
.filter((section) => section.kind === "empty" || section.kind === "category")
.sort((sectionA, sectionB) => sectionA.yOffset - sectionB.yOffset);
const ref = useRef<HTMLDivElement>(null);
return (
<Box h="100%" pos="relative">
<BoardBackgroundVideo />
<LoadingOverlay
visible={!isReady}
transitionProps={{ duration: 500 }}
loaderProps={{ size: "lg" }}
h={fullHeightWithoutHeaderAndFooter}
/>
<Stack ref={ref} h="100%" style={{ visibility: isReady ? "visible" : "hidden" }}>
<Stack h="100%">
{fullWidthSortedSections.map((section) =>
section.kind === "empty" ? (
// Unique keys per layout to always reinitialize the gridstack
<BoardEmptySection key={`${currentLayoutId}-${section.id}`} section={section} />
) : (
<BoardCategorySection key={`${currentLayoutId}-${section.id}`} section={section} />
@@ -1,3 +1,4 @@
import { cache } from "react";
import type { Metadata } from "next";
import { TRPCError } from "@trpc/server";
@@ -11,8 +12,9 @@ import { IntegrationProvider } from "@homarr/auth/client";
import { auth } from "@homarr/auth/next";
import { getIntegrationsWithPermissionsAsync } from "@homarr/auth/server";
import { isNullOrWhitespace } from "@homarr/common";
import { createLogger } from "@homarr/core/infrastructure/logs";
import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error";
import type { WidgetKind } from "@homarr/definitions";
import { logger } from "@homarr/log";
import { getI18n } from "@homarr/translation/server";
import { prefetchForKindAsync } from "@homarr/widgets/prefetch";
@@ -22,6 +24,8 @@ import type { Board, Item } from "../_types";
import { DynamicClientBoard } from "./_dynamic-client";
import { BoardContentHeaderActions } from "./_header-actions";
const logger = createLogger({ module: "createBoardContentPage" });
export type Params = Record<string, unknown>;
interface Props<TParams extends Params> {
@@ -31,20 +35,21 @@ interface Props<TParams extends Params> {
export const createBoardContentPage = <TParams extends Record<string, unknown>>({
getInitialBoardAsync: getInitialBoard,
}: Props<TParams>) => {
const getCachedBoard = cache((_paramsKey: string, params: TParams) => getInitialBoard(params));
const getBoardForParams = (params: TParams) => getCachedBoard(JSON.stringify(params), params);
return {
layout: createBoardLayout({
headerActions: <BoardContentHeaderActions />,
getInitialBoardAsync: getInitialBoard,
getInitialBoardAsync: getBoardForParams,
}),
// eslint-disable-next-line no-restricted-syntax
page: async ({ params }: { params: Promise<TParams> }) => {
const session = await auth();
const integrations = await getIntegrationsWithPermissionsAsync(session);
const board = await getInitialBoard(await params);
const resolvedParams = await params;
const queryClient = getQueryClient();
// Prefetch item data
const [board, session] = await Promise.all([getBoardForParams(resolvedParams), auth()]);
const itemsMap = board.items.reduce((acc, item) => {
const existing = acc.get(item.kind);
if (existing) {
@@ -55,11 +60,20 @@ export const createBoardContentPage = <TParams extends Record<string, unknown>>(
return acc;
}, new Map<WidgetKind, Item[]>());
for (const [kind, items] of itemsMap) {
await prefetchForKindAsync(kind, queryClient, items).catch((error) => {
logger.error(new Error("Failed to prefetch widget", { cause: error }));
});
}
const [integrations] = await Promise.all([
getIntegrationsWithPermissionsAsync(session),
...Array.from(itemsMap).map(([kind, items]) =>
prefetchForKindAsync(kind, queryClient, items).catch((error) => {
logger.error(
new ErrorWithMetadata(
"Failed to prefetch widget",
{ widgetKind: kind, itemCount: items.length },
{ cause: error },
),
);
}),
),
]);
return (
<HydrationBoundary state={dehydrate(queryClient)}>
@@ -71,7 +85,7 @@ export const createBoardContentPage = <TParams extends Record<string, unknown>>(
},
generateMetadataAsync: async ({ params }: { params: Promise<TParams> }): Promise<Metadata> => {
try {
const board = await getInitialBoard(await params);
const board = await getBoardForParams(await params);
const t = await getI18n();
return {
@@ -87,7 +101,6 @@ export const createBoardContentPage = <TParams extends Record<string, unknown>>(
},
};
} catch (error) {
// Ignore not found errors and return empty metadata
if (error instanceof TRPCError && error.code === "NOT_FOUND") {
return {};
}
@@ -1,7 +1,6 @@
"use client";
import { useCallback, useEffect } from "react";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { Group, Menu, ScrollArea } from "@mantine/core";
import { useHotkeys } from "@mantine/hooks";
@@ -19,14 +18,17 @@ import {
} from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
import { useRequiredBoard } from "@homarr/boards/context";
import { useEditMode } from "@homarr/boards/edit-mode";
import { revalidatePathActionAsync } from "@homarr/common/client";
import { env } from "@homarr/common/env";
import { hotkeys } from "@homarr/definitions";
import { useConfirmModal, useModalAction } from "@homarr/modals";
import { AppSelectModal } from "@homarr/modals-collection";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useI18n, useScopedI18n } from "@homarr/translation/client";
import { Link } from "@homarr/ui";
import { useItemActions } from "~/components/board/items/item-actions";
import { ItemSelectModal } from "~/components/board/items/item-select-modal";
@@ -42,7 +44,7 @@ export const BoardContentHeaderActions = () => {
const { hasChangeAccess } = useBoardPermissions(board);
if (!hasChangeAccess) {
return null; // Hide actions for user without access
return <SelectBoardsMenu />;
}
return (
@@ -61,6 +63,7 @@ export const BoardContentHeaderActions = () => {
};
const AddMenu = () => {
const { data: session } = useSession();
const { openModal: openCategoryEditModal } = useModalAction(CategoryEditModal);
const { openModal: openItemSelectModal } = useModalAction(ItemSelectModal);
const { openModal: openAppSelectModal } = useModalAction(AppSelectModal);
@@ -95,17 +98,18 @@ const AddMenu = () => {
const handleSelectApp = useCallback(() => {
openAppSelectModal({
onSelect: (appId) => {
onSelect: (app) => {
createItem({
kind: "app",
options: { appId },
options: { appId: app.id },
});
},
withCreate: session?.user.permissions.includes("app-create") ?? false,
});
}, [openAppSelectModal, createItem]);
return (
<Menu position="bottom-end" withArrow>
<Menu position="bottom-end">
<Menu.Target>
<HeaderButton w="auto" px={4}>
<Group gap={4} wrap="nowrap">
@@ -165,7 +169,7 @@ const EditModeMenu = () => {
open();
}, [board, isEditMode, saveBoard, open]);
useHotkeys([["mod+e", toggle]]);
useHotkeys([[hotkeys.toggleBoardEdit, toggle]]);
usePreventLeaveWithDirty(isEditMode);
return (
@@ -179,7 +183,7 @@ const SelectBoardsMenu = () => {
const { data: boards = [] } = clientApi.board.getAllBoards.useQuery();
return (
<Menu position="bottom-end" withArrow>
<Menu position="bottom-end">
<Menu.Target>
<HeaderButton w="auto" px={4}>
<IconReplace stroke={1.5} />
@@ -260,6 +264,5 @@ const usePreventLeaveWithDirty = (isDirty: boolean) => {
window.removeEventListener("popstate", handlePopState);
window.removeEventListener("beforeunload", handleBeforeUnload);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isDirty]);
};
@@ -1,43 +1,19 @@
"use client";
import type { PropsWithChildren } from "react";
import { createContext, useCallback, useContext, useEffect, useState } from "react";
import { usePathname } from "next/navigation";
import { clientApi } from "@homarr/api/client";
import { useRequiredBoard } from "@homarr/boards/context";
import { createContext, useCallback, useContext } from "react";
const BoardReadyContext = createContext<{
isReady: boolean;
markAsReady: (id: string) => void;
} | null>(null);
export const BoardReadyProvider = ({ children }: PropsWithChildren) => {
const pathname = usePathname();
const utils = clientApi.useUtils();
const board = useRequiredBoard();
const [readySections, setReadySections] = useState<string[]>([]);
// Reset sections required for ready state
useEffect(() => {
return () => {
setReadySections([]);
};
}, [pathname, utils]);
useEffect(() => {
setReadySections((previous) => previous.filter((id) => board.sections.some((section) => section.id === id)));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [board.sections.length, setReadySections]);
const markAsReady = useCallback((id: string) => {
setReadySections((previous) => (previous.includes(id) ? previous : [...previous, id]));
}, []);
// eslint-disable-next-line @typescript-eslint/no-empty-function
const markAsReady = useCallback((_id: string) => {}, []);
return (
<BoardReadyContext.Provider
value={{
isReady: board.sections.length === readySections.length,
markAsReady,
}}
>
@@ -55,13 +31,3 @@ export const useMarkSectionAsReady = () => {
return context.markAsReady;
};
export const useIsBoardReady = () => {
const context = useContext(BoardReadyContext);
if (!context) {
throw new Error("BoardReadyProvider is required");
}
return context.isReady;
};
@@ -2,7 +2,7 @@
import type { PropsWithChildren } from "react";
import type { MantineColorsTuple } from "@mantine/core";
import { colorsTuple, createTheme, darken, lighten, MantineProvider, rem } from "@mantine/core";
import { colorsTuple, createTheme, darken, lighten, MantineProvider, rem, v8CssVariablesResolver } from "@mantine/core";
import { useRequiredBoard } from "@homarr/boards/context";
import type { ColorScheme } from "@homarr/definitions";
@@ -24,6 +24,7 @@ export const BoardMantineProvider = ({
},
primaryColor: "primaryColor",
autoContrast: true,
defaultRadius: "sm",
fontSizes: {
"2xl": rem(24),
"3xl": rem(28),
@@ -32,7 +33,12 @@ export const BoardMantineProvider = ({
});
return (
<MantineProvider defaultColorScheme={defaultColorScheme} theme={theme} colorSchemeManager={colorSchemeManager}>
<MantineProvider
defaultColorScheme={defaultColorScheme}
theme={theme}
colorSchemeManager={colorSchemeManager}
cssVariablesResolver={v8CssVariablesResolver}
>
{children}
</MantineProvider>
);
@@ -83,7 +83,7 @@ export const ColorSettingsContent = ({ board }: Props) => {
<Anchor onClick={toggle}>{showPreview ? t("common.preview.hide") : t("common.preview.show")}</Anchor>
</Grid.Col>
<Grid.Col span={12}>
<Collapse in={showPreview}>
<Collapse expanded={showPreview}>
<Stack>
<ColorsPreview previewColor={form.values.primaryColor} />
<ColorsPreview previewColor={form.values.secondaryColor} />
@@ -120,11 +120,14 @@ export const BackgroundSettingsContent = ({ board }: Props) => {
/>
{session?.user.permissions.includes("media-upload") && (
<UploadMedia
onSuccess={({ url }) =>
onSuccess={(medias) => {
const first = medias.at(0);
if (!first) return;
startTransition(() => {
form.setFieldValue("backgroundImageUrl", url);
})
}
form.setFieldValue("backgroundImageUrl", first.url);
});
}}
>
{({ onClick, loading }) => (
<ActionIcon onClick={onClick} loading={loading} mt={24} size={36} variant="default">
@@ -2,7 +2,7 @@
import { useEffect, useRef } from "react";
import { Button, Grid, Group, Loader, Stack, TextInput } from "@mantine/core";
import { useDebouncedValue, useDocumentTitle, useFavicon } from "@mantine/hooks";
import { useDebouncedValue, useDocumentTitle } from "@mantine/hooks";
import { useUpdateBoard } from "@homarr/boards/updater";
import { useZodForm } from "@homarr/form";
@@ -10,6 +10,7 @@ import { IconPicker } from "@homarr/forms-collection";
import { useI18n } from "@homarr/translation/client";
import { boardSavePartialSettingsSchema } from "@homarr/validation/board";
import { homarrLogoPath } from "~/components/layout/logo/homarr-logo";
import { createMetaTitle } from "~/metadata";
import type { Board } from "../../_types";
import { useSavePartialSettingsMutation } from "./_shared";
@@ -53,7 +54,6 @@ export const GeneralSettingsContent = ({ board }: Props) => {
);
useLogoPreview(form.values.logoImageUrl);
useFaviconPreview(form.values.faviconImageUrl);
const metaTitleStatus = useMetaTitlePreview(form.values.metaTitle);
// Cleanup for not applied changes of the page title and logo image URL
@@ -75,6 +75,7 @@ export const GeneralSettingsContent = ({ board }: Props) => {
pageTitle: values.pageTitle,
logoImageUrl: values.logoImageUrl,
};
updateFavicon(values.faviconImageUrl ?? homarrLogoPath);
savePartialSettings({
id: board.id,
...values,
@@ -146,7 +147,13 @@ const useMetaTitlePreview = (title: string | null) => {
};
};
const useFaviconPreview = (url: string | null) => {
const [faviconDebounced] = useDebouncedValue(url ?? "", 500);
useFavicon(faviconDebounced);
// Previously we used the useFavicon hook from Mantine
// However if the user tried to click on a link to a different page
// it caused an error "Cannot read properties of null (reading 'removeChild')"
// Probably because the head element was null (https://github.com/mantinedev/mantine/blob/b90d9b81031f45f5d15e75f25138ed6477f65bce/packages/%40mantine/hooks/src/use-favicon/use-favicon.ts#L21)
// See https://github.com/homarr-labs/homarr/issues/4905
const updateFavicon = (url: string) => {
const link: HTMLLinkElement | null = document.querySelector('link[rel="icon"]');
if (!link) return;
link.href = url;
};
@@ -61,6 +61,10 @@ const getBoardAndPermissionsAsync = async (params: Awaited<Props["params"]>) =>
notFound();
}
if (error instanceof TRPCError && error.code === "BAD_REQUEST") {
notFound();
}
throw error;
}
};
@@ -6,7 +6,7 @@ import { TRPCError } from "@trpc/server";
import { auth } from "@homarr/auth/next";
import { BoardProvider } from "@homarr/boards/context";
import { EditModeProvider } from "@homarr/boards/edit-mode";
import { logger } from "@homarr/log";
import { createLogger } from "@homarr/core/infrastructure/logs";
import { MainHeader } from "~/components/layout/header";
import { BoardLogoWithTitle } from "~/components/layout/logo/board-logo";
@@ -18,6 +18,8 @@ import { CustomCss } from "./(content)/_custom-css";
import { BoardReadyProvider } from "./(content)/_ready-context";
import { BoardMantineProvider } from "./(content)/_theme";
const logger = createLogger({ module: "createBoardLayout" });
interface CreateBoardLayoutProps<TParams extends Params> {
headerActions: JSX.Element;
getInitialBoardAsync: (params: TParams) => Promise<Board>;
@@ -45,6 +47,10 @@ export const createBoardLayout = <TParams extends Params>({
notFound();
}
if (error instanceof TRPCError && error.code === "BAD_REQUEST") {
notFound();
}
throw error;
});
const colorScheme = await getCurrentColorSchemeAsync();
@@ -1,4 +1,3 @@
import Link from "next/link";
import type { MantineColor } from "@mantine/core";
import { Button, Card, Stack, Text } from "@mantine/core";
import { IconBook2, IconCategoryPlus, IconLayoutDashboard, IconMailForward } from "@tabler/icons-react";
@@ -8,6 +7,7 @@ import { getMantineColor } from "@homarr/common";
import { db } from "@homarr/db";
import { createDocumentationLink } from "@homarr/definitions";
import { getScopedI18n } from "@homarr/translation/server";
import { Link } from "@homarr/ui";
import type { TablerIcon } from "@homarr/ui";
export const InitFinish = async () => {
@@ -15,7 +15,7 @@ export const InitFinish = async () => {
const tFinish = await getScopedI18n("init.step.finish");
return (
<Card w={64 * 6} maw="90vw" withBorder>
<Card w={64 * 6} maw="90vw">
<Stack>
<Text>{tFinish("description")}</Text>
@@ -12,7 +12,11 @@ import { groupCreateSchema } from "@homarr/validation/group";
export const InitGroup = () => {
const t = useI18n();
const { mutateAsync } = clientApi.group.createInitialExternalGroup.useMutation();
const { mutateAsync } = clientApi.group.createInitialExternalGroup.useMutation({
async onSuccess() {
await revalidatePathActionAsync("/init");
},
});
const form = useZodForm(groupCreateSchema, {
initialValues: {
name: "",
@@ -21,9 +25,6 @@ export const InitGroup = () => {
const handleSubmitAsync = async (values: z.infer<typeof groupCreateSchema>) => {
await mutateAsync(values, {
async onSuccess() {
await revalidatePathActionAsync("/init");
},
onError(error) {
if (error.data?.code === "CONFLICT") {
form.setErrors({ name: t("common.zod.errors.custom.groupNameTaken") });
@@ -33,7 +34,7 @@ export const InitGroup = () => {
};
return (
<Card w={64 * 6} maw="90vw" withBorder>
<Card w={64 * 6} maw="90vw">
<form onSubmit={form.onSubmit(handleSubmitAsync)}>
<Stack>
<TextInput
@@ -13,7 +13,7 @@ interface FileInfoCardProps {
export const FileInfoCard = ({ file, onRemove }: FileInfoCardProps) => {
const tFileInfo = useScopedI18n("init.step.import.fileInfo");
return (
<Card w={64 * 12 + 8} maw="90vw">
<Card w={64 * 12 + 8} maw="90vw" withBorder={false}>
<Group justify="space-between" align="center" wrap="nowrap">
<Group>
<Text fw={500} lineClamp={1} style={{ wordBreak: "break-all" }}>
@@ -20,7 +20,7 @@ export const InitImport = () => {
if (!file) {
return (
<Card w={64 * 12 + 8} maw="90vw" withBorder>
<Card w={64 * 12 + 8} maw="90vw">
<ImportDropZone
loading={isPending}
updateFile={(file) => {
@@ -1,6 +1,5 @@
"use client";
import { startTransition } from "react";
import { Button, Card, Group, Stack, Switch, Text } from "@mantine/core";
import { IconArrowRight } from "@tabler/icons-react";
import type { z } from "zod/v4";
@@ -17,58 +16,30 @@ import { settingsInitSchema } from "@homarr/validation/settings";
export const InitSettings = () => {
const tSection = useScopedI18n("management.page.settings.section");
const t = useI18n();
const { mutateAsync } = clientApi.serverSettings.initSettings.useMutation();
const { mutateAsync } = clientApi.serverSettings.initSettings.useMutation({
async onSuccess() {
await revalidatePathActionAsync("/init");
},
});
const form = useZodForm(settingsInitSchema, { initialValues: defaultServerSettings });
form.watch("analytics.enableGeneral", ({ value }) => {
if (!value) {
startTransition(() => {
form.setFieldValue("analytics.enableWidgetData", false);
form.setFieldValue("analytics.enableIntegrationData", false);
form.setFieldValue("analytics.enableUserData", false);
});
}
});
const handleSubmitAsync = async (values: z.infer<typeof settingsInitSchema>) => {
await mutateAsync(values, {
async onSuccess() {
await revalidatePathActionAsync("/init");
},
});
await mutateAsync(values);
};
return (
<form onSubmit={form.onSubmit(handleSubmitAsync)}>
<Stack>
<Card w={64 * 12 + 8} maw="90vw" withBorder>
<Card w={64 * 12 + 8} maw="90vw">
<Stack gap="sm">
<Text fw={500}>{tSection("analytics.title")}</Text>
<Stack gap="xs">
<AnalyticsRow kind="general" {...form.getInputProps("analytics.enableGeneral", { type: "checkbox" })} />
<Stack gap="xs" ps="md" w="100%">
<AnalyticsRow
kind="integrationData"
disabled={!form.values.analytics.enableGeneral}
{...form.getInputProps("analytics.enableWidgetData", { type: "checkbox" })}
/>
<AnalyticsRow
kind="widgetData"
disabled={!form.values.analytics.enableGeneral}
{...form.getInputProps("analytics.enableIntegrationData", { type: "checkbox" })}
/>
<AnalyticsRow
kind="usersData"
disabled={!form.values.analytics.enableGeneral}
{...form.getInputProps("analytics.enableUserData", { type: "checkbox" })}
/>
</Stack>
</Stack>
</Stack>
</Card>
<Card w={64 * 12 + 8} maw="90vw" withBorder>
<Card w={64 * 12 + 8} maw="90vw">
<Stack gap="sm">
<Text fw={500}>{tSection("crawlingAndIndexing.title")}</Text>
@@ -10,7 +10,7 @@ export const InitStart = async () => {
const tStart = await getScopedI18n("init.step.start");
return (
<Card w={64 * 6} maw="90vw" withBorder>
<Card w={64 * 6} maw="90vw">
<Stack>
<Text>{tStart("description")}</Text>
@@ -1,15 +1,15 @@
"use client";
import { Button, PasswordInput, Stack, TextInput } from "@mantine/core";
import { Button, Stack, TextInput } from "@mantine/core";
import type { z } from "zod/v4";
import { clientApi } from "@homarr/api/client";
import { signIn } from "@homarr/auth/client";
import { revalidatePathActionAsync } from "@homarr/common/client";
import { useZodForm } from "@homarr/form";
import { UserCreatePasswordFields } from "@homarr/forms-collection";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useScopedI18n } from "@homarr/translation/client";
import { CustomPasswordInput } from "@homarr/ui";
import { userInitSchema } from "@homarr/validation/user";
export const InitUserForm = () => {
@@ -26,19 +26,19 @@ export const InitUserForm = () => {
const handleSubmitAsync = async (values: FormType) => {
await mutateAsync(values, {
async onSuccess() {
onSuccess() {
showSuccessNotification({
title: tUser("notification.success.title"),
message: tUser("notification.success.message"),
});
await signIn("credentials", {
void signIn("credentials", {
name: values.username,
password: values.password,
redirect: false,
}).then(async () => {
await revalidatePathActionAsync("/init");
});
await revalidatePathActionAsync("/init");
},
onError: (error) => {
showErrorNotification({
@@ -59,12 +59,10 @@ export const InitUserForm = () => {
>
<Stack gap="lg">
<TextInput label={t("field.username.label")} {...form.getInputProps("username")} />
<CustomPasswordInput
withPasswordRequirements
label={t("field.password.label")}
{...form.getInputProps("password")}
<UserCreatePasswordFields
passwordInputProps={form.getInputProps("password")}
confirmPasswordInputProps={form.getInputProps("confirmPassword")}
/>
<PasswordInput label={t("field.passwordConfirm.label")} {...form.getInputProps("confirmPassword")} />
<Button type="submit" fullWidth loading={isPending}>
{t("action.create")}
</Button>
@@ -4,7 +4,7 @@ import { InitUserForm } from "./init-user-form";
export const InitUser = () => {
return (
<Card w={64 * 6} maw="90vw" withBorder>
<Card w={64 * 6} maw="90vw">
<InitUserForm />
</Card>
);
+14 -6
View File
@@ -4,6 +4,7 @@ import { Inter } from "next/font/google";
import "@homarr/notifications/styles.css";
import "@homarr/spotlight/styles.css";
import "@homarr/ui/styles.css";
import "~/styles/color-scheme.scss";
import "~/styles/scroll-area.scss";
import { notFound } from "next/navigation";
@@ -23,7 +24,9 @@ import type { SupportedLanguage } from "@homarr/translation";
import { isLocaleRTL, isLocaleSupported } from "@homarr/translation";
import { Analytics } from "~/components/layout/analytics";
import { CrowdinLiveTranslation } from "~/components/layout/crowdin-live-translation";
import { SearchEngineOptimization } from "~/components/layout/search-engine-optimization";
import { ServiceWorkerRegistration } from "~/components/layout/service-worker-registration";
import { getCurrentColorSchemeAsync } from "~/theme/color-scheme";
import { DayJsLoader } from "./_client-providers/dayjs-loader";
import { JotaiProvider } from "./_client-providers/jotai";
@@ -41,13 +44,13 @@ const fontSans = Inter({
export const generateMetadata = async (): Promise<Metadata> => ({
title: "Homarr",
description:
"Simplify the management of your server with Homarr - a sleek, modern dashboard that puts all of your apps and services at your fingertips.",
"A self-hosted dashboard for the *arr stack and your entire homelab. Integrates with 50+ services, real-time widgets, no config files.",
openGraph: {
title: "Homarr Dashboard",
description:
"Simplify the management of your server with Homarr - a sleek, modern dashboard that puts all of your apps and services at your fingertips.",
"A self-hosted dashboard for the *arr stack and your entire homelab. Integrates with 50+ services, real-time widgets, no config files.",
url: "https://homarr.dev",
siteName: "Homarr Documentation",
siteName: "Homarr",
},
icons: {
icon: "/logo/logo.png",
@@ -105,6 +108,7 @@ export default async function Layout(props: {
forceDisableStatus: serverSettings.board.forceDisableStatus,
},
search: { defaultSearchEngineId: serverSettings.search.defaultSearchEngineId },
user: { enableGravatar: serverSettings.user.enableGravatar },
}}
{...innerProps}
/>
@@ -118,24 +122,28 @@ export default async function Layout(props: {
(innerProps) => <SpotlightProvider {...innerProps} />,
]);
const { locale } = await props.params;
return (
// Instead of ColorSchemScript we use data-mantine-color-scheme to prevent flickering
<html
lang={(await props.params).locale}
lang={locale}
dir={direction}
data-mantine-color-scheme={colorScheme}
style={{
backgroundColor: colorScheme === "dark" ? "#242424" : "#fff",
backgroundColor: colorScheme === "dark" ? "#242424" : colorScheme === "auto" ? undefined : "#fff",
}}
suppressHydrationWarning
>
<head>
<Analytics />
<SearchEngineOptimization />
<CrowdinLiveTranslation locale={locale} />
</head>
<body className={["font-sans", fontSans.variable].join(" ")}>
<StackedProvider>
<Notifications />
<Notifications pauseResetOnHover="notification" />
<ServiceWorkerRegistration />
{props.children}
</StackedProvider>
</body>
@@ -2,6 +2,7 @@ import { Box, Grid, GridCol, Group, Image, Stack, Title } from "@mantine/core";
import { splitToNChunks } from "@homarr/common";
import { integrationDefs } from "@homarr/definitions";
import { getScopedI18n } from "@homarr/translation/server";
import classes from "./hero-banner.module.css";
@@ -12,19 +13,20 @@ const icons = Object.values(integrationDefs)
const countIconGroups = 3;
const animationDurationInSeconds = icons.length;
const arrayInChunks = splitToNChunks(icons, countIconGroups);
const gridSpan = 12 / countIconGroups;
export const HeroBanner = () => {
const gridSpan = 12 / countIconGroups;
export const HeroBanner = async () => {
const t = await getScopedI18n("management.page.home");
return (
<Box className={classes.bannerContainer} p={{ base: "lg", md: "3rem" }} bg="dark.6" pos="relative">
<Stack gap={0}>
<Title fz={{ base: "h4", md: "h2" }} c="dimmed">
Welcome back to your
{t("heroBanner.title")}
</Title>
<Group gap="xs" wrap="nowrap">
<Image src="/logo/logo.png" w={{ base: 32, md: 40 }} h={{ base: 32, md: 40 }} />
<Title fz={{ base: "h3", md: "h1" }}>Homarr Board</Title>
<Title fz={{ base: "h3", md: "h1" }}>{t("heroBanner.subtitle", { app: "Homarr" })}</Title>
</Group>
</Stack>
<Box visibleFrom="md" className={classes.scrollContainer} w={"30%"} top={0} right={0} pos="absolute">
@@ -43,7 +45,6 @@ export const HeroBanner = () => {
<Image
key={`grid-column-${columnIndex}-scroll-1-${index}`}
src={icon}
radius="md"
fit={"contain"}
w={50}
h={50}
@@ -55,7 +56,6 @@ export const HeroBanner = () => {
<Image
key={`grid-column-${columnIndex}-scroll-2-${index}`}
src={icon}
radius="md"
fit={"contain"}
w={50}
h={50}
@@ -1,3 +1,7 @@
.contributorCard {
background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
}
.dependencyCard:hover {
background-color: light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-5));
}
@@ -11,21 +11,40 @@ import {
Center,
Flex,
Group,
List,
ListItem,
Kbd,
SimpleGrid,
Stack,
Table,
TableTbody,
TableTd,
TableTh,
TableThead,
TableTr,
Text,
ThemeIcon,
Title,
UnstyledButton,
} from "@mantine/core";
import { IconLanguage, IconLibrary, IconUsers } from "@tabler/icons-react";
import {
IconKeyboard,
IconLanguage,
IconLibrary,
IconMoneybagHeart,
IconPackage,
IconUsers,
} from "@tabler/icons-react";
import { capitalize, objectEntries } from "@homarr/common";
import { hotkeys } from "@homarr/definitions";
import { getScopedI18n } from "@homarr/translation/server";
import { homarrLogoPath } from "~/components/layout/logo/homarr-logo";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { createMetaTitle } from "~/metadata";
import { getPackageAttributesAsync } from "~/versions/package-reader";
import type { PackageJsonDependencies } from "~/versions/package-reader";
import { getPackageVersion } from "~/versions/package-reader";
import type githubContributorsJson from "../../../../../../../static-data/contributors.json";
import type openCollectiveContributorsJson from "../../../../../../../static-data/opencollective-contributors.json";
import type crowdinContributorsJson from "../../../../../../../static-data/translators.json";
import classes from "./about.module.css";
@@ -48,7 +67,10 @@ const getHostAsync = async () => {
export default async function AboutPage() {
const baseServerUrl = `http://${await getHostAsync()}`;
const t = await getScopedI18n("management.page.about");
const attributes = await getPackageAttributesAsync();
const version = getPackageVersion();
const dependencies = (await fetch(`${baseServerUrl}/api/about/dependencies`).then((res) =>
res.json(),
)) as PackageJsonDependencies;
const githubContributors = (await fetch(`${baseServerUrl}/api/about/contributors/github`).then((res) =>
res.json(),
)) as typeof githubContributorsJson;
@@ -57,6 +79,10 @@ export default async function AboutPage() {
res.json(),
)) as typeof crowdinContributorsJson;
const openCollectiveContributors = (await fetch(`${baseServerUrl}/api/about/contributors/opencollective`).then(
(res) => res.json(),
)) as typeof openCollectiveContributorsJson;
return (
<div>
<DynamicBreadcrumb />
@@ -64,10 +90,8 @@ export default async function AboutPage() {
<Group py="lg">
<Image src={homarrLogoPath} width={100} height={100} alt="" />
<Stack gap={0}>
<Title order={1} tt="uppercase">
Homarr
</Title>
<Title order={2}>{t("version", { version: attributes.version })}</Title>
<Title order={1}>Homarr</Title>
<Title order={2}>{t("version", { version })}</Title>
</Stack>
</Group>
</Center>
@@ -122,31 +146,111 @@ export default async function AboutPage() {
</Flex>
</AccordionPanel>
</AccordionItem>
<AccordionItem value="sponsors">
<AccordionControl icon={<IconMoneybagHeart size="1rem" />}>
<Stack gap={0}>
<Text>{t("accordion.sponsors.title")}</Text>
<Text size="sm" c="dimmed">
{t("accordion.sponsors.subtitle", {
count: String(openCollectiveContributors.length),
})}
</Text>
</Stack>
</AccordionControl>
<AccordionPanel>
<Flex wrap="wrap" gap="xs">
{openCollectiveContributors.map((sponsor) => (
<GenericContributorLinkCard
key={sponsor.slug}
link={`https://opencollective.com/${sponsor.slug}`}
image={sponsor.imageUrl}
name={sponsor.name}
/>
))}
</Flex>
</AccordionPanel>
</AccordionItem>
<AccordionItem value="libraries">
<AccordionControl icon={<IconLibrary size="1rem" />}>
<Stack gap={0}>
<Text>{t("accordion.libraries.title")}</Text>
<Text size="sm" c="dimmed">
{t("accordion.libraries.subtitle", {
count: String(Object.keys(attributes.dependencies).length),
count: String(Object.keys(dependencies).length),
})}
</Text>
</Stack>
</AccordionControl>
<AccordionPanel>
<List>
{Object.entries(attributes.dependencies)
<SimpleGrid cols={{ xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }} spacing="md">
{Object.entries(dependencies)
.filter(([, value]) => !value.includes("workspace:"))
.sort(([key1], [key2]) => key1.localeCompare(key2))
.map(([key, value]) => (
<ListItem key={key}>
{value.includes("workspace:") ? (
<Text>{key}</Text>
) : (
<a href={`https://www.npmjs.com/package/${key}`}>{key}</a>
)}
</ListItem>
.map(([name, version]) => (
<UnstyledButton
key={name}
component="a"
href={`https://www.npmjs.com/package/${name}`}
target="_blank"
>
<Card radius="md" p="xs" className={classes.dependencyCard}>
<Group gap="sm" wrap="nowrap">
<ThemeIcon variant="light" size="lg">
<IconPackage size="1.5rem" stroke={1.5} />
</ThemeIcon>
<Stack gap={0}>
<Text size="sm" fw="bold" lineClamp={1} title={name}>
{name}
</Text>
<Text size="sm" c="dimmed">
v{version.replace("^", "").replace("~", "")}
</Text>
</Stack>
</Group>
</Card>
</UnstyledButton>
))}
</List>
</SimpleGrid>
</AccordionPanel>
</AccordionItem>
<AccordionItem value="hotkeys">
<AccordionControl icon={<IconKeyboard size="1rem" />}>
<Stack gap={0}>
<Text>{t("accordion.hotkeys.title")}</Text>
<Text size="sm" c="dimmed">
{t("accordion.hotkeys.subtitle")}
</Text>
</Stack>
</AccordionControl>
<AccordionPanel>
<Table>
<TableThead>
<TableTr>
<TableTh>{t("accordion.hotkeys.field.shortcut")}</TableTh>
<TableTh>{t("accordion.hotkeys.field.action")}</TableTh>
</TableTr>
</TableThead>
<TableTbody>
{objectEntries(hotkeys).map(([key, shortcut]) => (
<TableTr key={key}>
<TableTd>
<Kbd size="md">
{shortcut
.split("+")
.map((key) => capitalize(key.trim()))
.join(" + ")}
</Kbd>
</TableTd>
<TableTd>{t(`accordion.hotkeys.action.${key}`)}</TableTd>
</TableTr>
))}
</TableTbody>
</Table>
<Text size="sm" c="dimmed">
{t("accordion.hotkeys.note")}
</Text>
</AccordionPanel>
</AccordionItem>
</Accordion>
@@ -1,7 +1,6 @@
import { Fragment } from "react";
import Link from "next/link";
import { redirect } from "next/navigation";
import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core";
import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text } from "@mantine/core";
import { IconBox, IconPencil } from "@tabler/icons-react";
import { z } from "zod/v4";
@@ -10,11 +9,10 @@ import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import type { inferSearchParamsFromSchema } from "@homarr/common/types";
import { getI18n, getScopedI18n } from "@homarr/translation/server";
import { SearchInput, TablePagination } from "@homarr/ui";
import { Link, SearchInput, TablePagination } from "@homarr/ui";
import { ManageContainer } from "~/components/manage/manage-container";
import { ManagePageLayout } from "~/components/manage/manage-page-layout";
import { MobileAffixButton } from "~/components/manage/mobile-affix-button";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { NoResults } from "~/components/no-results";
import { AppDeleteButton } from "./_app-delete-button";
@@ -40,34 +38,31 @@ export default async function AppsPage(props: AppsPageProps) {
const { items: apps, totalCount } = await api.app.getPaginated(searchParams);
const t = await getScopedI18n("app");
return (
<ManageContainer>
<DynamicBreadcrumb />
<Stack>
<Title>{t("page.list.title")}</Title>
<Group justify="space-between" align="center">
<SearchInput placeholder={`${t("search")}...`} defaultValue={searchParams.search} flexExpand />
{session.user.permissions.includes("app-create") && (
<MobileAffixButton component={Link} href="/manage/apps/new">
{t("page.create.title")}
</MobileAffixButton>
)}
</Group>
{apps.length === 0 && <AppNoResults />}
{apps.length > 0 && (
<Stack gap="sm">
{apps.map((app) => (
<AppCard key={app.id} app={app} />
))}
</Stack>
)}
const canCreate = session.user.permissions.includes("app-create");
{/* Added margin to not hide pagination behind affix-button */}
<Group justify="end" mb={48}>
<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />
</Group>
</Stack>
</ManageContainer>
return (
<ManagePageLayout
title={t("page.list.title")}
primaryAction={
canCreate ? (
<MobileAffixButton component={Link} href="/manage/apps/new">
{t("page.create.title")}
</MobileAffixButton>
) : undefined
}
toolbar={<SearchInput placeholder={`${t("search")}...`} defaultValue={searchParams.search} flexExpand />}
footer={<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />}
floatingPrimaryAction={canCreate}
>
{apps.length === 0 && <AppNoResults />}
{apps.length > 0 && (
<Stack gap="sm">
{apps.map((app) => (
<AppCard key={app.id} app={app} />
))}
</Stack>
)}
</ManagePageLayout>
);
}
@@ -80,7 +75,7 @@ const AppCard = async ({ app }: AppCardProps) => {
const session = await auth();
return (
<Card withBorder>
<Card>
<Group justify="space-between" wrap="nowrap">
<Group align="top" justify="start" wrap="nowrap" style={{ flex: "1" }}>
<Avatar
@@ -1,7 +1,6 @@
"use client";
import { useCallback } from "react";
import Link from "next/link";
import { Menu } from "@mantine/core";
import { IconCopy, IconDeviceMobile, IconHome, IconSettings, IconTrash } from "@tabler/icons-react";
@@ -12,6 +11,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client";
import { useConfirmModal, useModalAction } from "@homarr/modals";
import { DuplicateBoardModal } from "@homarr/modals-collection";
import { useScopedI18n } from "@homarr/translation/client";
import { Link } from "@homarr/ui";
import { useBoardPermissions } from "~/components/board/permissions/client";
@@ -84,9 +84,6 @@ export const BoardCardMenuDropdown = ({ board }: BoardCardMenuDropdownProps) =>
id: board.id,
name: board.name,
},
onSuccess: async () => {
await revalidatePathActionAsync("/manage/boards");
},
});
}, [board.id, board.name, openDuplicateModal]);
@@ -1,43 +1,38 @@
"use client";
import { Affix, Button, Menu } from "@mantine/core";
import { Button, Menu } from "@mantine/core";
import { IconCategoryPlus, IconChevronDown, IconFileImport } from "@tabler/icons-react";
import { useModalAction } from "@homarr/modals";
import { AddBoardModal, ImportBoardModal } from "@homarr/modals-collection";
import { useI18n } from "@homarr/translation/client";
import { ManageMobilePrimaryAction } from "~/components/manage/manage-mobile-primary-action";
export const CreateBoardButton = () => {
const t = useI18n();
const { openModal: openAddModal } = useModalAction(AddBoardModal);
const { openModal: openImportModal } = useModalAction(ImportBoardModal);
const buttonGroupContent = (
<>
<Button leftSection={<IconCategoryPlus size="1rem" />} onClick={openAddModal}>
{t("management.page.board.action.new.label")}
</Button>
<Menu position="bottom-end">
<Menu.Target>
<Button px="xs" ms={1}>
<IconChevronDown size="1rem" />
</Button>
</Menu.Target>
<Menu.Dropdown>
<Menu.Item onClick={openImportModal} leftSection={<IconFileImport size="1rem" />}>
{t("board.action.oldImport.label")}
</Menu.Item>
</Menu.Dropdown>
</Menu>
</>
);
return (
<>
<Button.Group visibleFrom="md">{buttonGroupContent}</Button.Group>
<Affix hiddenFrom="md" position={{ bottom: 20, right: 20 }}>
<Button.Group>{buttonGroupContent}</Button.Group>
</Affix>
</>
<ManageMobilePrimaryAction>
<Button.Group>
<Button leftSection={<IconCategoryPlus size="1rem" />} onClick={openAddModal}>
{t("management.page.board.action.new.label")}
</Button>
<Menu position="bottom-end">
<Menu.Target>
<Button px="xs" ms={1}>
<IconChevronDown size="1rem" />
</Button>
</Menu.Target>
<Menu.Dropdown>
<Menu.Item onClick={openImportModal} leftSection={<IconFileImport size="1rem" />}>
{t("board.action.oldImport.label")}
</Menu.Item>
</Menu.Dropdown>
</Menu>
</Button.Group>
</ManageMobilePrimaryAction>
);
};
@@ -1,4 +1,3 @@
import Link from "next/link";
import {
ActionIcon,
Badge,
@@ -10,22 +9,27 @@ import {
Group,
Menu,
MenuTarget,
Stack,
Text,
Title,
Tooltip,
} from "@mantine/core";
import { IconDeviceMobile, IconDotsVertical, IconHomeFilled, IconLock, IconWorld } from "@tabler/icons-react";
import {
IconDeviceMobile,
IconDotsVertical,
IconHomeFilled,
IconLayoutDashboard,
IconLock,
IconWorld,
} from "@tabler/icons-react";
import type { RouterOutputs } from "@homarr/api";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { getScopedI18n } from "@homarr/translation/server";
import { UserAvatar } from "@homarr/ui";
import { Link, UserAvatar } from "@homarr/ui";
import { getBoardPermissionsAsync } from "~/components/board/permissions/server";
import { ManageContainer } from "~/components/manage/manage-container";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { ManagePageLayout } from "~/components/manage/manage-page-layout";
import { NoResults } from "~/components/no-results";
import { BoardCardMenuDropdown } from "./_components/board-card-menu-dropdown";
import { CreateBoardButton } from "./_components/create-board-button";
@@ -36,23 +40,22 @@ export default async function ManageBoardsPage() {
const canCreateBoards = session?.user.permissions.includes("board-create");
return (
<ManageContainer>
<DynamicBreadcrumb />
<Stack>
<Group justify="space-between">
<Title mb="md">{t("title")}</Title>
{canCreateBoards && <CreateBoardButton />}
</Group>
<Grid mb={{ base: "xl", md: 0 }}>
<ManagePageLayout
title={t("title")}
primaryAction={canCreateBoards ? <CreateBoardButton /> : undefined}
floatingPrimaryAction={canCreateBoards}
>
{boards.length === 0 && <NoResults icon={IconLayoutDashboard} title={t("noResults.title")} />}
{boards.length > 0 && (
<Grid>
{boards.map((board) => (
<GridCol span={{ base: 12, md: 6 }} key={board.id}>
<BoardCard board={board} />
</GridCol>
))}
</Grid>
</Stack>
</ManageContainer>
)}
</ManagePageLayout>
);
}
@@ -67,16 +70,14 @@ const BoardCard = async ({ board }: BoardCardProps) => {
const VisibilityIcon = board.isPublic ? IconWorld : IconLock;
return (
<Card radius="lg" withBorder>
<Card>
<CardSection p="sm" withBorder>
<Group justify="space-between" align="center">
<Group gap="sm">
<Tooltip label={t(`visibility.${visibility}`)}>
<VisibilityIcon size={20} stroke={1.5} />
</Tooltip>
<Text fw="bolder" tt="uppercase">
{board.name}
</Text>
<Text fw={700}>{board.name}</Text>
</Group>
<Group>
@@ -124,6 +125,7 @@ const BoardCard = async ({ board }: BoardCardProps) => {
style={{ borderTop: "none", borderBottom: "none", borderRight: "none", borderRadius: 0 }}
variant="default"
size="lg"
aria-label={t("action.settings.label")}
>
<IconDotsVertical size={16} stroke={1.5} />
</ActionIcon>
@@ -33,7 +33,7 @@ export const SecretCard = ({ secret, children, onCancel }: SecretCardProps) => {
const KindIcon = integrationSecretIcons[secret.kind];
return (
<Card withBorder>
<Card>
<Stack>
<Group justify="space-between">
<Group>
@@ -58,7 +58,12 @@ export const SecretCard = ({ secret, children, onCancel }: SecretCardProps) => {
</Tooltip>
)}
{isPublic ? (
<ActionIcon color="gray" variant="subtle" onClick={togglePublicSecretDisplay}>
<ActionIcon
color="gray"
variant="subtle"
onClick={togglePublicSecretDisplay}
aria-label={t(publicSecretDisplayOpened ? "common.action.hide" : "common.action.show")}
>
<DisplayIcon size={16} stroke={1.5} />
</ActionIcon>
) : null}
@@ -79,7 +84,7 @@ export const SecretCard = ({ secret, children, onCancel }: SecretCardProps) => {
</Button>
</Group>
</Group>
<Collapse in={editMode}>{children}</Collapse>
<Collapse expanded={editMode}>{children}</Collapse>
</Stack>
</Card>
);
@@ -1,9 +1,12 @@
import {
IconCode,
IconGrid3x3,
IconKey,
IconLink,
IconMessage,
IconPassword,
IconPasswordUser,
IconPlug,
IconServer,
IconUser,
} from "@tabler/icons-react";
@@ -19,6 +22,10 @@ export const integrationSecretIcons = {
tokenId: IconGrid3x3,
personalAccessToken: IconPasswordUser,
topic: IconMessage,
url: IconLink,
opnsenseApiKey: IconKey,
opnsenseApiSecret: IconPassword,
githubAppId: IconCode,
githubInstallationId: IconPlug,
privateKey: IconKey,
} satisfies Record<IntegrationSecretKind, TablerIcon>;
@@ -1,7 +1,7 @@
"use client";
import type { ChangeEventHandler, FocusEventHandler } from "react";
import { PasswordInput, TextInput } from "@mantine/core";
import { PasswordInput, Textarea, TextInput } from "@mantine/core";
import { integrationSecretKindObject } from "@homarr/definitions";
import type { IntegrationSecretKind } from "@homarr/definitions";
@@ -14,9 +14,9 @@ interface IntegrationSecretInputProps {
label?: string;
kind: IntegrationSecretKind;
value?: string;
onChange: ChangeEventHandler<HTMLInputElement>;
onFocus?: FocusEventHandler<HTMLInputElement>;
onBlur?: FocusEventHandler<HTMLInputElement>;
onChange: ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement>;
onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;
error?: string;
}
@@ -31,6 +31,19 @@ export const IntegrationSecretInput = (props: IntegrationSecretInputProps) => {
const PublicSecretInput = ({ kind, ...props }: IntegrationSecretInputProps) => {
const t = useI18n();
const Icon = integrationSecretIcons[kind];
const { multiline } = integrationSecretKindObject[kind];
if (multiline) {
return (
<Textarea
{...props}
label={props.label ?? t(`integration.secrets.kind.${kind}.label`)}
w="100%"
leftSection={<Icon size={20} stroke={1.5} />}
autosize
minRows={2}
/>
);
}
return (
<TextInput
@@ -45,6 +58,21 @@ const PublicSecretInput = ({ kind, ...props }: IntegrationSecretInputProps) => {
const PrivateSecretInput = ({ kind, ...props }: IntegrationSecretInputProps) => {
const t = useI18n();
const Icon = integrationSecretIcons[kind];
const { multiline } = integrationSecretKindObject[kind];
if (multiline) {
return (
<Textarea
{...props}
label={props.label ?? t(`integration.secrets.kind.${kind}.label`)}
description={t("integration.secrets.secureNotice")}
w="100%"
leftSection={<Icon size={20} stroke={1.5} />}
autosize
minRows={2}
/>
);
}
return (
<PasswordInput
@@ -0,0 +1,62 @@
import { useCallback } from "react";
import { SegmentedControl } from "@mantine/core";
import type { IntegrationSecretKind } from "@homarr/definitions";
import type { UseFormReturnType } from "@homarr/form";
import { useScopedI18n } from "@homarr/translation/client";
interface FormType {
secrets: { kind: IntegrationSecretKind; value: string | null }[];
}
interface SecretKindsSegmentedControlProps<TFormType extends FormType> {
defaultKinds?: IntegrationSecretKind[];
secretKinds: IntegrationSecretKind[][];
form: UseFormReturnType<TFormType, TFormType>;
}
export const SecretKindsSegmentedControl = <TFormType extends FormType>({
defaultKinds,
secretKinds,
form,
}: SecretKindsSegmentedControlProps<TFormType>) => {
const t = useScopedI18n("integration.secrets");
const defaultValue = defaultKinds?.length === 0 ? "empty" : defaultKinds?.join("-");
const secretKindGroups = secretKinds.map((kinds) => ({
label:
kinds.length === 0
? t("noSecretsRequired.segmentTitle")
: kinds.map((kind) => t(`kind.${kind}.label`)).join(" & "),
value: kinds.length === 0 ? "empty" : kinds.join("-"),
}));
const onChange = useCallback(
(value: string) => {
if (value === "empty") {
const emptyValues = [] satisfies FormType["secrets"];
// @ts-expect-error somehow it is not able to understand that secrets is an array?
form.setFieldValue("secrets", emptyValues);
return;
}
const kinds = value.split("-") as IntegrationSecretKind[];
const secrets = kinds.map((kind) => ({
kind,
value: "",
})) satisfies FormType["secrets"];
// @ts-expect-error somehow it is not able to understand that secrets is an array?
form.setFieldValue("secrets", secrets);
},
[form],
);
return (
<SegmentedControl
fullWidth
data={secretKindGroups}
defaultValue={defaultValue}
onChange={onChange}
></SegmentedControl>
);
};
@@ -18,7 +18,7 @@ export const IntegrationTestConnectionError = ({ error, url }: IntegrationTestCo
const causeArray = useMemo(() => toCauseArray(error.cause), [error.cause]);
return (
<Card withBorder style={{ borderColor: getMantineColor("red", 8) }}>
<Card style={{ borderColor: getMantineColor("red", 8) }}>
<Stack>
<Stack gap="sm">
<Text size="lg" fw={500} c="red.8">
@@ -216,7 +216,7 @@ export const CertificateDetailsCard = ({ certificate }: CertificateDetailsProps)
const tCertificateField = useScopedI18n("certificate.field");
return (
<Card withBorder>
<Card>
<Text fw={500}>{tDetails("title")}</Text>
<Group justify="space-between">
<Text size="sm" c="dimmed">
@@ -1,23 +1,27 @@
"use client";
import { useState } from "react";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { Button, Fieldset, Group, Stack, TextInput } from "@mantine/core";
import type { z } from "zod/v4";
import { Alert, Anchor, Button, ButtonGroup, Fieldset, Group, Stack, Text, TextInput } from "@mantine/core";
import { IconInfoCircle, IconPencil, IconPlus, IconUnlink } from "@tabler/icons-react";
import { z } from "zod/v4";
import type { RouterOutputs } from "@homarr/api";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
import { revalidatePathActionAsync } from "@homarr/common/client";
import { getAllSecretKindOptions, getDefaultSecretKinds } from "@homarr/definitions";
import { useZodForm } from "@homarr/form";
import { useConfirmModal } from "@homarr/modals";
import { useConfirmModal, useModalAction } from "@homarr/modals";
import { AppSelectModal } from "@homarr/modals-collection";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useI18n } from "@homarr/translation/client";
import { Link } from "@homarr/ui";
import { integrationUpdateSchema } from "@homarr/validation/integration";
import { SecretCard } from "../../_components/secrets/integration-secret-card";
import { IntegrationSecretInput } from "../../_components/secrets/integration-secret-inputs";
import { SecretKindsSegmentedControl } from "../../_components/secrets/integration-secret-segmented-control";
import { IntegrationTestConnectionError } from "../../_components/test-connection/integration-test-connection-error";
import type { AnyMappedTestConnectionError } from "../../_components/test-connection/types";
@@ -25,23 +29,41 @@ interface EditIntegrationForm {
integration: RouterOutputs["integration"]["byId"];
}
const formSchema = integrationUpdateSchema.omit({ id: true, appId: true }).and(
z.object({
app: z
.object({
id: z.string(),
name: z.string(),
iconUrl: z.string(),
href: z.string().nullable(),
})
.nullable(),
}),
);
export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => {
const t = useI18n();
const { openConfirmModal } = useConfirmModal();
const secretsKinds =
const allSecretKinds = getAllSecretKindOptions(integration.kind);
const initialSecretsKinds =
getAllSecretKindOptions(integration.kind).find((secretKinds) =>
integration.secrets.every((secret) => secretKinds.includes(secret.kind)),
) ?? getDefaultSecretKinds(integration.kind);
const hasUrlSecret = initialSecretsKinds.includes("url");
const router = useRouter();
const form = useZodForm(integrationUpdateSchema.omit({ id: true }), {
const form = useZodForm(formSchema, {
initialValues: {
name: integration.name,
url: integration.url,
secrets: secretsKinds.map((kind) => ({
secrets: initialSecretsKinds.map((kind) => ({
kind,
value: integration.secrets.find((secret) => secret.kind === kind)?.value ?? "",
})),
app: integration.app ?? null,
},
});
const { mutateAsync, isPending } = clientApi.integration.update.useMutation();
@@ -49,15 +71,20 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => {
const secretsMap = new Map(integration.secrets.map((secret) => [secret.kind, secret]));
const handleSubmitAsync = async (values: FormType) => {
const handleSubmitAsync = async ({ app, ...values }: FormType) => {
const url = hasUrlSecret
? new URL(values.secrets.find((secret) => secret.kind === "url")?.value ?? values.url).origin
: values.url;
await mutateAsync(
{
id: integration.id,
...values,
url,
secrets: values.secrets.map((secret) => ({
kind: secret.kind,
value: secret.value === "" ? null : secret.value,
})),
appId: app?.id ?? null,
},
{
onSuccess: (data) => {
@@ -87,48 +114,80 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => {
);
};
const isInitialSecretKinds =
initialSecretsKinds.every((kind) => form.values.secrets.some((secret) => secret.kind === kind)) &&
form.values.secrets.length === initialSecretsKinds.length;
return (
<form onSubmit={form.onSubmit((values) => void handleSubmitAsync(values))}>
<form onSubmit={form.onSubmit(async (values) => await handleSubmitAsync(values))}>
<Stack>
<TextInput withAsterisk label={t("integration.field.name.label")} {...form.getInputProps("name")} />
<TextInput withAsterisk label={t("integration.field.url.label")} {...form.getInputProps("url")} />
{hasUrlSecret ? null : (
<TextInput withAsterisk label={t("integration.field.url.label")} {...form.getInputProps("url")} />
)}
<Fieldset legend={t("integration.secrets.title")}>
<Stack gap="sm">
{secretsKinds.map((kind, index) => (
<SecretCard
key={kind}
secret={secretsMap.get(kind) ?? { kind, value: null, updatedAt: null }}
onCancel={() =>
new Promise((resolve) => {
// When nothing changed, just close the secret card
if ((form.values.secrets[index]?.value ?? "") === (secretsMap.get(kind)?.value ?? "")) {
return resolve(true);
{allSecretKinds.length > 1 && (
<SecretKindsSegmentedControl
defaultKinds={initialSecretsKinds}
secretKinds={allSecretKinds}
form={form}
/>
)}
{!isInitialSecretKinds
? null
: form.values.secrets.map((secret, index) => (
<SecretCard
key={secret.kind}
secret={secretsMap.get(secret.kind) ?? { kind: secret.kind, value: null, updatedAt: null }}
onCancel={() =>
new Promise((resolve) => {
// When nothing changed, just close the secret card
if ((secret.value ?? "") === (secretsMap.get(secret.kind)?.value ?? "")) {
return resolve(true);
}
openConfirmModal({
title: t("integration.secrets.reset.title"),
children: t("integration.secrets.reset.message"),
onCancel: () => resolve(false),
onConfirm: () => {
form.setFieldValue(`secrets.${index}.value`, secretsMap.get(secret.kind)?.value ?? "");
resolve(true);
},
});
})
}
openConfirmModal({
title: t("integration.secrets.reset.title"),
children: t("integration.secrets.reset.message"),
onCancel: () => resolve(false),
onConfirm: () => {
form.setFieldValue(`secrets.${index}.value`, secretsMap.get(kind)?.value ?? "");
resolve(true);
},
});
})
}
>
<IntegrationSecretInput
label={t(`integration.secrets.kind.${kind}.newLabel`)}
key={kind}
kind={kind}
{...form.getInputProps(`secrets.${index}.value`)}
/>
</SecretCard>
))}
>
<IntegrationSecretInput
label={t(`integration.secrets.kind.${secret.kind}.newLabel`)}
key={secret.kind}
kind={secret.kind}
{...form.getInputProps(`secrets.${index}.value`)}
/>
</SecretCard>
))}
{isInitialSecretKinds
? null
: form.values.secrets.map(({ kind }, index) => (
<IntegrationSecretInput
withAsterisk
key={kind}
kind={kind}
{...form.getInputProps(`secrets.${index}.value`)}
/>
))}
{form.values.secrets.length === 0 && (
<Alert icon={<IconInfoCircle size={"1rem"} />} color={"blue"}>
<Text c={"blue"}>{t("integration.secrets.noSecretsRequired.text")}</Text>
</Alert>
)}
</Stack>
</Fieldset>
<IntegrationLinkApp value={form.values.app} onChange={(app) => form.setFieldValue("app", app)} />
{error !== null && <IntegrationTestConnectionError error={error} url={form.values.url} />}
<Group justify="end" align="center">
@@ -144,4 +203,80 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => {
);
};
type FormType = Omit<z.infer<typeof integrationUpdateSchema>, "id">;
type FormType = z.infer<typeof formSchema>;
interface IntegrationAppSelectProps {
value: FormType["app"];
onChange: (app: FormType["app"]) => void;
}
const IntegrationLinkApp = ({ value, onChange }: IntegrationAppSelectProps) => {
const { openModal } = useModalAction(AppSelectModal);
const t = useI18n();
const { data: session } = useSession();
const canCreateApps = session?.user.permissions.includes("app-create") ?? false;
const handleChange = () =>
openModal(
{
onSelect: onChange,
withCreate: canCreateApps,
},
{
title: t("integration.page.edit.app.action.select"),
},
);
if (!value) {
return (
<Button
variant="subtle"
color="gray"
leftSection={<IconPlus size={16} stroke={1.5} />}
fullWidth
onClick={handleChange}
>
{t("integration.page.edit.app.action.add")}
</Button>
);
}
return (
<Fieldset legend={t("integration.field.app.sectionTitle")}>
<Group justify="space-between">
<Group gap="sm">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src={value.iconUrl} alt={value.name} width={32} height={32} />
<Stack gap={0}>
<Text size="sm" fw="bold">
{value.name}
</Text>
{value.href !== null && (
<Anchor href={value.href} target="_blank" rel="noopener noreferrer" size="sm">
{value.href}
</Anchor>
)}
</Stack>
</Group>
<ButtonGroup>
<Button
variant="subtle"
color="gray"
leftSection={<IconUnlink size={16} stroke={1.5} />}
onClick={() => onChange(null)}
>
{t("integration.page.edit.app.action.remove")}
</Button>
<Button
variant="subtle"
color="gray"
leftSection={<IconPencil size={16} stroke={1.5} />}
onClick={handleChange}
>
{t("common.action.change")}
</Button>
</ButtonGroup>
</Group>
</Fieldset>
);
};
@@ -2,13 +2,12 @@
import type { ChangeEvent } from "react";
import React, { useMemo, useState } from "react";
import Link from "next/link";
import { Flex, Group, Menu, ScrollArea, Text, TextInput } from "@mantine/core";
import { IconSearch } from "@tabler/icons-react";
import { getIntegrationName, integrationKinds } from "@homarr/definitions";
import { useI18n } from "@homarr/translation/client";
import { IntegrationAvatar } from "@homarr/ui";
import { IntegrationAvatar, Link } from "@homarr/ui";
interface IntegrationCreateDropdownContentProps {
enableMockIntegration: boolean;
@@ -1,7 +1,6 @@
"use client";
import { useCallback, useState } from "react";
import Link from "next/link";
import { startTransition, useState } from "react";
import { useRouter } from "next/navigation";
import {
Alert,
@@ -10,17 +9,21 @@ import {
Collapse,
Fieldset,
Group,
Loader,
SegmentedControl,
Select,
Stack,
Text,
TextInput,
} from "@mantine/core";
import { IconInfoCircle } from "@tabler/icons-react";
import { IconCheck, IconInfoCircle } from "@tabler/icons-react";
import { z } from "zod/v4";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
import { revalidatePathActionAsync } from "@homarr/common/client";
import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions";
import type { Modify } from "@homarr/common/types";
import type { IntegrationKind } from "@homarr/definitions";
import {
getAllSecretKindOptions,
getIconUrl,
@@ -28,14 +31,16 @@ import {
getIntegrationName,
integrationDefs,
} from "@homarr/definitions";
import type { UseFormReturnType } from "@homarr/form";
import type { GetInputPropsReturnType, UseFormReturnType } from "@homarr/form";
import { useZodForm } from "@homarr/form";
import { showErrorNotification, showSuccessNotification } from "@homarr/notifications";
import { useI18n, useScopedI18n } from "@homarr/translation/client";
import { useI18n } from "@homarr/translation/client";
import { Link } from "@homarr/ui";
import { appHrefSchema } from "@homarr/validation/app";
import { integrationCreateSchema } from "@homarr/validation/integration";
import { IntegrationSecretInput } from "../_components/secrets/integration-secret-inputs";
import { SecretKindsSegmentedControl } from "../_components/secrets/integration-secret-segmented-control";
import { IntegrationTestConnectionError } from "../_components/test-connection/integration-test-connection-error";
import type { AnyMappedTestConnectionError } from "../_components/test-connection/types";
@@ -45,51 +50,77 @@ interface NewIntegrationFormProps {
};
}
const formSchema = integrationCreateSchema.omit({ kind: true }).and(
const formSchema = integrationCreateSchema.omit({ kind: true, app: true }).and(
z.object({
createApp: z.boolean(),
hasApp: z.boolean(),
appHref: appHrefSchema,
appId: z.string().nullable(),
}),
);
export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => {
const t = useI18n();
const secretKinds = getAllSecretKindOptions(searchParams.kind);
const hasUrlSecret = secretKinds.some((kinds) => kinds.includes("url"));
const router = useRouter();
const [opened, setOpened] = useState(false);
const { data: session } = useSession();
const canCreateApps = session?.user.permissions.includes("app-create") ?? false;
let url = searchParams.url ?? getIntegrationDefaultUrl(searchParams.kind) ?? "";
if (hasUrlSecret) {
// Placeholder Url, replaced with origin of the secret Url on submit
url = "http://localhost";
}
const form = useZodForm(formSchema, {
initialValues: {
name: searchParams.name ?? getIntegrationName(searchParams.kind),
url: searchParams.url ?? getIntegrationDefaultUrl(searchParams.kind) ?? "",
url,
secrets: secretKinds[0].map((kind) => ({
kind,
value: "",
})),
attemptSearchEngineCreation: true,
createApp: false,
appHref: "",
},
onValuesChange(values, previous) {
if (values.createApp !== previous.createApp) {
setOpened(values.createApp);
}
hasApp: false,
appHref: url,
appId: null,
},
});
const { mutateAsync: createIntegrationAsync, isPending: isPendingIntegration } =
clientApi.integration.create.useMutation();
const { mutateAsync: createAppAsync, isPending: isPendingApp } = clientApi.app.create.useMutation();
const isPending = isPendingIntegration || isPendingApp;
const { mutateAsync: createIntegrationAsync, isPending } = clientApi.integration.create.useMutation({
async onSuccess() {
await revalidatePathActionAsync("/manage/integrations");
},
});
const [error, setError] = useState<null | AnyMappedTestConnectionError>(null);
const handleSubmitAsync = async (values: FormType) => {
const handleSubmitAsync = async ({ appId, appHref, hasApp, ...values }: FormType) => {
const url = hasUrlSecret
? new URL(values.secrets.find((secret) => secret.kind === "url")?.value ?? values.url).origin
: values.url;
const hasCustomHref = appHref !== null && appHref.trim().length >= 1;
const app = hasApp
? appId !== null
? { id: appId }
: {
name: values.name,
href: hasCustomHref ? appHref : url,
iconUrl: getIconUrl(searchParams.kind),
description: null,
pingUrl: url,
}
: undefined;
await createIntegrationAsync(
{
kind: searchParams.kind,
...values,
url,
app,
},
{
async onSuccess(data) {
onSuccess(data) {
// We do it this way as we are unable to send a typesafe error through onError
if (data?.error) {
setError(data.error);
@@ -105,32 +136,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) =>
message: t("integration.page.create.notification.success.message"),
});
if (!values.createApp) {
await revalidatePathActionAsync("/manage/integrations").then(() => router.push("/manage/integrations"));
return;
}
const hasCustomHref = values.appHref !== null && values.appHref.trim().length >= 1;
await createAppAsync(
{
name: values.name,
href: hasCustomHref ? values.appHref : values.url,
iconUrl: getIconUrl(searchParams.kind),
description: null,
pingUrl: values.url,
},
{
async onSettled() {
await revalidatePathActionAsync("/manage/integrations").then(() => router.push("/manage/integrations"));
},
onError() {
showErrorNotification({
title: t("app.page.create.notification.error.title"),
message: t("app.page.create.notification.error.message"),
});
},
},
);
router.push("/manage/integrations");
},
onError: () => {
showErrorNotification({
@@ -149,7 +155,9 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) =>
<Stack>
<TextInput withAsterisk label={t("integration.field.name.label")} autoFocus {...form.getInputProps("name")} />
<TextInput withAsterisk label={t("integration.field.url.label")} {...form.getInputProps("url")} />
{hasUrlSecret ? null : (
<TextInput withAsterisk label={t("integration.field.url.label")} {...form.getInputProps("url")} />
)}
<Fieldset legend={t("integration.secrets.title")}>
<Stack gap="sm">
@@ -182,15 +190,7 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) =>
/>
)}
<Checkbox
{...form.getInputProps("createApp", { type: "checkbox" })}
label={t("integration.field.createApp.label")}
description={t("integration.field.createApp.description")}
/>
<Collapse in={opened}>
<TextInput placeholder={t("integration.field.appHref.placeholder")} {...form.getInputProps("appHref")} />
</Collapse>
<AppForm form={form} canCreateApps={canCreateApps} />
<Group justify="end" align="center">
<Button variant="default" component={Link} href="/manage/integrations">
@@ -205,40 +205,115 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) =>
);
};
interface SecretKindsSegmentedControlProps {
secretKinds: IntegrationSecretKind[][];
form: UseFormReturnType<FormType, (values: FormType) => FormType>;
}
type FormType = z.infer<typeof formSchema>;
const SecretKindsSegmentedControl = ({ secretKinds, form }: SecretKindsSegmentedControlProps) => {
const t = useScopedI18n("integration.secrets");
const AppForm = ({ form, canCreateApps }: { form: UseFormReturnType<FormType>; canCreateApps: boolean }) => {
const t = useI18n();
const checkboxInputProps = form.getInputProps("hasApp", { type: "checkbox" });
const secretKindGroups = secretKinds.map((kinds) => ({
label:
kinds.length === 0
? t("noSecretsRequired.segmentTitle")
: kinds.map((kind) => t(`kind.${kind}.label`)).join(" & "),
value: kinds.length === 0 ? "empty" : kinds.join("-"),
}));
return (
<>
<Checkbox
{...checkboxInputProps}
onChange={(event) => {
startTransition(() => {
form.setFieldValue("appHref", event.currentTarget.checked ? form.values.url : null);
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
checkboxInputProps.onChange(event);
});
}}
label={t("integration.field.createApp.label")}
description={t("integration.field.createApp.description")}
/>
const onChange = useCallback(
(value: string) => {
if (value === "empty") {
form.setFieldValue("secrets", []);
return;
}
<Collapse expanded={form.values.hasApp}>
<Fieldset legend={t("integration.field.app.sectionTitle")}>
<Stack gap="sm">
{canCreateApps && (
<SegmentedControl
data={(["new", "existing"] as const).map((value) => ({
value,
label: t(`integration.page.create.app.option.${value}.title`),
}))}
value={form.values.appHref === null ? "existing" : "new"}
onChange={(value) => {
if (value === "existing") {
form.setFieldValue("appId", null);
form.setFieldValue("appHref", null);
} else {
form.setFieldValue("appId", null);
form.setFieldValue("appHref", form.values.url);
}
}}
/>
)}
const kinds = value.split("-") as IntegrationSecretKind[];
const secrets = kinds.map((kind) => ({
kind,
value: "",
}));
form.setFieldValue("secrets", secrets);
},
[form],
{typeof form.values.appHref === "string" && canCreateApps ? (
<TextInput
placeholder={t("integration.field.appHref.placeholder")}
withAsterisk
label={t("integration.page.create.app.option.new.url.label")}
description={t("integration.page.create.app.option.new.url.description")}
{...form.getInputProps("appHref")}
/>
) : (
<IntegrationAppSelect {...form.getInputProps("appId")} />
)}
</Stack>
</Fieldset>
</Collapse>
</>
);
return <SegmentedControl fullWidth data={secretKindGroups} onChange={onChange}></SegmentedControl>;
};
type FormType = z.infer<typeof formSchema>;
type IntegrationAppSelectProps = Modify<
GetInputPropsReturnType,
{
value?: string | null;
onChange: (value: string | null) => void;
}
>;
const IntegrationAppSelect = ({ value, ...props }: IntegrationAppSelectProps) => {
const { data, isPending } = clientApi.app.selectable.useQuery();
const t = useI18n();
const appMap = new Map(data?.map((app) => [app.id, app] as const));
return (
<Select
withAsterisk
label={t("integration.page.create.app.option.existing.label")}
searchable
clearable
leftSection={
// eslint-disable-next-line @next/next/no-img-element
value ? <img width={20} height={20} src={appMap.get(value)?.iconUrl} alt={appMap.get(value)?.name} /> : null
}
renderOption={({ option, checked }) => (
<Group flex="1" gap="xs">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img width={20} height={20} src={appMap.get(option.value)?.iconUrl} alt={option.label} />
<Stack gap={0}>
<Text>{option.label}</Text>
<Text size="xs" c="dimmed">
{appMap.get(option.value)?.href}
</Text>
</Stack>
{checked && (
<IconCheck
style={{ marginInlineStart: "auto" }}
stroke={1.5}
color="currentColor"
opacity={0.6}
size={18}
/>
)}
</Group>
)}
{...props}
data={data?.map((app) => ({ value: app.id, label: app.name }))}
rightSection={isPending ? <Loader size="sm" /> : null}
/>
);
};
@@ -8,7 +8,7 @@
border: 1px solid transparent;
position: relative;
z-index: 0;
transition: transform 150ms ease;
transition: background-color 150ms ease;
overflow: hidden;
&[data-first="true"] {
@@ -20,11 +20,9 @@
}
&[data-active] {
transform: scale(1.01);
z-index: 1;
background-color: var(--mantine-color-body);
border-color: light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4));
box-shadow: var(--mantine-shadow-md);
border-radius: var(--mantine-radius-lg);
}
}
@@ -1,6 +1,5 @@
import { Fragment } from "react";
import type { PropsWithChildren } from "react";
import Link from "next/link";
import { redirect } from "next/navigation";
import {
AccordionControl,
@@ -8,9 +7,7 @@ import {
AccordionPanel,
ActionIcon,
ActionIconGroup,
Affix,
Anchor,
Box,
Button,
Divider,
Group,
@@ -25,9 +22,8 @@ import {
TableThead,
TableTr,
Text,
Title,
} from "@mantine/core";
import { IconChevronDown, IconChevronUp, IconPencil, IconPlugX } from "@tabler/icons-react";
import { IconChevronDown, IconPencil, IconPlugX } from "@tabler/icons-react";
import type { RouterOutputs } from "@homarr/api";
import { api } from "@homarr/api/server";
@@ -36,10 +32,10 @@ import { objectEntries } from "@homarr/common";
import type { IntegrationKind } from "@homarr/definitions";
import { getIntegrationName } from "@homarr/definitions";
import { getScopedI18n } from "@homarr/translation/server";
import { CountBadge, IntegrationAvatar } from "@homarr/ui";
import { CountBadge, IntegrationAvatar, Link } from "@homarr/ui";
import { ManageContainer } from "~/components/manage/manage-container";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { ManageMobilePrimaryAction } from "~/components/manage/manage-mobile-primary-action";
import { ManagePageLayout } from "~/components/manage/manage-page-layout";
import { NoResults } from "~/components/no-results";
import { env } from "~/env";
import { ActiveTabAccordion } from "../../../../components/active-tab-accordion";
@@ -67,38 +63,23 @@ export default async function IntegrationsPage(props: IntegrationsPageProps) {
const canCreateIntegrations = session.user.permissions.includes("integration-create");
return (
<ManageContainer>
<DynamicBreadcrumb />
<Stack>
<Group justify="space-between" align="center">
<Title>{t("page.list.title")}</Title>
{canCreateIntegrations && (
<>
<Box>
<IntegrationSelectMenu>
<Affix hiddenFrom="md" position={{ bottom: 20, right: 20 }}>
<MenuTarget>
<Button rightSection={<IconChevronUp size={16} stroke={1.5} />}>{t("action.create")}</Button>
</MenuTarget>
</Affix>
</IntegrationSelectMenu>
</Box>
<Box visibleFrom="md">
<IntegrationSelectMenu>
<MenuTarget>
<Button rightSection={<IconChevronDown size={16} stroke={1.5} />}>{t("action.create")}</Button>
</MenuTarget>
</IntegrationSelectMenu>
</Box>
</>
)}
</Group>
<IntegrationList integrations={integrations} activeTab={searchParams.tab} />
</Stack>
</ManageContainer>
<ManagePageLayout
title={t("page.list.title")}
primaryAction={
canCreateIntegrations ? (
<ManageMobilePrimaryAction>
<IntegrationSelectMenu>
<MenuTarget>
<Button rightSection={<IconChevronDown size={16} stroke={1.5} />}>{t("action.create")}</Button>
</MenuTarget>
</IntegrationSelectMenu>
</ManageMobilePrimaryAction>
) : undefined
}
floatingPrimaryAction={canCreateIntegrations}
>
<IntegrationList integrations={integrations} activeTab={searchParams.tab} />
</ManagePageLayout>
);
}
@@ -14,7 +14,7 @@ export const UploadMediaButton = () => {
};
return (
<UploadMedia onSettled={onSettledAsync}>
<UploadMedia onSettled={onSettledAsync} multiple>
{({ onClick, loading }) => (
<Button onClick={onClick} loading={loading} rightSection={<IconUpload size={16} stroke={1.5} />}>
{t("media.action.upload.label")}
@@ -1,21 +1,18 @@
import Link from "next/link";
import { notFound } from "next/navigation";
import {
ActionIcon,
Anchor,
Group,
Image,
Stack,
Table,
TableTbody,
TableTd,
TableTh,
TableThead,
TableTr,
Title,
Tooltip,
} from "@mantine/core";
import { IconExternalLink } from "@tabler/icons-react";
import { IconExternalLink, IconPhoto } from "@tabler/icons-react";
import { z } from "zod/v4";
import type { RouterOutputs } from "@homarr/api";
@@ -25,10 +22,11 @@ import { humanFileSize } from "@homarr/common";
import type { inferSearchParamsFromSchema } from "@homarr/common/types";
import { createLocalImageUrl } from "@homarr/icons/local";
import { getI18n } from "@homarr/translation/server";
import { SearchInput, TablePagination, UserAvatar } from "@homarr/ui";
import { Link, SearchInput, TablePagination, UserAvatar } from "@homarr/ui";
import { ManageContainer } from "~/components/manage/manage-container";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { ManageMobilePrimaryAction } from "~/components/manage/manage-mobile-primary-action";
import { ManagePageLayout } from "~/components/manage/manage-page-layout";
import { NoResults } from "~/components/no-results";
import { CopyMedia } from "./_actions/copy-media";
import { DeleteMedia } from "./_actions/delete-media";
import { IncludeFromAllUsersSwitch } from "./_actions/show-all";
@@ -49,7 +47,7 @@ interface MediaListPageProps {
searchParams: Promise<inferSearchParamsFromSchema<typeof searchParamsSchema>>;
}
export default async function GroupsListPage(props: MediaListPageProps) {
export default async function MediaListPage(props: MediaListPageProps) {
const session = await auth();
if (!session) {
@@ -59,22 +57,31 @@ export default async function GroupsListPage(props: MediaListPageProps) {
const t = await getI18n();
const searchParams = searchParamsSchema.parse(await props.searchParams);
const { items: medias, totalCount } = await api.media.getPaginated(searchParams);
const canUpload = session.user.permissions.includes("media-upload");
return (
<ManageContainer>
<DynamicBreadcrumb />
<Stack>
<Title>{t("media.plural")}</Title>
<Group justify="space-between">
<Group>
<SearchInput placeholder={`${t("media.search")}...`} defaultValue={searchParams.search} />
{session.user.permissions.includes("media-view-all") && (
<IncludeFromAllUsersSwitch defaultChecked={searchParams.includeFromAllUsers} />
)}
</Group>
{session.user.permissions.includes("media-upload") && <UploadMediaButton />}
<ManagePageLayout
title={t("media.plural")}
primaryAction={
canUpload ? (
<ManageMobilePrimaryAction>
<UploadMediaButton />
</ManageMobilePrimaryAction>
) : undefined
}
toolbar={
<Group>
<SearchInput placeholder={`${t("media.search")}...`} defaultValue={searchParams.search} />
{session.user.permissions.includes("media-view-all") && (
<IncludeFromAllUsersSwitch defaultChecked={searchParams.includeFromAllUsers} />
)}
</Group>
}
footer={<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />}
floatingPrimaryAction={canUpload}
>
{medias.length === 0 && <NoResults icon={IconPhoto} title={t("media.noResults.title")} />}
{medias.length > 0 && (
<Table striped highlightOnHover>
<TableThead>
<TableTr>
@@ -91,13 +98,8 @@ export default async function GroupsListPage(props: MediaListPageProps) {
))}
</TableTbody>
</Table>
{/* Added margin to not hide pagination behind affix-button */}
<Group justify="end" mb={48}>
<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />
</Group>
</Stack>
</ManageContainer>
)}
</ManagePageLayout>
);
}
@@ -7,9 +7,7 @@ export default async function NotFound() {
return (
<Center h="100%">
<Stack align="center">
<Title order={1} tt="uppercase">
{t("title")}
</Title>
<Title order={1}>{t("title")}</Title>
<Text>{t("text")}</Text>
</Stack>
</Center>
+21 -76
View File
@@ -1,25 +1,16 @@
import Link from "next/link";
import type { Metadata } from "next";
import { Card, Group, SimpleGrid, Space, Stack, Text } from "@mantine/core";
import { IconArrowRight } from "@tabler/icons-react";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { isProviderEnabled } from "@homarr/auth/server";
import { getScopedI18n } from "@homarr/translation/server";
import { Link } from "@homarr/ui";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { createMetaTitle } from "~/metadata";
import { HeroBanner } from "./_components/hero-banner";
interface LinkProps {
title: string;
subtitle: string;
count: number;
href: string;
hidden?: boolean;
}
export async function generateMetadata() {
export async function generateMetadata(): Promise<Metadata> {
const t = await getScopedI18n("management");
return {
@@ -29,78 +20,32 @@ export async function generateMetadata() {
export default async function ManagementPage() {
const statistics = await api.home.getStats();
const session = await auth();
const t = await getScopedI18n("management.page.home");
const links: LinkProps[] = [
{
count: statistics.countBoards,
href: "/manage/boards",
subtitle: t("statisticLabel.boards"),
title: t("statistic.board"),
},
{
count: statistics.countUsers,
href: "/manage/users",
subtitle: t("statisticLabel.authentication"),
title: t("statistic.user"),
hidden: !session?.user.permissions.includes("admin"),
},
{
count: statistics.countInvites,
href: "/manage/users/invites",
subtitle: t("statisticLabel.authentication"),
title: t("statistic.invite"),
hidden: !isProviderEnabled("credentials") || !session?.user.permissions.includes("admin"),
},
{
count: statistics.countIntegrations,
href: "/manage/integrations",
subtitle: t("statisticLabel.resources"),
title: t("statistic.integration"),
},
{
count: statistics.countApps,
href: "/manage/apps",
subtitle: t("statisticLabel.resources"),
title: t("statistic.app"),
hidden: !session?.user,
},
{
count: statistics.countGroups,
href: "/manage/users/groups",
subtitle: t("statisticLabel.authorization"),
title: t("statistic.group"),
hidden: !session?.user.permissions.includes("admin"),
},
];
return (
<>
<DynamicBreadcrumb />
<HeroBanner />
<Space h="md" />
<SimpleGrid cols={{ xs: 1, sm: 2, md: 3 }}>
{links.map(
(link) =>
!link.hidden && (
<Card component={Link} href={link.href} key={link.href} radius="lg">
<Group justify="space-between" wrap="nowrap">
<Group wrap="nowrap">
<Text size="2.4rem" fw="bolder">
{link.count}
</Text>
<Stack gap={0}>
<Text c="red" size="xs">
{link.subtitle}
</Text>
<Text fw="bold">{link.title}</Text>
</Stack>
</Group>
<IconArrowRight />
</Group>
</Card>
),
)}
{statistics.map((statistic) => (
<Card component={Link} href={statistic.path} key={statistic.path}>
<Group justify="space-between" wrap="nowrap">
<Group wrap="nowrap">
<Text size="xl" fw={700}>
{statistic.count}
</Text>
<Stack gap={0}>
<Text c="dimmed" size="xs">
{t(`statisticLabel.${statistic.subtitleKey}`)}
</Text>
<Text fw={600}>{t(`statistic.${statistic.titleKey}`)}</Text>
</Stack>
</Group>
<IconArrowRight size={16} stroke={1.5} color="var(--mantine-color-dimmed)" />
</Group>
</Card>
))}
</SimpleGrid>
</>
);
@@ -1,6 +1,5 @@
"use client";
import Link from "next/link";
import type { SegmentedControlItem } from "@mantine/core";
import { Button, Fieldset, Grid, Group, SegmentedControl, Stack, Textarea, TextInput } from "@mantine/core";
import { WidgetIntegrationSelect } from "node_modules/@homarr/widgets/src/widget-integration-select";
@@ -12,6 +11,7 @@ import { useZodForm } from "@homarr/form";
import { IconPicker } from "@homarr/forms-collection";
import type { TranslationFunction } from "@homarr/translation";
import { useI18n } from "@homarr/translation/client";
import { Link } from "@homarr/ui";
import { searchEngineManageSchema } from "@homarr/validation/search-engine";
type FormType = z.infer<typeof searchEngineManageSchema>;
@@ -1,6 +1,5 @@
import Link from "next/link";
import { redirect } from "next/navigation";
import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core";
import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text } from "@mantine/core";
import { IconPencil, IconSearch } from "@tabler/icons-react";
import { z } from "zod/v4";
@@ -9,11 +8,10 @@ import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import type { inferSearchParamsFromSchema } from "@homarr/common/types";
import { getI18n, getScopedI18n } from "@homarr/translation/server";
import { SearchInput, TablePagination } from "@homarr/ui";
import { Link, SearchInput, TablePagination } from "@homarr/ui";
import { ManageContainer } from "~/components/manage/manage-container";
import { ManagePageLayout } from "~/components/manage/manage-page-layout";
import { MobileAffixButton } from "~/components/manage/mobile-affix-button";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { NoResults } from "~/components/no-results";
import { SearchEngineDeleteButton } from "./_search-engine-delete-button";
@@ -39,34 +37,31 @@ export default async function SearchEnginesPage(props: SearchEnginesPageProps) {
const tEngine = await getScopedI18n("search.engine");
return (
<ManageContainer>
<DynamicBreadcrumb />
<Stack>
<Title>{tEngine("page.list.title")}</Title>
<Group justify="space-between" align="center">
<SearchInput placeholder={`${tEngine("search")}...`} defaultValue={searchParams.search} flexExpand />
{session.user.permissions.includes("search-engine-create") && (
<MobileAffixButton component={Link} href="/manage/search-engines/new">
{tEngine("page.create.title")}
</MobileAffixButton>
)}
</Group>
{searchEngines.length === 0 && <SearchEngineNoResults />}
{searchEngines.length > 0 && (
<Stack gap="sm">
{searchEngines.map((searchEngine) => (
<SearchEngineCard key={searchEngine.id} searchEngine={searchEngine} />
))}
</Stack>
)}
const canCreate = session.user.permissions.includes("search-engine-create");
{/* Added margin to not hide pagination behind affix-button */}
<Group justify="end" mb={48}>
<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />
</Group>
</Stack>
</ManageContainer>
return (
<ManagePageLayout
title={tEngine("page.list.title")}
primaryAction={
canCreate ? (
<MobileAffixButton component={Link} href="/manage/search-engines/new">
{tEngine("page.create.title")}
</MobileAffixButton>
) : undefined
}
toolbar={<SearchInput placeholder={`${tEngine("search")}...`} defaultValue={searchParams.search} flexExpand />}
footer={<TablePagination total={Math.ceil(totalCount / searchParams.pageSize)} />}
floatingPrimaryAction={canCreate}
>
{searchEngines.length === 0 && <SearchEngineNoResults />}
{searchEngines.length > 0 && (
<Stack gap="sm">
{searchEngines.map((searchEngine) => (
<SearchEngineCard key={searchEngine.id} searchEngine={searchEngine} />
))}
</Stack>
)}
</ManagePageLayout>
);
}
@@ -79,7 +74,7 @@ const SearchEngineCard = async ({ searchEngine }: SearchEngineCardProps) => {
const session = await auth();
return (
<Card withBorder>
<Card>
<Group justify="space-between" wrap="nowrap">
<Group align="top" justify="start" wrap="nowrap" style={{ flex: 1 }}>
<Avatar
@@ -24,15 +24,6 @@ export const AnalyticsSettings = ({ initialData }: AnalyticsSettingsProps) => {
return;
}
if (
!updatedValues.enableGeneral &&
(updatedValues.enableWidgetData || updatedValues.enableIntegrationData || updatedValues.enableUserData)
) {
updatedValues.enableIntegrationData = false;
updatedValues.enableUserData = false;
updatedValues.enableWidgetData = false;
}
void mutateAsync({
settingsKey: "analytics",
value: updatedValues,
@@ -50,34 +41,10 @@ export const AnalyticsSettings = ({ initialData }: AnalyticsSettingsProps) => {
<>
<Title order={2}>{t("title")}</Title>
<Card pos="relative" withBorder>
<LoadingOverlay visible={isPending} zIndex={1000} overlayProps={{ radius: "sm", blur: 2 }} />
<Card pos="relative">
<LoadingOverlay visible={isPending} />
<Stack>
<SwitchSetting form={form} formKey="enableGeneral" title={t("general.title")} text={t("general.text")} />
<SwitchSetting
form={form}
formKey="enableIntegrationData"
ms="xl"
title={t("integrationData.title")}
text={t("integrationData.text")}
disabled={!form.values.enableGeneral}
/>
<SwitchSetting
form={form}
formKey="enableWidgetData"
ms="xl"
title={t("widgetData.title")}
text={t("widgetData.text")}
disabled={!form.values.enableGeneral}
/>
<SwitchSetting
form={form}
formKey="enableUserData"
ms="xl"
title={t("usersData.title")}
text={t("usersData.text")}
disabled={!form.values.enableGeneral}
/>
</Stack>
</Card>
</>
@@ -1,7 +1,7 @@
"use client";
import { Group, Text } from "@mantine/core";
import { IconMoon, IconSun } from "@tabler/icons-react";
import { IconDeviceDesktop, IconMoon, IconSun } from "@tabler/icons-react";
import type { ColorScheme } from "@homarr/definitions";
import { colorSchemes } from "@homarr/definitions";
@@ -34,6 +34,7 @@ export const AppearanceSettingsForm = ({ defaultValues }: { defaultValues: Serve
};
const appearanceIcons = {
auto: IconDeviceDesktop,
light: IconSun,
dark: IconMoon,
};
@@ -41,11 +41,11 @@ export const CrawlingAndIndexingSettings = ({ initialData }: CrawlingAndIndexing
<>
<Title order={2}>{t("title")}</Title>
<Card pos="relative" withBorder>
<Card pos="relative">
<Text c={"dimmed"} mb={"lg"}>
{t("warning")}
</Text>
<LoadingOverlay visible={isPending} zIndex={1000} overlayProps={{ radius: "sm", blur: 2 }} />
<LoadingOverlay visible={isPending} />
<Stack>
<SwitchSetting form={form} formKey="noIndex" title={t("noIndex.title")} text={t("noIndex.text")} />
<SwitchSetting form={form} formKey="noFollow" title={t("noFollow.title")} text={t("noFollow.text")} />
@@ -15,7 +15,7 @@ export const SwitchSetting = <TFormValue extends Record<string, boolean>>({
disabled,
}: {
form: Modify<
UseFormReturnType<TFormValue, () => TFormValue>,
UseFormReturnType<TFormValue, TFormValue>,
{
setFieldValue: (key: keyof TFormValue, value: (previous: boolean) => boolean) => void;
}
@@ -0,0 +1,26 @@
"use client";
import { Switch } from "@mantine/core";
import type { ServerSettings } from "@homarr/server-settings";
import { useScopedI18n } from "@homarr/translation/client";
import { CommonSettingsForm } from "./common-form";
export const UserSettingsForm = ({ defaultValues }: { defaultValues: ServerSettings["user"] }) => {
const tUser = useScopedI18n("management.page.settings.section.user");
return (
<CommonSettingsForm settingKey="user" defaultValues={defaultValues}>
{(form) => (
<>
<Switch
{...form.getInputProps("enableGravatar", { type: "checkbox" })}
label={tUser("enableGravatar.label")}
description={tUser("enableGravatar.description")}
/>
</>
)}
</CommonSettingsForm>
);
};
@@ -12,6 +12,7 @@ import { AppearanceSettingsForm } from "./_components/appearance-settings-form";
import { BoardSettingsForm } from "./_components/board-settings-form";
import { CultureSettingsForm } from "./_components/culture-settings-form";
import { SearchSettingsForm } from "./_components/search-settings-form";
import { UserSettingsForm } from "./_components/user-settings-form";
export async function generateMetadata() {
const t = await getScopedI18n("management");
@@ -42,6 +43,10 @@ export default async function SettingsPage() {
<Title order={2}>{tSettings("section.board.title")}</Title>
<BoardSettingsForm defaultValues={serverSettings.board} />
</Stack>
<Stack>
<Title order={2}>{tSettings("section.user.title")}</Title>
<UserSettingsForm defaultValues={serverSettings.user} />
</Stack>
<Stack>
<Title order={2}>{tSettings("section.search.title")}</Title>
<SearchSettingsForm defaultValues={serverSettings.search} />
@@ -2,7 +2,7 @@ import { headers } from "next/headers";
import { notFound } from "next/navigation";
import { Stack, Tabs, TabsList, TabsPanel, TabsTab } from "@mantine/core";
import { openApiDocument } from "@homarr/api";
import { openApiDocument } from "@homarr/api/open-api";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { extractBaseUrlFromHeaders } from "@homarr/common";
@@ -14,7 +14,7 @@ import { ApiKeysManagement } from "./components/api-keys";
export async function generateMetadata() {
const session = await auth();
if (!session?.user || !session.user.permissions.includes("admin")) {
if (!session?.user.permissions.includes("admin")) {
return {};
}
@@ -27,7 +27,7 @@ export async function generateMetadata() {
export default async function ApiPage() {
const session = await auth();
if (!session?.user || !session.user.permissions.includes("admin")) {
if (!session?.user.permissions.includes("admin")) {
notFound();
}
const document = openApiDocument(extractBaseUrlFromHeaders(await headers()));
@@ -15,7 +15,11 @@ interface RemoveCertificateProps {
export const RemoveCertificate = ({ fileName }: RemoveCertificateProps) => {
const { openConfirmModal } = useConfirmModal();
const { mutateAsync } = clientApi.certificates.removeCertificate.useMutation();
const { mutateAsync } = clientApi.certificates.removeCertificate.useMutation({
async onSuccess() {
await revalidatePathActionAsync("/manage/tools/certificates");
},
});
const t = useI18n();
const handleClick = () => {
@@ -27,12 +31,11 @@ export const RemoveCertificate = ({ fileName }: RemoveCertificateProps) => {
await mutateAsync(
{ fileName },
{
async onSuccess() {
onSuccess() {
showSuccessNotification({
title: t("certificate.action.remove.notification.success.title"),
message: t("certificate.action.remove.notification.success.message"),
});
await revalidatePathActionAsync("/manage/tools/certificates");
},
onError() {
showErrorNotification({
@@ -15,7 +15,11 @@ interface RemoveHostnameActionIconProps {
}
export const RemoveHostnameActionIcon = (input: RemoveHostnameActionIconProps) => {
const { mutateAsync } = clientApi.certificates.removeTrustedHostname.useMutation();
const { mutateAsync } = clientApi.certificates.removeTrustedHostname.useMutation({
async onSuccess() {
await revalidatePathActionAsync("/manage/tools/certificates/hostnames");
},
});
const { openConfirmModal } = useConfirmModal();
const t = useI18n();
@@ -26,8 +30,7 @@ export const RemoveHostnameActionIcon = (input: RemoveHostnameActionIconProps) =
// eslint-disable-next-line no-restricted-syntax
async onConfirm() {
await mutateAsync(input, {
async onSuccess() {
await revalidatePathActionAsync("/manage/tools/certificates/hostnames");
onSuccess() {
showSuccessNotification({
title: t("certificate.action.removeHostname.notification.success.title"),
message: t("certificate.action.removeHostname.notification.success.message"),
@@ -1,5 +1,4 @@
import { X509Certificate } from "node:crypto";
import Link from "next/link";
import { notFound } from "next/navigation";
import {
Button,
@@ -17,8 +16,9 @@ import {
import { IconCertificateOff } from "@tabler/icons-react";
import { auth } from "@homarr/auth/next";
import { getTrustedCertificateHostnamesAsync } from "@homarr/certificates/server";
import { getTrustedCertificateHostnamesAsync } from "@homarr/core/infrastructure/certificates";
import { getI18n } from "@homarr/translation/server";
import { Link } from "@homarr/ui";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { NoResults } from "~/components/no-results";
@@ -1,15 +1,15 @@
import { X509Certificate } from "node:crypto";
import Link from "next/link";
import { notFound } from "next/navigation";
import { Button, Card, Group, SimpleGrid, Stack, Text, Title } from "@mantine/core";
import { IconAlertTriangle, IconCertificate, IconCertificateOff } from "@tabler/icons-react";
import dayjs from "dayjs";
import { auth } from "@homarr/auth/next";
import { loadCustomRootCertificatesAsync } from "@homarr/certificates/server";
import { getMantineColor } from "@homarr/common";
import { loadCustomRootCertificatesAsync } from "@homarr/core/infrastructure/certificates";
import type { SupportedLanguage } from "@homarr/translation";
import { getI18n } from "@homarr/translation/server";
import { Link } from "@homarr/ui";
import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb";
import { NoResults } from "~/components/no-results";
@@ -79,7 +79,7 @@ export default async function CertificatesPage({ params }: CertificatesPageProps
<SimpleGrid cols={{ sm: 1, lg: 2, xl: 3 }} spacing="lg">
{x509Certificates.map((cert) => (
<Card key={cert.fileName} withBorder>
<Card key={cert.fileName}>
<Group wrap="nowrap">
{cert.isError ? (
<IconAlertTriangle
@@ -58,6 +58,18 @@ const createColumns = (
return <ContainerStateBadge state={cell.row.original.state} />;
},
},
{
accessorKey: "host",
header: t("docker.field.host.label"),
size: 140,
Cell({ row }) {
return (
<Text truncate="end" title={row.original.host}>
{row.original.host}
</Text>
);
},
},
{
accessorKey: "image",
header: t("docker.field.containerImage.label"),
@@ -76,6 +88,8 @@ const createColumns = (
accessorKey: "ports",
header: t("docker.field.ports.label"),
Cell({ cell }) {
if (!cell.row.original.ports) return null;
if (!cell.row.original.ports.length) return null;
return (
<OverflowBadge overflowCount={1} data={cell.row.original.ports.map((port) => port.PrivatePort.toString())} />
);
@@ -93,6 +107,23 @@ export function DockerTable(initialData: RouterOutputs["docker"]["getContainers"
refetchOnReconnect: false,
});
const relativeTime = useTimeAgo(data.timestamp);
const utils = clientApi.useUtils();
const { mutate, isPending } = clientApi.docker.invalidate.useMutation({
async onSuccess() {
await utils.docker.getContainers.invalidate();
showSuccessNotification({
title: tDocker("action.refresh.notification.success.title"),
message: tDocker("action.refresh.notification.success.message"),
});
},
onError() {
showErrorNotification({
title: tDocker("action.refresh.notification.error.title"),
message: tDocker("action.refresh.notification.error.message"),
});
},
});
const table = useTranslatedMantineReactTable({
data: data.containers,
enableDensityToggle: false,
@@ -111,35 +142,11 @@ export function DockerTable(initialData: RouterOutputs["docker"]["getContainers"
},
initialState: { density: "xs", showGlobalFilter: true },
renderTopToolbarCustomActions: () => {
const utils = clientApi.useUtils();
const { mutate, isPending } = clientApi.docker.invalidate.useMutation({
async onSuccess() {
await utils.docker.getContainers.invalidate();
showSuccessNotification({
title: tDocker("action.refresh.notification.success.title"),
message: tDocker("action.refresh.notification.success.message"),
});
},
onError() {
showErrorNotification({
title: tDocker("action.refresh.notification.error.title"),
message: tDocker("action.refresh.notification.error.message"),
});
},
});
return (
<Button
variant="default"
rightSection={<IconRefresh size="1rem" />}
onClick={() => mutate()}
loading={isPending}
>
{tDocker("action.refresh.label")}
</Button>
);
},
renderTopToolbarCustomActions: () => (
<Button variant="default" rightSection={<IconRefresh size="1rem" />} onClick={() => mutate()} loading={isPending}>
{tDocker("action.refresh.label")}
</Button>
),
renderToolbarAlertBannerContent: ({ groupedAlert, table }) => {
const dockerContainers = table.getSelectedRowModel().rows.map((row) => row.original);
return (
@@ -188,7 +195,7 @@ const ContainerActionBar = ({ selectedContainers }: ContainerActionBarProps) =>
<ContainerActionBarButton icon={IconPlayerStop} color="red" action="stop" selectedIds={selectedIds} />
<ContainerActionBarButton icon={IconRotateClockwise} color="orange" action="restart" selectedIds={selectedIds} />
<ContainerActionBarButton icon={IconTrash} color="red" action="remove" selectedIds={selectedIds} />
<Button leftSection={<IconCategoryPlus />} color={"red"} onClick={handleClick} variant="light" radius="md">
<Button leftSection={<IconCategoryPlus />} color={"red"} onClick={handleClick} variant="light">
{t("addToHomarr.label")}
</Button>
</Group>
@@ -206,15 +213,16 @@ const ContainerActionBarButton = (props: ContainerActionBarButtonProps) => {
const t = useScopedI18n("docker.action");
const utils = clientApi.useUtils();
const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation();
const { mutateAsync, isPending } = clientApi.docker[`${props.action}All`].useMutation({
async onSettled() {
await utils.docker.getContainers.invalidate();
},
});
const handleClickAsync = async () => {
await mutateAsync(
{ ids: props.selectedIds },
{
async onSettled() {
await utils.docker.getContainers.invalidate();
},
onSuccess() {
showSuccessNotification({
title: t(`${props.action}.notification.success.title`),
@@ -238,7 +246,6 @@ const ContainerActionBarButton = (props: ContainerActionBarButtonProps) => {
onClick={handleClickAsync}
loading={isPending}
variant="light"
radius="md"
>
{t(`${props.action}.label`)}
</Button>
Loaded 100 of 887 files, more files were not shown because too many files have changed in this diff. Show more