CluPilotCloud/resources/views
nexxo 49d528dbea Fix round: point at the real tab, hide the button nobody can press, prove the quiet page load
Fixes four Important findings from the review of Task 12.

Corrected nine check `tab` values at the source (BillingChecks was already
correct; OnboardingChecks/ProvisioningChecks/DeliveryChecks all carried the
pre-redesign 'integrations' value, which is not a member of
Integrations::TABS): four onboarding checks now point at 'platform' or 'env'
depending on where their field actually is, five provisioning/delivery
checks point at 'services'. checkUrl()'s match-block resolver — praised as
correct for the six checks that point at a genuinely different admin page —
is unchanged; its `default` arm is now a pure safety net, not a route any
check actually relies on.

Wrapped the "Prüfen" button in @can('secrets.manage'): mount() admits
hosts.manage OR secrets.manage, but runCheck() requires secrets.manage alone,
so an Admin-role operator could see a button that 403s on press.

Fixed a docblock on HEARTBEAT_KEYS that asserted a staleness threshold was
kept in sync with OperationChecks::STALE_AFTER_MINUTES — that constant is a
key/settings-name map with no threshold of its own, and no such
synchronisation exists.

Three new tests, each confirmed red against a deliberately reintroduced
version of the bug it covers before being confirmed green: every check's tab
value against where its field actually lives, the run-check button hidden
from an operator who cannot press it, and Http::assertNothingSent() after a
plain page load.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 16:26:10 +02:00
..
components Fix round: name the slot on the card, and cover the modal that already worked 2026-07-30 15:32:16 +02:00
errors One wordmark, one typeface, and the address the server actually issues 2026-07-29 14:30:44 +02:00
layouts Put the switch where it governs, and say when it is thrown 2026-07-30 15:09:38 +02:00
livewire Fix round: point at the real tab, hide the button nobody can press, prove the quiet page load 2026-07-30 16:26:10 +02:00
mail Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
partials Show that the update is running, and stop showing the rsync log 2026-07-29 20:33:02 +02:00
pdf Issue an invoice from what somebody bought, and freeze it there 2026-07-29 02:09:05 +02:00
vendor/wire-elements-modal R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
coming-soon.blade.php One wordmark, one typeface, and the address the server actually issues 2026-07-29 14:30:44 +02:00
landing.blade.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
legal.blade.php Rebuild the public website in the shared design system 2026-07-29 11:26:35 +02:00
security.blade.php Put customer instances on their own domain, and say which domains are ours 2026-07-29 16:03:13 +02:00
status.blade.php Rebuild the status page as a status page 2026-07-29 12:45:18 +02:00