Thomas Camlong
cb5ad15305
fix: remove unused isEditMode params and dead clientApi import
...
Post-merge lint errors from dev — unused variables left behind
after subscription removal.
2026-06-25 12:01:01 +02:00
ajnart
2cb0964aa2
style: auto-fix lint and format
2026-06-25 09:57:29 +00:00
Thomas Camlong
26a8d219af
refactor: resilient integration queries + simplification
...
- Extract settleIntegrationQueries helper (Promise.allSettled + logging)
so one failing integration no longer kills the entire widget
- Convert 16 widget routers from Promise.all to settleIntegrationQueries
- Add onSettled query invalidation to downloads and media-requests mutations
- Inline 4 single-use firewall useUpdating* hooks
- Deduplicate firewall router (4 identical procedures → shared factory)
- Fix system-resources chart duplicate initial point (ref-based dedup)
- Simplify docker table refresh (refetch + isFetching, drop manual state)
- Trim invalidateIntegrationCacheAsync to session-store only (dead scan)
- Fix Beszel getAlerts: inner Promise.allSettled so systems failure
doesn't discard alerts
2026-06-25 11:56:05 +02:00
Thomas
cf5934aef6
Merge branch 'dev' into feat/simplify-caching-tanstack-persister
2026-06-25 11:49:39 +02:00
ajnart
9c6f900b82
style: auto-fix lint and format
2026-06-25 09:26:18 +00:00
Thomas Camlong
c4a664b7ac
fix: address PR review — bugs, dead code, error handling
...
Critical fixes:
- Smart Home: invalidate entity state query after toggle mutation
- Beszel live mode: use 5s refetchInterval instead of global 30s
- Fix unit test assertions for 5-arg setQueryCacheAsync signature
- Fix serialize/deserialize mismatch: JSON.parse on read (matches persister's JSON.stringify)
- Remove render-time setActiveQueryCacheBoardId race (keep only useEffect)
Error handling:
- Log persistence errors instead of swallowing with catch(() => {})
- Log QueryCacheHydration failures with ErrorWithMetadata
- Beszel: log partial failures (system details, container stats)
Dead code removal:
- Remove dead queryKey from all 39 request handlers + lib files
- Delete unused Redis APIs: createCacheChannel, createChannelWithLatestAndEvents,
createChannelEventHistory, history-channel.ts
- Remove stale createCacheChannel mock from docker test
Cleanup:
- Seed system-resources chart from initial query data (no empty start)
- Remove redundant refetchOnWindowFocus/refetchOnReconnect from BoardProvider
2026-06-25 11:25:09 +02:00
ajnart
457b1b0ce0
style: auto-fix lint and format
2026-06-25 09:07:24 +00:00
Thomas Camlong
5581b6db94
refactor: simplify request handlers and deduplicate config
...
- Re-enable TanStack Query retry (retry: 3 with exponential backoff),
delete all server-side retry logic from request handlers
- Strip handler factories to bare minimum: remove isValid, retry, widgetKind
- Remove redundant refetchOnWindowFocus/refetchOnReconnect from docker-table
- Deduplicate queryCacheMaxValueBytes (pass as param, single source of truth)
- Simplify system-resources chart: use dataUpdatedAt instead of ref-based tracking
- Fix leading blank lines in 27 request handler files
2026-06-25 11:06:03 +02:00
homarr-renovate[bot]
29eed08408
chore(deps): update dependency isomorphic-dompurify to ^3.18.0 ( #6074 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 17:20:55 +00:00
homarr-renovate[bot]
bd74fe4a61
chore(deps): update dependency posthog-js to ^1.391.0 ( #6073 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 17:18:43 +00:00
homarr-renovate[bot]
b88e8861e1
chore(deps): update dependency rollup@>=4.0.0 <4.22.4 to >=4.62.1 ( #6076 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 17:17:34 +00:00
homarr-renovate[bot]
39af3ec7e6
chore(deps): update dependency mantine-datatable to ^9.3.1 ( #6072 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 17:17:15 +00:00
homarr-renovate[bot]
7f50be3dbb
chore(deps): update dependency fast-xml-parser to ^5.9.3 ( #6069 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 14:48:29 +00:00
ajnart
a164c951ce
style: auto-fix lint and format
2026-06-24 13:11:34 +00:00
Thomas Camlong
18d6013f3f
merge: resolve conflicts with origin/dev
...
Take dev's newer dependency versions (tiptap 3.27.1, testcontainers 12.0.3).
Resolve beszel widget conflicts by keeping our approach (no per-widget
staleTime/refetchInterval/subscriptions, globals handle it).
2026-06-24 15:10:10 +02:00
Thomas Camlong
6416080b79
feat: replace server-side Redis caching with TanStack Query AsyncStoragePersister
...
Consolidate two overlapping cache systems (broken TanStack persister + per-query Redis hash + pub/sub) into one: TanStack Query as single source of truth with Redis as its persistence layer via createAsyncStoragePersister.
- Replace QueryClientProvider with PersistQueryClientProvider backed by Redis
- Set global query defaults (staleTime: 0, refetchInterval: 30s, gcTime: 24h)
- Remove all per-widget staleTime/refetchInterval/retry/refetchOnWindowFocus overrides
- Replace cached request handlers with simplified fetch-only versions
- Remove all tRPC subscription procedures and useSubscription calls in favor of polling
- Delete 20 cron jobs that only pre-warmed server-side cache
- Simplify Redis from per-query hash to single blob per user+board
2026-06-24 14:55:17 +02:00
homarr-renovate[bot]
b6b7bea1dd
chore(deps): update dependency mantine-contextmenu to ^9.3.1 ( #6071 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 11:56:45 +00:00
homarr-renovate[bot]
9bde1dfbd6
chore(deps): update dependency pg to ^8.22.0 ( #6068 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-24 04:26:21 +00:00
homarr-renovate[bot]
c2712ed7f1
chore(deps): update tiptap monorepo to v3.27.1 ( #6067 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 22:24:52 +00:00
homarr-renovate[bot]
16be7ece33
chore(deps): update dependency nanoid@>=4.0.0 <5.0.9 to >=5.1.14 ( #6066 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 20:19:16 +00:00
homarr-renovate[bot]
b0a46186d1
chore(deps): update node.js to v24.17.0 ( #6043 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 18:07:27 +00:00
homarr-renovate[bot]
d0385a4480
chore(deps): update dependency @ctrl/qbittorrent to ^9.13.0 ( #5978 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 18:06:38 +00:00
homarr-renovate[bot]
3d6a3594a3
chore(deps): update pnpm to v11.8.0 ( #6064 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 16:02:26 +00:00
homarr-renovate[bot]
641ee18278
chore(deps): update dependency hono@<4.6.5 to >=4.12.26 ( #6062 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 12:44:43 +00:00
homarr-renovate[bot]
2e538bf40d
chore(deps): update dependency lucide-react to ^1.21.0 ( #6063 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 09:52:42 +00:00
homarr-renovate[bot]
1c0a94a6dc
chore(deps): update playwright monorepo ( #6045 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 00:26:23 +00:00
homarr-renovate[bot]
3a3dc449de
chore(deps): update scalar monorepo ( #6056 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 00:22:43 +00:00
homarr-renovate[bot]
d6b156b8ee
chore(deps): update dependency posthog-js to ^1.388.1 ( #6041 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 00:21:38 +00:00
homarr-renovate[bot]
fc4e31fb42
chore(deps): update dependency @gfazioli/mantine-onboarding-tour to ^4.0.5 ( #6033 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-23 00:19:54 +00:00
homarr-renovate[bot]
b82b22431b
chore(deps): update vitest monorepo to ^4.1.9 ( #6037 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 22:15:25 +00:00
homarr-renovate[bot]
510cba295a
chore(deps): update dependency oxfmt to ^0.55.0 ( #6040 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 19:49:24 +00:00
homarr-renovate[bot]
56d838dafc
chore(deps): update dependency fast-xml-parser to ^5.9.2 ( #6039 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 19:45:28 +00:00
homarr-renovate[bot]
eae9f0438c
chore(deps): update oxlint monorepo ( #6044 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 16:17:14 +00:00
homarr-renovate[bot]
b81f729bfd
chore(deps): update testcontainers-node monorepo to ^12.0.3 ( #6057 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 16:07:28 +00:00
homarr-renovate[bot]
86b83c5425
chore(deps): update mantine monorepo to ^9.3.2 ( #6036 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 16:05:35 +00:00
Thomas
bbc4589c9e
fix(beszel): leverage TanStack Query for stale-while-revalidate caching ( #6055 )
2026-06-22 17:17:09 +02:00
Thomas
ea9dd716f0
Merge pull request #6053 from homarr-labs/beszel-1w-30d-data-view
...
fix(beszel): use 480m interval for 1w/30d stats views
2026-06-22 15:44:43 +02:00
Thomas Camlong
4383da38ef
fix(beszel): use 480m interval for 1w/30d stats views
...
Beszel only stores stats at 1m, 10m, 20m, 120m, 480m intervals.
The 1440m type doesn't exist, so queries for 1w/30d returned empty
results. Use 480m (8h) with appropriate perPage (21 for 1w, 90 for 30d).
2026-06-22 15:44:14 +02:00
homarr-crowdin[bot]
58cb65cb3a
chore(lang): updated translations from crowdin ( #6029 )
2026-06-22 15:23:27 +02:00
Matt Van Horn
89380f81dd
feat: ship source maps for readable production stack traces ( #6031 )
2026-06-22 15:22:54 +02:00
Thomas
e01571b221
fix(icon-picker): keep URL visible in edit mode, add SVG-first ordering ( #6051 )
2026-06-22 15:22:25 +02:00
Thomas and ajnart
49c266374d
fix(beszel): harden cache layer and prevent blank widgets ( #6052 )
...
* fix(beszel): harden cache layer and prevent blank widgets
- Add debug logging across Beszel integration, request handler, and tRPC
router (auth, fetch, SSE, per-procedure entry/exit) gated behind
LOG_LEVEL=debug
- cached-request-handler: retry with backoff, isValid predicate to skip
caching invalid data, in-flight dedup (single-flight per channel) to
avoid thundering herd after cache invalidation
- redis channel: set-then-publish so storage is always consistent even
when pubsub publish fails
- Beszel handlers: opt into fallbackToStaleOnError and retry so brief
upstream hiccups don't throw away good cached data
- beszel-system-stats: add refetchInterval matching each time period's
cache TTL so historical charts refresh in the background
- tRPC router: switch Promise.all -> Promise.allSettled for getSystems
and getAlerts; getSystemStats returns an error object instead of
throwing. Each result carries an optional error field so one failed
integration no longer nukes the whole widget
- Widgets: add explicit isPending loader, empty state for grid and
stats, and a shared per-integration error indicator (tooltip with
failed integration names). Alerts and table now only show their
empty state after loading completes
- Translation: add empty.noSystems key to beszelSystemGrid and
beszelSystemStats
Addresses #6030
* style: auto-fix lint and format
---------
Co-authored-by: ajnart <ajnart@users.noreply.github.com >
2026-06-22 15:20:12 +02:00
homarr-renovate[bot]
577950d20e
chore(deps): update tiptap monorepo to v3.27.0 ( #6047 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 11:10:10 +00:00
homarr-renovate[bot]
82bf71b073
chore(deps): update pnpm to v11.7.0 ( #6046 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 11:08:43 +00:00
homarr-renovate[bot]
e26883acfa
chore(deps): update lucide monorepo ( #6042 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 11:05:29 +00:00
homarr-renovate[bot]
8ee747cde8
chore(deps): update dependency axios@>=1.0.0 <1.8.2 to >=1.18.0 ( #6038 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 10:57:58 +00:00
homarr-renovate[bot]
faa7e55b1b
chore(deps): update dependency video.js to ^8.23.8 ( #6035 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 10:50:43 +00:00
homarr-renovate[bot]
ce021a89ac
chore(deps): update dependency posthog-node to ^4.18.0 ( #6034 )
...
Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
2026-06-22 10:50:04 +00:00
Thomas
55fb227305
fix(beszel): improve stats date display, add click-to-stats modal, fix grid ordering ( #6026 )
2026-06-20 15:38:04 +02:00
Thomas
39e424563a
fix(beszel): widget transparency, error handling, and cache invalidation ( #5993 )
2026-06-20 12:21:26 +02:00