feat(ui): show internal hostname and densify config UI

Add an application Internal access section that loads the running
container hostname (skipped for Compose apps), densify configuration
diff and popup-small defaults, dock the server-timing HUD into the
mobile top bar, restyle the 2FA challenge with the auth shell, and
enforce 16px mobile form fonts to prevent iOS zoom.
This commit is contained in:
Andras Bacsai
2026-08-05 21:24:25 +02:00
parent 8046e5a28d
commit 4d35c63d89
22 changed files with 369 additions and 213 deletions
+9 -6
View File
@@ -109,23 +109,26 @@ test('removes stale Content-Length after injecting the HUD', function () {
expect($response->headers->has('Content-Length'))->toBeFalse();
});
test('app shell exposes Server-Timing HUD dock slot in the desktop top bar only', function () {
test('app shell exposes Server-Timing HUD dock slots in desktop and mobile top bars', function () {
$layout = file_get_contents(resource_path('views/layouts/app.blade.php'));
expect($layout)
->toContain('id="server-timing-hud-slot"')
->toContain('data-server-timing-hud-slot')
->not->toContain('id="server-timing-hud-slot-mobile"');
->toContain('id="server-timing-hud-slot-mobile"')
->toContain('data-server-timing-hud-slot');
});
test('Server-Timing HUD docks on desktop only and floats on smaller viewports', function () {
test('Server-Timing HUD docks into navbar slots and floats only as fallback', function () {
$hud = file_get_contents(resource_path('views/components/server-timing-hud.blade.php'));
expect($hud)
->toContain('server-timing-hud-slot')
->toContain('server-timing-hud-slot-mobile')
->toContain("matchMedia('(min-width: 1024px)')")
->toContain('float bottom-left instead of docking')
->not->toContain('server-timing-hud-slot-mobile');
->toContain('floats bottom-left only if no navbar slot is available')
// Mobile pill is compact (app ms only); full "ST · db · q" breakdown stays desktop/float.
->toContain("parentElement.id === 'server-timing-hud-slot-mobile'")
->toContain('compactSummary');
});
test('does not inject HUD into non-HTML or fragment responses', function () {