Custom Frutiger Aero 404

app/not-found.tsx renders a standalone screen: the root layout's ice
scene is the backdrop, the glass card/rim/bubbles come from the shared
recipes (full Aero with that theme on, frosted glass in light/dark),
and the mascot is the scene's glossy ice orb at full strength with a
snowflake and a "404" chip. Two ways out - back to the library and
into the chat - both 44px targets, en + cs.

The regression suite pins the 404 status, both links and the Czech
copy; the pixel-contrast scan covers the screen in all three themes.
The service worker no longer caches non-OK navigations as the offline
shell (a typo'd URL used to write the error page into the shell
cache). Version 0.5.6, SW -> freezmo-v78.
This commit is contained in:
Martin Dvořák 2026-10-14 15:27:47 +00:00
commit 7e42b03f7e
9 changed files with 137 additions and 4 deletions

View file

@ -1423,6 +1423,18 @@ Things I chose while building, with the reasoning:
(measured: 268..1280 at a 1280 window) — a flat pane floating 40px inside the scene read as
"cut off next to the sidebar".
88. **A custom 404, Frutiger Aero style.** Unknown URLs used to fall through to Next's default
"This page could not be found". `app/not-found.tsx` now renders a standalone screen — the root
layout's ice scene is the backdrop, and the glass card, the rim and the rising bubbles come from
the shared recipes, so it is full Frutiger Aero while that theme is on and stays in the
frosted-glass language in light and dark. It wears the scene's glossy ice orb
(`.not-found-orb`, at full strength so the snowflake reads) with a "404" chip, "This page melted
away", and two ways out: back to the library and into the chat (44px targets, en + cs). The
regression suite pins the 404 status, both links and the Czech copy; the pixel-contrast scan now
covers the screen in all three themes. The service worker also stopped caching non-OK
navigations as the offline shell — a typo'd URL used to write the error page into the shell
cache.
87. **Chat's chrome docks into the rail (the sidebar seam).** The chat header and composer are
full-bleed bands inside the main pane; at desktop widths that pane starts right at the sidebar,
so both bands ended in a hard vertical edge beside the floating rail card — the 12px gutter