You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(shell, docs-portal): mount the design system under the shell header, outside the sign-in wall
The Developers menu opened the portal in a new tab. It now mounts inside the
shell as a federated remote, and it renders whether or not you are signed in.
Brand guidelines and a token contract are not client data. Gating them behind a
session bought nothing and cost a developer the one reference they need while
debugging a themed surface — including the case where the thing being debugged
is why they cannot get past the wall.
docs-portal becomes a federation remote exposing ./mount, while remaining
runnable standalone on :3020. The two entries differ deliberately: the
federated mount loads only the token floor, because under the shell the shell
is the canonical injector and supplies all three mode blocks; the standalone
entry still loads the full theme.css, because on :3020 there is no shell to
inherit from and a swatch page with one mode would be pointless. Verified both
ways — all three modes resolve correctly inside the shell.
It is registered as DESIGN_SYSTEM_REMOTE and deliberately kept OUT of REMOTES:
it is not a step in any flow and must never appear in a rotation. It is also
still absent from DESIGN.md's member registry, since it documents the system
rather than consuming it as a product surface, so the per-member contract does
not apply to it.
The surface gets a slim header of its own rather than the full one. The full
header carries workspace switching plus the chat and queue rails, all of which
assume a session; rendering it pre-auth would mean guarding every one of them
for a surface that needs none. Brand, mode toggle and a way back is the whole
requirement, and the back button reads "Back to sign in" or "Back to app"
depending on where you came from. A matching entry point sits on the wall
itself, so the portal is reachable with no session at all.
Also adds the legend the ratios needed. A bare "5.69" means nothing without its
thresholds, so the page now states the 1-21 scale, marks 3 as the floor for
lines and boundaries and 4.5 for text, and records the reason 4.5 applies
everywhere here: every type size in augment-it is under 18.66px, so there is no
large-text allowance.
Note for anyone with a dev server already running: adding the
@augment-it/federation dependency to docs-portal will not reach a live rsbuild
process, which holds its module-resolution graph from startup. It reports
"Can't resolve '@augment-it/federation'" until restarted. A clean build is
green.
Verified in the browser: the menu item mounts the remote under the slim header,
150 swatch cells and 153 ratios render, dark/light/vibrant resolve to
#0f1115 / #faf9f6 / #0c0814 inside the shell, the shell's ModeToggle and the
portal's own buttons stay in sync via onModeChange, and no mount error.
20 packages build, shell and portal typecheck clean.
Files changed:
- shell/src/App.svelte
- shell/src/DevelopersMenu.svelte
- shell/src/remotes.ts
- shell/rsbuild.config.ts
- apps/docs-portal/src/mount.ts (new)
- apps/docs-portal/src/App.svelte
- apps/docs-portal/src/app.css
- apps/docs-portal/rsbuild.config.ts
- apps/docs-portal/package.json
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019a8tSPbFdvF1pKtADnWyDg
0 commit comments