Address CodeRabbit review on #6510:
- gridstack: only suppress recalculation when the width delta is
insignificant AND (non-dynamic OR height unchanged), so dynamic
sections still rebuild on height changes
- beszel: propagate the response parse failure via { cause } in both
error wrappers
- auth tests: cover invalid (non-string) OIDC groups claims
The Uptime-Kuma status-page API (toPublicJSON) does not emit a status
field on monitor objects, so the added status schema field and paused
early-return were dead code and did not resolve#6002. Paused monitors
stop producing heartbeats and the two consumed endpoints expose no
paused signal, so revert the change.
Unraid CPU: divide by cpus.length (the array actually being averaged)
instead of info.cpu.threads, which is more robust if the two ever
disagree, while keeping the SMT over-reporting fix.
- **Unraid CPU calculation** (#6082): Use thread count instead of core count
when normalizing CPU utilization. Each cpus[] entry is one thread, so
dividing by physical cores (cores) over-reports on SMT systems.
- **OIDC single-group sync** (#5716): Normalize the groups claim to always
be an array. Some providers (e.g. Jumpcloud) send a single group as a
plain string instead of an array, which caused the Array.isArray check
to skip group synchronization entirely.
- **Uptime-Kuma paused status** (#6002): Add the status field to the
monitor schema and check it before falling back to heartbeat inference.
When a monitor is paused, heartbeats stop arriving, so the latest
heartbeat may still show 'up' from before pausing. The status page
returns status=2 for paused monitors, which this change now respects.
* fix(immich): use thumbnail endpoint instead of original for album carousel
Switches from /api/assets/:id/original to /api/assets/:id/thumbnail to fix
HEIC image incompatibility (thumbnails are always JPEG), reduce bandwidth,
and improve loading speed.
Closes#6388
* working on immich
* Improve image proxy error handling
* fix(image-proxy): use trusted fetch response type
* docs(immich): require Asset View permission
The widget-only integrations refactor incorrectly removed the
ArchiveTeam Warrior integration entirely. It only needed to be
excluded from auto-seeding (by removing defaultUrl), not deleted.
This restores the integration class, reverts the widget/router/handler
to use integration middleware, and removes archiveTeamWarrior from the
widget-only-integrations migration.
* 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>
- Remove ternary operators from new code (widget-integration-select,
TabsContainer, mock data, members page)
- Remove stale /docs/management/tools/backup from sitemap type
- Add value prop to error-state Select in beszel-system-stats