clusev/resources/views/components
boban 4b2aee3941 fix(versions): show what's-new (v-prefixed ref) + sidebar update badge (v0.9.51)
Two fixes the operator asked for:

- The "what's new" preview was empty. availableChangelog fetched CHANGELOG.md at
  ref="0.9.50", but release tags are "v0.9.50" — the raw fetch 404'd and the
  panel silently stayed empty. Use the v-prefixed tag as the ref. The existing
  test masked it with a wildcard fake; tightened with Http::assertSent.

- The sidebar now shows a "1" badge on the Version item when an update is
  available, so an update is visible on every page, not only the Versions page.
  Driven by a new ReleaseChecker service: updateAvailable() is a pure cache read
  (no network in the sidebar); a scheduled clusev:check-update (every 30 min,
  anonymous/read-only) keeps the cache warm so the badge is accurate even before
  the operator opens the Versions page.

Refactor: the remote tag lookup (fetch + newest-version) moved out of the
Versions component into ReleaseChecker; the component delegates. nav-item gains
an optional badge prop.

Tests: ReleaseChecker (cache-read update-available, refresh caches, command warms
cache, sidebar badge renders only when available) + the v-prefixed-ref assertion.
371 pass, Pint clean, /versions loads 200 with no console errors; badge + the
"What's new in v0.9.50" panel verified in the browser. Lang parity kept.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 00:19:27 +02:00
..
.gitkeep feat: scaffold — Dockerized Laravel 13 + Livewire 3 + Tailwind 4 + Reverb 2026-06-12 00:31:50 +02:00
badge.blade.php feat(wireguard): SSH lock + peer config download (v0.9.40) 2026-06-21 09:25:19 +02:00
btn.blade.php feat(ui): uniform bordered button kit; retire ghost variants 2026-06-14 10:18:47 +02:00
checkbox.blade.php fix(ui): themed x-checkbox component (accent, visible check) for login-protection + remember-me 2026-06-20 20:04:47 +02:00
command-palette.blade.php feat(help): in-panel help page scaffold + overview topic 2026-06-19 22:14:15 +02:00
icon.blade.php feat(versions): grouped + paginated changelog browser (no endless scroll) 2026-06-20 21:47:45 +02:00
kpi.blade.php style: align UI to the BASTION reference (atmosphere + depth) 2026-06-12 13:39:57 +02:00
lang-switch.blade.php feat(i18n): bilingual foundation (DE/EN) + localize auth/dashboard/servers/fleet/account 2026-06-13 22:36:16 +02:00
metric.blade.php feat: reference-depth dashboard (sparkline KPIs + live dual chart + table) 2026-06-12 14:44:11 +02:00
modal-trigger.blade.php fix(modals): reliable open + spinner/error feedback on every modal trigger 2026-06-15 21:07:25 +02:00
nav-item.blade.php fix(versions): show what's-new (v-prefixed ref) + sidebar update badge (v0.9.51) 2026-06-22 00:19:27 +02:00
panel.blade.php style: align UI to the BASTION reference (atmosphere + depth) 2026-06-12 13:39:57 +02:00
ring.blade.php fix(live): poll-driven metrics (chart + gauges), bigger donuts, drop fake fleet 2026-06-12 22:38:51 +02:00
server-item.blade.php feat(ui): add "Initialisierung" (pending) server status 2026-06-14 10:20:32 +02:00
sidebar.blade.php fix(versions): show what's-new (v-prefixed ref) + sidebar update badge (v0.9.51) 2026-06-22 00:19:27 +02:00
skeleton.blade.php perf+ux: lazy-load pages (skeletons), fix modal, normalize buttons + spinners 2026-06-12 23:17:02 +02:00
status-dot.blade.php feat(ui): add "Initialisierung" (pending) server status 2026-06-14 10:20:32 +02:00
status-pill.blade.php feat(ui): add "Initialisierung" (pending) server status 2026-06-14 10:20:32 +02:00
topbar.blade.php fix(blade): garbled header on every signed-in page + private metrics channel (v0.4.1) 2026-06-14 08:34:07 +02:00
two-factor-badge.blade.php fix(ui): unify the 2FA status badge into one x-two-factor-badge component 2026-06-20 20:07:59 +02:00