web theme: fix broken pill gradient, real frost, full-height sidebar, balanced tiles, masonry gallery, mobile grid blowout

This commit is contained in:
Martin Dvořák 2026-09-30 11:32:24 +00:00
commit c39cf0efe4
4 changed files with 94 additions and 50 deletions

View file

@ -126,9 +126,16 @@ Themes: `web` = default frosted-glass website (sidebar + content, light/dark),
### Web theme + light/dark (v2.2.0 rework)
- `WebLayout.tsx` is the default shell. Layout is a **sticky sidebar** (brand,
section nav, light/dark switch, desktop switch, contact/clock) beside a single
content column of `.glass` panels (hero, quick tiles, services, activity,
projects, hardware, features, friends). The old stacked TUI panel layout and
the `SlBackground` ASCII train were removed with it.
content column of `.glass` panels: hero (with a compact "Find me" socials row),
a `.web-quick` 2-up (`now.txt` + `gym_sbd.db`), then services, activity,
projects, hardware, features (Revival/RustyWolf) and friends. Projects/hardware
use a CSS multi-column **masonry** gallery (`.project-grid`) so short cards
don't leave half-empty grid slots. The old stacked TUI panel layout and the
`SlBackground` ASCII train were removed with it.
- **Grid gotcha:** the mobile column is `minmax(0, 1fr)`, never bare `1fr`. A
`1fr` track has an automatic `min-content` floor, and with a wide child that
blew the single column out to ~2x the viewport (horizontal scroll + clipped
content on phones). Keep the `minmax(0, …)`.
- Glassmorphism lives in one utility class, `.glass`, in `web.css`: a subtle
`linear-gradient` over `--glass-hi`/`--glass-lo` with
`backdrop-filter: blur(20px) saturate(165%)`. The page blobs behind the panels
@ -355,6 +362,11 @@ knows about icon ids, via `APP_BY_ID`.
contain `data-theme="web"` / `data-scheme="light"` and the `.web-root` markup.
Theme + scheme are read pre-paint from `localStorage.theme` / `.scheme`, so a
quick check is to set those in devtools and reload.
- `next/image` is lazy by default, so a headless full-page screenshot shows the
below-the-fold feature shots and friend avatars as blank boxes. Scroll the page
slowly first and they load; this is a capture artifact, not a bug. Headless
Chromium lives at `~/.cache/ms-playwright/chromium-*/chrome-linux64/chrome`
(drive it with `--headless=new --remote-debugging-port=…` and CDP).
- A dev server may already be running on port 3000 — on this host it is normally
the **system** `dvorakmortonxd-dev` service, so check
`systemctl status dvorakmortonxd-dev` first. Two dev servers on this repo