Repository navigation
Experiment: Chat in the design system's clean look (not for release) - #180
Draft
immakermatty wants to merge 1 commit into
Draft
immakermatty wants to merge 1 commit into
immakermatty wants to merge 1 commit into
Conversation
This was referenced Nov 5, 2026
…de's components On a Lazurio Environment, Chat takes the design system's colours (theme.css) but keeps T3's shapes, type and depth, so it still reads as T3 beside Apps. As an experiment, not for release, one more overlay stylesheet (apps/web/src/lazurio/skin.css) dresses T3's own components in the design system's clean look behind theme.css's gate: pill buttons and fields, square icon buttons, 10 px cards, composer and dialogs, Inter Tight 600 headings, hairlines and one floating shadow. Behaviour, order, text and sizes stay T3's; without the shell, or with a picked T3 theme, nothing changes. The one upstream seam: components/ui/button.tsx marks each Button with its size and variant, because a trigger that renders a Button takes over its data-slot. The release contract keeps the skin to T3's own hooks and the design system's tokens, and lists the tokens the shell would have to promise. Claude Opus 5.5 in Claude Code (T3 Code). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
immakermatty
force-pushed
the
lazurio/experiment-ds-skin
branch
from
November 5, 2026 23:56
0de6258 to
3a344a4
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proč
Na Prostředí Lazuria má Chat (T3 Code) od #66 a #82 barvy design systému, ale tvary, písmo a hloubku pořád z T3. Proto vedle Apps pořád „vypadá jako T3“. Experiment zkouší, jestli jde Chat obléknout do vzhledu design systému tak, aby se UX ani mechanika nezměnily a aby se kabátek dal levně udržet proti upstreamu.
Co se mění
Na Prostředí, ve standardním vzhledu T3 (téma Prostředí, rozhodnutí 0200 a 0208) a jen tam, platí Čistý vzhled design systému (HumanAndMachine-ai/design-system-lazurio, 2026-10-21):
--radius), takže sm je 6 px a lg 10 px jako v design systému.--lz-shadow-float) mají plovoucí vrstvy: menu, popover, select, tooltip, dialog a toast.--lz-track-title. Text se řídí--lz-font-sansshellu: s tokeny zmaindesign systému je to Inter.Co se záměrně nemění
Chování, pořadí, texty, velikosti a hustota zůstávají T3. Nic se neskrývá. Značka T3 Code se štítkem Lazurio zůstává. Bez shellu Lazuria vypadá T3 přesně jako upstream a s osobním tématem T3 jako to téma. Obojí je ověřené v prohlížeči: s tématem Grove má composer upstreamových 16 px a systémové písmo, bez
/.lazurio/shell.jsplatí hodnoty upstreamu. Tmavý režim tématu Lazurio zůstává paletou T3.Mechanismus
apps/web/src/lazurio/skin.cssse stejnou podmínkou jakotheme.css(značka shellu, žádné vybrané téma T3), importovaný hned po něm vmain.tsx. Má 14 pravidel. Míří jen na háčky, které T3 sám renderuje (data-slot,data-*, ARIA,[data-sidebar-row], třída.chat-markdown), nikdy na utility třídy Tailwindu. Hodnoty jsou tokeny--lz-*.components/ui/button.tsx(+3 řádky) dává každému Buttonudata-sizeadata-variant. Zjištění z experimentu:data-slot="button"většině tlačítek přepíše obalující trigger (tooltip-trigger,menu-trigger,popover-trigger), takže na něj skin cílit nemůže. Size a variant přežijí, a tím se odliší pilulka od ikonového čtverce. Upstreamovéinput.tsxuždata-sizetakhle nese, takže šev jde navrhnout i upstreamu.button.tsxpřibyl doallowed_upstream_changesvlazurio-fork-ci.ymls důvodem.scripts/lazurio-release-contract.test.mjshlídá import, šev, podmínku na každém selektoru, háčky bez utility tříd, které tokeny T3 smí skin nastavit a číst, zákaz barevných literálů a!important, a výslovný seznam tokenů s fallbackem (níž).Co by musel slíbit shell
Skin čte tokeny, které shell dnes deklaruje, ale neslibuje (
declares.tokens, LazurioPlatformsrc/shell/interface.ts), nebo je vůbec nemá. Experiment je proto nese s lokálním fallbackem:--lz-radius-md--lz-radius-pill--lz-shadow-float--lz-font-heading--lz-font-sans--lz-track-body,--lz-track-title--lz-weight-akce,--lz-weight-titleDokud Platforma nepřevezme tokeny Čistého vzhledu, bude Chat s tímto skinem psaný v Inter Tight (dnešní
--lz-font-sansshellu) s nadpisy 700.Rizika pro rebuildy
button.tsxje jeden blok vedefaultProps. Konflikt hrozí, jen když upstream přepíše právě tyto řádky.data-slota na tom, že T3 bere zaoblení z--radiusa--control-radius. Přejmenování slotu nebo pevný poloměr v upstreamu skin tiše minou: vzhled se vrátí k T3, nic se nerozbije. Při rebuildu proto stačí projít screenshoty hlavních obrazovek.!importantvyhrávají jen proto, že overlay CSS je mimo@layerTailwindu. Kdyby setheme.css/skin.cssněkdy importovaly do vrstvy, přestanou platit.Ověřeno
mainpo rebuildu na upstream v0.1.7 (Rebuild the Lazurio overlay on upstream T3 Code v0.1.7 #174) jediným commitem bez konfliktu; kontrakt 52 z 52 avp run check:changed(format, lint, knip, typecheck, react compiler) na novém základu znovu prošly. Screenshoty níž jsou ze základu před rebuildem.--base-dir, loopback, syntetický projekt „Demo shop“ a vlákna z vývojového provideru Replay) se skutečným/.lazurio/shell.jsz Platformymain(scripts/preview-launchpad.tsse syntetickou složkou). Varianta „tokeny DS main“ má v lokální kopii Platformy vendoredtokens.cssnahrazenétokens.csszmaindesign systému. Do Platformy ani do design systému se nic nezapisovalo.agent-browser, který na loopbacku synteticky nejde. Skin v něm mění jen tlačítka panelu, stejně jako jinde.node --test scripts/lazurio-release-contract.test.mjs: 52 z 52.vp run check:changed: format, lint, knip, typecheck a react compiler projdou. Testapps/server/src/provider/AgentContextBudget.test.tslokálně padá stejně i na čistémorigin/main, takže s touto změnou nesouvisí.Screenshoty jsou ve vlákně, které experiment připravilo. Na GitHub je nenahrávám, protože by to znamenalo commitnout soubory jen pro PR.
Navazující issues
Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · T3 thread b2ba4875-1104-4818-a273-d3ea899738dc
🤖 Generated with Claude Code