Skip to content

Agentic UI: Bring back the dark app frame around the content area#4233

Open
bcotrim wants to merge 2 commits into
trunkfrom
stu-1986-bring-back-the-frame
Open

Agentic UI: Bring back the dark app frame around the content area#4233
bcotrim wants to merge 2 commits into
trunkfrom
stu-1986-bring-back-the-frame

Conversation

@bcotrim

@bcotrim bcotrim commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Related issues

How AI was used in this PR

Implemented with Claude Code using the #3975 design preview as reference: it cherry-picked the frame treatment onto trunk, adapted it to the site-centric sidebar (#4191), and updated the tests. Code reviewed and visually verified by me.

Proposed Changes

The Agentic UI currently renders as a single flat surface — the sidebar and main content sit side by side with no visual hierarchy between app chrome and content, which makes it feel like a different app rather than an evolution of Studio.

This brings back "the frame" from the classic Studio UI:

  • A dark chrome surface fills the app window, including the titlebar/traffic-light region.
  • The sidebar (sites, user account) sits directly on the dark chrome — no card or panel behind it — in both color schemes, with its controls resolving against a dark theme scope. In dark mode the chrome goes a step deeper so it still contrasts with content surfaces.
  • The main content area (chat + preview) floats within the frame as a lighter, elevated canvas with rounded corners — the same dark-frame-around-a-light-canvas pattern as wp-admin and the site editor.
  • The exposed chrome doubles as a window drag region; everything inside the content card stays interactive.
  • Hiding the sidebar sends the content full-bleed, so the collapsed state looks the same as today.
Light Dark
image image

Testing Instructions

  1. Enable the Agentic UI beta feature flag and launch Studio (npm start).
  2. Verify the frame: dark surface fills the window including the titlebar region; the content area reads as a lighter rounded card inset within it.
  3. Sidebar: site rows' hover/active/selected highlights are visible on the dark chrome; status indicators and popup menus (create menu, user menu, site context menu) render legibly.
  4. Drag the window from the chrome gaps around the content card and from the sidebar header; buttons and resize handles must not drag the window.
  5. Toggle the sidebar: the card animates to full-bleed and back. Resize the sidebar and the preview split.
  6. Open a site preview and verify it stays contained within the rounded card.
  7. Repeat the pass in both light and dark appearance.
  8. Regression: with the feature flag off, the classic UI is unaffected.

Pre-merge Checklist

  • Have you checked for TypeScript, React or other console errors?

@bcotrim bcotrim self-assigned this Jul 16, 2026
…the-frame

# Conflicts:
#	apps/ui/src/components/sidebar-layout/index.tsx
@bcotrim
bcotrim requested review from a team and katinthehatsite July 16, 2026 15:24
@wpmobilebot

Copy link
Copy Markdown
Collaborator

📊 Performance Test Results

Comparing 27b6702 vs trunk

app-size

Metric trunk 27b6702 Diff Change
App Size (Mac) 1352.96 MB 1352.96 MB +0.00 MB ⚪ 0.0%

site-editor

Metric trunk 27b6702 Diff Change
load 1080 ms 1092 ms +12 ms ⚪ 0.0%

site-startup

Metric trunk 27b6702 Diff Change
siteCreation 7000 ms 7008 ms +8 ms ⚪ 0.0%
siteStartup 2351 ms 2360 ms +9 ms ⚪ 0.0%

Results are median values from multiple test runs.

Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff)

}: PreviewSplitFrameProps ) {
const showPreview = previewOpen && preview != null;
const { rootRef, contentWidthVar, isResizing, handleProps } = usePreviewSplit( { showPreview } );
// The inset frame reads as chrome that belongs with the sidebar; when the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment can probably be dropped: the class name rootFrameless + the CSS already seem to explain this

--panel-frame-gap: 12px;
--panel-frame-radius: 10px;

/* Border-box so the 1px frame border stays inside the calculated height —

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also seems to be a standard box-sizing explanation

hard stroke — especially against dark page content in the preview. */
border: 1px solid rgb(255 255 255 / 18%);
border-radius: var(--panel-frame-radius);
/* Ease in/out of the frameless state alongside the sidebar's 150ms

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The property is self-explanatory so I would drop this as well

overflow: auto;
position: relative;
isolation: isolate;
/* Continues the chrome canvas into the inset-frame gaps around the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that background-color + drag region are self-evident so I would drop this comment as well

@katinthehatsite katinthehatsite left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed two small issues but they can be solved outside of this PR.

  • there is no padding on the right on the action picker so it looks too close to the border:
Image
  • the screen to add a site has no drag zones:
Image

I also left some comments regarding cleaning up self-explanatory comments. Otherwise, I think the changes are good to go so I will approve them

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.

3 participants