Commit Graph
16 Commits
Author SHA1 Message Date
ajnart 84db2f9d49 feat: refine mobile dashboard experience 2026-08-13 19:55:11 +02:00
Thomas Camlong 65a7e84bea feat: expand advanced widget experiences 2026-08-13 19:54:55 +02:00
Thomas Camlong 77cbd9f723 fix: refine widget interactions 2026-08-13 19:54:49 +02:00
Thomas Camlong 1fa345edd1 feat: modernize widget experience 2026-08-13 19:54:48 +02:00
Thomas Camlong 49ef7748ad feat: refine widget interactions 2026-08-13 19:54:38 +02:00
Thomas Camlong 36d7ef0562 fix: complete widget modernization review 2026-08-13 19:54:32 +02:00
Thomas Camlong 6f2cd7fc2b feat: modernize dashboard widgets 2026-08-13 19:54:28 +02:00
Thomas f19033e0d5 feat: simplify caching — TanStack Query as single source of truth (#6075) 2026-07-03 16:33:03 +02:00
Thomas bbc4589c9e fix(beszel): leverage TanStack Query for stale-while-revalidate caching (#6055) 2026-06-22 17:17:09 +02:00
Thomasandajnart 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
Thomas 39e424563a fix(beszel): widget transparency, error handling, and cache invalidation (#5993) 2026-06-20 12:21:26 +02:00
ajnart 569293275d style: auto-fix lint and format 2026-06-15 14:06:34 +00:00
Thomas Camlong d6ced037df refactor(beszel): deduplicate alerts query input and document systemId option
- Memoize alerts query input to avoid triple repetition
- Add system selector to docs configuration items
2026-06-15 16:04:59 +02:00
Thomas Camlong 441cc692f9 feat(beszel): add error definitions and retry config to beszel widgets
Add INTERNAL_SERVER_ERROR error definitions to alerts, grid, and table
widgets. Set retry: false and appropriate staleTime/refetchInterval.
2026-06-15 14:58:53 +02:00
Thomas 74443a49b2 feat(ui): add global query cache leveraging Redis (#5811) 2026-06-10 18:52:06 +02:00
Thomas a4db9cf0dc feat(beszel): add Beszel integration with system monitoring widgets (#5900) 2026-06-10 18:27:05 +02:00