From a85e8452558e31c22ef13585b47d83df723eb568 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 7 Aug 2026 22:34:24 +0200 Subject: [PATCH] fix(web): the console stops falling out of its own design system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A pre-release sweep of the management console for two things that no type check and no diff can catch: primitives that were never @unom/ui's, and animation that a nested motion parent quietly cancelled. THE PRESET TILES ALL LANDED ON THE SAME FRAME. @unom/ui's
sets `delayChildren: stagger(...)`, so a page whose cards are direct descendants of it staggers for free — which is why every page but one looked right. An is ALSO a motion element and sets no `delayChildren`, and the Virtual displays preset tiles are cards nested INSIDE that page's config card, so that card became their timing group. Measured in a headless browser: the opacity spread between the first and last tile was 0.00 across the whole animation (six tiles in lockstep), and is 0.98 now — a ~100 ms cascade matching the rest of the console. The four hand-rolled copies of the stagger container collapse into one `` that carries the explanation. FIVE FILES IMPORTED THE WRONG BUTTON. `@unom/ui/button` exports both a plain `Button` and the `AnimatedButton` that this console's wrapper re-exports under the same name — so `import { Button } from "@unom/ui/button"` compiles, renders, and silently opts out of the mount animation and the hover/tap response. Displays, SessionGame, GPU, Update and PendingDevices had dead buttons sitting next to live ones. THREE PRIMITIVES HAD NO WRAPPER, SO NOBODY REACHED FOR THEM. @unom/ui ships form/select, form/textarea and form/checkbox; components/ui did not, and the gap was filled with browser-chrome `