From 621ee99b77f45402a3b64bec58f2774303b87565 Mon Sep 17 00:00:00 2001 From: mrambossek Date: Sat, 1 Aug 2026 22:33:41 +0200 Subject: [PATCH] adminui: make the web UI usable on a phone MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The header was a rigid flex row, so on a narrow screen the account name and the sign-out button were pushed off the side of the viewport where they could not be reached at all — not merely ugly, unusable. It wraps now, and below 40rem the account block takes its own full-width row so a long display name cannot crowd out the navigation. Wide content scrolls inside its own box rather than dragging the page sideways with it. Tables sit in an overflow-x container and
 is
capped at the viewport width; without that, one long self-test line or
one device table makes every other column of text unreadable, and on a
phone it is not obvious that the page has moved at all. Long opaque
strings — device ids, enrolment links — wrap anywhere rather than
insisting on a width nothing has.

Also: box-sizing on everything, stat cards that share a row instead of
each claiming the full width, and larger touch targets on buttons, where
.4rem is comfortable with a mouse and fiddly with a thumb.

Co-Authored-By: Claude Opus 5 
---
 server/internal/adminui/render.go | 48 +++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 12 deletions(-)

diff --git a/server/internal/adminui/render.go b/server/internal/adminui/render.go
index ffb6528..9b30a05 100644
--- a/server/internal/adminui/render.go
+++ b/server/internal/adminui/render.go
@@ -39,29 +39,53 @@ const baseHTML = `
 Echolot — {{.Page}}
 
 {{if ne .Page "login"}}
 
@@ -130,7 +154,7 @@ const baseHTML = ` {{end}} - +
{{range .Rows}} @@ -146,13 +170,13 @@ const baseHTML = ` {{else}} {{end}} -
DeviceNameAccountEnrolledRuns
{{if $.Admin}}No devices enrolled.{{else}}You have not signed in on any device yet. Sign in from the Echolot app to link one.{{end}}
+ {{else if eq .Page "runs"}}

{{if .Admin}}Uploaded runs{{else}}Your uploaded runs{{end}}

Shown exactly as uploaded, at the privacy level the uploader chose. Nothing here can un-redact a run.

- +
{{range .Rows}} @@ -167,7 +191,7 @@ const baseHTML = ` {{else}} {{end}} -
UploadedDeviceVerdictFindingsSizeLevel
Nothing uploaded yet.
+ {{else if eq .Page "run"}}

Run {{.ID}}