Thomas
93b2ed88ed
Merge branch 'dev' into feat/global-refresh-indicator
2026-06-04 23:09:01 +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
Thomas
ef27d739bb
remove green dot ( #5822 )
2026-05-29 23:41:40 +02: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
Thomas
9fc0e5f94c
Delete .cursor/plans/widget_refresh_indicator_ffb2b58d.plan.md
2026-05-29 22:55:08 +02:00
Thomas
60ae487842
Merge branch 'dev' into feat/global-refresh-indicator
2026-05-29 22:35:05 +02:00
Thomas and Meier Lukas
2991777b0a
feat(users): rework general settings ( #4915 )
...
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com >
2026-05-29 21:22:55 +02:00
Thomas and Meier 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
ajnart
4bfde12b65
style: auto-fix lint and format
2026-05-29 17:55:03 +00:00
Thomas Camlong
5899e1b44b
chore(deps): add @tanstack/query-persist-client-core to workspace catalog
2026-05-29 17:26:44 +02:00
Thomas Camlong
201a461729
feat(ui): rewrite query refresh indicator with integration icons
...
Filter out widget.app.ping from the indicator. Show colored status dots
(green/orange/red) per query alongside integration icons with name
tooltips. Use lookup maps and resolver functions instead of ternaries.
Display relative timestamps for last data update.
2026-05-29 17:26:36 +02:00
Thomas Camlong
87798a9789
feat(nextjs): stream cached query data from Redis during SSR
...
Add QueryCacheHydration async server component inside <Suspense> that
reads all persisted queries from Redis via HGETALL and streams a
HydrationBoundary to the client. Builds DehydratedState directly with
original dataUpdatedAt timestamps so fresh prefetch data is never
overwritten by stale cache. Make client persister write-only (getItem
returns null) since reads are handled server-side.
2026-05-29 17:26:28 +02:00
Thomas Camlong
682f6bd3ea
fix(widgets): fix downloads widget and add SSR prefetch
...
Remove WidgetEmptyState guard from downloads (widget renders fine with
empty data). Fix columnsSort filter logic from .some() to .every() so
non-sortable columns are correctly excluded. Add server-side prefetch
via tRPC caller so download data is available immediately on page load.
2026-05-29 17:26:15 +02:00
Thomas Camlong
f49ae79c99
refactor(widgets): stabilize widget components after useQuery migration
...
Add WidgetEmptyState component for widgets that need a loading fallback.
Disable refetch-on-mount/focus/reconnect and retry for integration widgets
so cached data is preserved. Ensure hooks are never called conditionally.
2026-05-29 17:26:05 +02:00
Thomas Camlong
f7f6d1e382
feat(boards): wire board cache scope for query persistence
...
Call setActiveQueryCacheBoardId when board context initializes so the
client-side persister knows which board to scope cache reads/writes to.
2026-05-29 17:25:53 +02:00
Thomas Camlong
6c623a3a2d
feat(redis): migrate query cache to Hash storage for bulk SSR reads
...
Replace individual Redis keys (queryCache:sha256(...)) with a Hash per
user+board (qc:{userId}:{boardId}). This enables HGETALL to read all
cached entries in a single call for server-side hydration. Remove unused
SHA256 hashKey function and createHash import.
2026-05-29 17:25:46 +02:00
Thomas Camlong
b65eef08ea
feat(api): add Redis-backed query cache persistence layer
...
Add tRPC router (queryCache.getItem/setItem/removeItem) for persisting
TanStack Query cache entries to Redis, scoped per user and board.
Includes isPersistableWidgetQueryKey filter that excludes widget.app.ping,
and comprehensive tests covering access control, TTL expiry, and size limits.
2026-05-29 17:25:38 +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
ajnart
598307c7bf
style: auto-fix lint and format
2026-05-28 16:08:04 +00:00
Thomas Camlong
94cbbde576
fix(widgets): prevent NoIntegrationDataError during initial load and scope indicator
...
- Add isFetched guard in media-requests/list to avoid throwing before data loads
- Scope refresh indicator to only track widget and integration queries
2026-05-28 18:07:03 +02:00
Thomas Camlong
1b003bfc50
fix(widgets): resolve hooks violations, stale state, and missing edit-mode guard
...
- Move hooks above early returns in system-disks, immich-carousel, media-transcoding
- Add enabled flag to immich-carousel query when albumId is absent
- Replace disconnected local state in ping-indicator with query cache setData
- Stabilize docker timestamp with useMemo to prevent useTimeAgo flicker
- Wrap releases results in useMemo with proper type narrowing
- Hide refresh indicator during edit mode
2026-05-28 18:07:03 +02:00
Thomas Camlong
394debbea1
refactor(widgets): migrate all widgets from useSuspenseQuery to useQuery
...
Non-blocking data fetching for all 38 widget components. Widgets now
render immediately and show data when available, with loading state
delegated to the global refresh indicator in the board header.
2026-05-28 18:07:03 +02:00