Thomas Camlong
f6a598b774
feat: config portability with generic entity resolver framework
...
Full configuration export/import system for Homarr with excellent DX:
- Export/import boards, apps, integrations (with re-encrypted secrets),
users (with bcrypt hashes), groups (with permissions and memberships),
search engines, and server settings
- Homepage services.yaml import with widget-type mapping
- Generic resolveEntities() utility eliminates per-entity boilerplate
- Declarative entity-fields.ts: adding a new user preference requires
only one line change (no export/import/schema edits needed)
- User schema uses .catchall(z.unknown()) for forward-compatible prefs
- groupByKey() utility replaces manual Map-building
- CONFIG_ENTITY_KEYS as single source of truth for entity metadata
- Reuse existing entities (apps by name+icon+href, integrations by
kind+name+url, users by email, groups by name, boards by name)
- Skip duplicates with warnings rather than failing
- Onboarding flow skips user creation step when config includes users
- Reuse existing admin group during onboarding after config import
2026-06-06 16:22:59 +02:00
Thomas Camlong
1f7b7f0516
Merge branch 'dev' into feat/config-portability
...
# Conflicts:
# apps/nextjs/src/app/[locale]/init/_steps/start/init-start.tsx
# apps/nextjs/src/app/[locale]/manage/tools/logs/terminal.tsx
# packages/api/src/router/docker/docker-router.ts
# packages/api/src/router/test/docker/docker-router.spec.ts
# packages/db/migrations/mysql/meta/0039_snapshot.json
# packages/db/migrations/mysql/meta/_journal.json
# packages/db/migrations/postgresql/meta/0005_snapshot.json
# packages/db/migrations/postgresql/meta/_journal.json
# packages/db/migrations/sqlite/meta/0037_snapshot.json
# packages/db/migrations/sqlite/meta/_journal.json
2026-06-06 09:32:41 +02:00
Thomas Camlong
68f24e34d5
fix: disable onboarding tours when demo mode is enabled
...
Return completed tour status in demo mode so board and manage tours do not start for demo users.
2026-06-05 18:02:08 +02:00
Thomas and copilot-swe-agent[bot]
dbf021e04a
feat(docker): add container logs modal and stats columns ( #4807 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-06-05 16:57:26 +02:00
Thomas
0b663a7fc6
feat(onboarding): guided management and board tours ( #5756 )
2026-06-05 16:54:50 +02:00
Afonso Jorge Ramos
0dc2558faf
feat: add PeaNUT integration and UPS monitoring widget ( #5862 )
2026-06-05 16:51:09 +02:00
Thomas
dd7a4908a3
feat(onboarding): enhance integration setup with Docker discovery and URL templating ( #5607 )
2026-06-05 16:50:35 +02:00
Thomas
0a6467979a
feat: add comprehensive demo mode with mock integrations ( #5870 )
2026-06-05 16:36:45 +02:00
Thomas and Meier Lukas
25d964a197
refactor(spotlight): registry-driven CMDK preferences ( #5817 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-06-05 16:26:48 +02:00
Thomas
3d3e3059a9
feat: media request search as first-class spotlight mode ( #5823 )
2026-06-05 16:09:14 +02:00
Thomas Camlong
fb8721bd4e
feat: add config portability — full export/import, homepage import, docker label discovery
...
Add a dedicated Import/Export tool page with full configuration export/import
(v2.0 bundle with encrypted secrets), Homepage services.yaml import with env
variable resolution, and manual Docker label discovery (moved from cron job).
Support importing Homarr JSON during onboarding alongside legacy zip import.
New @homarr/board-portability package handles schema, serialization, compat
checks, and import planning. Shared preview UI reused across admin and onboarding.
Fix xterm.js crash by removing deprecated @xterm/addon-canvas (incompatible
with xterm v6). Fix Homepage env variable i18n and React 19 currentTarget bug.
See docs/config-portability.md for full changelog.
2026-06-04 10:56:42 +02:00
Thomas
fd10788838
fix(auth): relax password complexity requirements to suggestions-only ( #5764 )
2026-06-04 07:56:34 +02: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
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
Meier Lukas
6feb37dfd4
Merge branch 'main' into next
2026-05-08 23:46:21 +02:00
Ashton Batty and Meier 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
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
Thomas and Meier 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
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
homarr-renovate[bot] and Meier 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
Meier Lukas
7561462594
Merge branch 'main' into next
2026-05-01 22:30:33 +02:00
Meier Lukas and Copilot
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
Meier Lukas
e8edc203b6
fix: migrate from node-cron to croner ( #5407 )
2026-05-01 16:21:38 +02:00
Meier Lukas and Copilot
ce8e330c82
fix(openapi): openapi document empty ( #5579 )
...
Co-authored-by: Copilot <copilot@github.com >
2026-04-29 23:29:42 +02: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]
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
Meier Lukas
2454cac7be
fix(security): remove salt from database ( #5412 )
2026-04-10 20:48:20 +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
Kyle and Meier Lukas
22d599c0cf
feat: speedtest tracker integration ( #5363 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-04-10 19:04:42 +02: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
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]
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]
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
Meier Lukas
abb2dfc92a
feat(integrations): add search.ch integration with timetable widget ( #5180 )
2026-04-03 20:23:15 +02: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
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
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] and Meier 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]
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]
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]
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]
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
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
Matt Van Horn and Matt 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]
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]
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
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