Skip to content

feat(ui): one seamless surface — two-plane workbench backgrounds (0299) - #474

Merged
crs48 merged 10 commits into
mainfrom
claude/background-color-consistency-910697
Jul 11, 2026
Merged

feat(ui): one seamless surface — two-plane workbench backgrounds (0299)#474
crs48 merged 10 commits into
mainfrom
claude/background-color-consistency-910697

Conversation

@crs48

@crs48 crs48 commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Implements docs/explorations/0299 — collapses workbench backgrounds to two planes so the whole shell reads as one solid surface.

What changed

Plane A — the paper (--canvas). Inside .wb-root, --surface-0 (and the re-declared --background/--background-subtle aliases) now alias --canvas, so tab content — page editor, database view, settings, chat, canvas — is pixel-identical to the backdrop behind the islands in both modes. Redundant view-root base paints removed (PageView, ChannelView, ThreadPane, settings route, SettingsView, PanelViewHost); hosts paint the plane.

Plane B — the islands (--island-b). --island-pop and --popover now alias --island-b, so modals, the dev-tools panel, floating menus, popovers/selects/command palette, and sheets all share the exact fill of the sidebar and status-bar islands. Elevation is carried by shadow-isl/shadow-pop + hairline, never by a different fill.

Two verification-driven fixes beyond the exploration plan (details in the doc's Implementation Notes):

  • :root aliases substitute var() at :root and inherit the resolved neutral value — bg-background/bg-secondary/bg-muted never saw the wb ramp. Re-declared inside .wb-root.
  • Menus/dialogs portal to <body>, outside .wb-root; body:has(.wb-root) extends the palette to portal layers.

Cleanups + guard: DatabaseView's hardcoded bg-white dark:bg-gray-900 popovers → tokens; FormShareBar/ShareDialog raw palette classes → tokens; new CI gate pnpm check:surface-tokens (hard-zero in web/ui/devtools/react with a justified allowlist; ratchet baseline 183 for the packages/views legacy reservoir).

Verification

Live-verified in the running app (light + dark): settings and page-editor tabs paint zero backgrounds different from the canvas; dev-tools panel, dropdown menus, and sidebar islands compute the same background-color; linear/cozy/true-black variants compose unchanged. Full dom test project (2879 tests) and typecheck green.

🤖 Generated with Claude Code

xNet Test added 8 commits July 11, 2026 23:02
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
…nd-b)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
…s hardcoded palette colors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
…ews ratchet (0299)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
…ody portals

Two gaps found during live verification:
- :root aliases (--background/--secondary/--muted) substitute var(--surface-*)
  at :root and inherit the RESOLVED neutral value — .wb-root's ramp never
  reached them. Re-declared inside the scope.
- Menus/selects/dialogs portal to <body>, outside .wb-root, so they resolved
  the neutral ramp. body:has(.wb-root) extends the palette to portal layers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
Signed-off-by: xNet Test <test@xnet.dev>
@crs48
crs48 temporarily deployed to pr-474 July 11, 2026 21:39 — with GitHub Actions Inactive
github-actions Bot added a commit that referenced this pull request Jul 11, 2026
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Preview removed for PR #474.

github-actions Bot added a commit that referenced this pull request Jul 11, 2026
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

🖼️ UI changes in this PR

Interactions

🎬 Open a channel and post a message

Open a channel and post a message

▶ Watch MP4

Auto-captured by CI · run. Informational — not a blocking check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Signed-off-by: xNet Test <test@xnet.dev>
@crs48
crs48 temporarily deployed to pr-474 July 11, 2026 21:48 — with GitHub Actions Inactive
@crs48
crs48 temporarily deployed to pr-474 July 11, 2026 21:49 — with GitHub Actions Inactive
github-actions Bot added a commit that referenced this pull request Jul 11, 2026
@crs48
crs48 merged commit 6ce1083 into main Jul 11, 2026
16 checks passed
@crs48
crs48 deleted the claude/background-color-consistency-910697 branch July 11, 2026 22:00
github-actions Bot added a commit that referenced this pull request Jul 11, 2026
crs48 added a commit that referenced this pull request Jul 12, 2026
Follow-up to #474 (0299 two-plane backgrounds): chrome islands —
sidebar, status bar, dock, right context panel, dev-tools toggle, mobile
shell islands — no longer cast a drop shadow. They sit flat on the
canvas with the hairline border alone drawing the edge. Overlays
(modals, menus, dev-tools panel) keep `shadow-pop` so they still read as
floating.

Removes the `--isl-shadow` token (both `.wb-root` scopes), the
`shadow-isl` Tailwind mapping, and all `shadow-isl` class uses; updates
the DESIGN_SYSTEM.md doctrine accordingly.

Verified live: chrome island `box-shadow` computes to `none`; the
dev-tools overlay retains its `--pop-shadow` values.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant