Skip to content

Liquid-glass login redesign + auto dark mode - #101

Merged
KrisSimon merged 7 commits into
mainfrom
feature/liquid-glass-login
Jul 9, 2026
Merged

Liquid-glass login redesign + auto dark mode#101
KrisSimon merged 7 commits into
mainfrom
feature/liquid-glass-login

Conversation

@KrisSimon

Copy link
Copy Markdown
Contributor

Summary

Modernises the login UI with a Liquid Glass design and cleans up a couple of adjacent behaviours.

  • Liquid-glass login card — the solid card is replaced with a translucent, backdrop-blurred panel (specular top-edge highlight, soft floating shadow) with pill-shaped glassy fields and a glassy accent button. Text stays high-contrast/readable.
  • Automatic dark mode — a graphite smoked-glass variant is applied automatically via @media (prefers-color-scheme: dark); light frosted glass is the default.
  • Mobile fit — responsive width: min(360px, calc(100% - 2rem)) + box-sizing: border-box so the card always fits with a side gutter (verified 320–390px); removes the now-redundant mobile-gutter media query.
  • Consistency — the glass applies to .login-box, so login, logout, token-info and device-activation cards share one look. The token page drops its inline max-width to use the standard card.
  • Device activation focus — the activation form now autofocuses the device-code field when it is empty (placeholder shown), otherwise the username field.

Testing

Ran the full e2e CI matrix locally against a dirty build (--dirty): chromium, webkit, mobile-pixel, mobile-safari — 734 passed, 26 skipped, 0 failed.

No VRT baselines needed regenerating: the light glass over the bright landscape renders within the existing maxDiffPixelRatio: 0.05 screenshot tolerance on every browser.

Note: local verification ran on arm64; CI runs amd64. Rendering is close enough to pass tolerance locally, but if CI surfaces any VRT drift the affected baselines can be regenerated from the CI run.

KrisSimon added 3 commits July 8, 2026 21:29
Autofocus the user_code field when no code is prefilled (the
'Device Code' placeholder is shown), otherwise focus the username
field as before.
Replace the solid login card with a translucent, backdrop-blurred
'liquid glass' panel and pill-shaped fields, shared across all auth
pages (login, logout, token info, device activation). A graphite
dark variant is applied automatically via prefers-color-scheme.

The card width is responsive (min(360px, calc(100% - 2rem))) with a
box-sizing fix so it fits small phones without overflowing. The token
information page drops its inline max-width so it uses the same card.

e2e VRT (chromium, webkit, mobile-pixel, mobile-safari) stays green:
the light glass over the bright background renders within the existing
screenshot tolerance, so no baselines needed regenerating.
The glass panel renders differently across CPU architectures
(backdrop-filter), so the mobile-pixel/mobile-safari screenshots that
passed locally on arm64 failed on amd64 CI. Update the 18 affected
mobile baselines (login, logout, device activation, CheeseCookbook,
LoginPage vrt) with the amd64 renders produced by CI.
@KrisSimon KrisSimon closed this Jul 8, 2026
@KrisSimon KrisSimon reopened this Jul 8, 2026
The pill inputs used width:100% without box-sizing, so their horizontal
padding pushed them ~38px past the card's right edge (text inputs default
to content-box, unlike buttons). Add box-sizing:border-box to the inputs
and the button so width:100% includes padding and they stay inside.
@KrisSimon KrisSimon closed this Jul 9, 2026
@KrisSimon KrisSimon reopened this Jul 9, 2026
@KrisSimon KrisSimon closed this Jul 9, 2026
@KrisSimon KrisSimon reopened this Jul 9, 2026
KrisSimon added 2 commits July 9, 2026 11:03
Update the mobile-pixel/mobile-safari baselines so they show the
box-sizing fix (pill fields contained within the glass card) instead
of the previous overflow. Renders captured from the amd64 CI runner
to match the pipeline.
…t core dumps

- ./tooling.sh e2e --update-screenshots injects Playwright --update-snapshots
  to rebuild the VRT baselines; --amd64 runs only the Playwright container as
  linux/amd64 so rebuilt screenshots match the amd64 CI renderer.
- Add browser crash core dumps and Playwright run artifacts to .dockerignore
  and .gitignore so a multi-GB core file can no longer break the release build
  ('no space left on device' during COPY . .).
@KrisSimon
KrisSimon force-pushed the feature/liquid-glass-login branch from 5f77ace to 04ac298 Compare July 9, 2026 09:04
@KrisSimon KrisSimon closed this Jul 9, 2026
@KrisSimon KrisSimon reopened this Jul 9, 2026
The chromium/webkit/firefox desktop baselines still showed the old
white card: on a 1920-wide screen the card is under the 5% screenshot
tolerance, so CI kept passing and never updated them (firefox is not
run in CI at all). Regenerate all 9 glass pages across the three
desktop browsers so the reference images match the live glass UI.
@KrisSimon KrisSimon closed this Jul 9, 2026
@KrisSimon KrisSimon reopened this Jul 9, 2026
@KrisSimon
KrisSimon merged commit dfa4435 into main Jul 9, 2026
12 checks passed
@KrisSimon
KrisSimon deleted the feature/liquid-glass-login branch July 9, 2026 10:33
@KrisSimon
KrisSimon restored the feature/liquid-glass-login branch July 9, 2026 12:32
@KrisSimon
KrisSimon deleted the feature/liquid-glass-login branch July 9, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant