Skip to content

ui: the platform shells take the Harmonia 3 reference layout the generated shell has (#7428) - #7432

Merged
delchev merged 1 commit into
masterfrom
issue-7428-platform-shells-harmonia3
Sep 17, 2026
Merged

delchev merged 1 commit into
masterfrom
issue-7428-platform-shells-harmonia3

Conversation

@delchev

@delchev delchev commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Cause

#7400 moved the generated application shell to the Harmonia 3 reference layout and made it drop its own gutter and card chrome in embedded mode on purpose: the host owns the frame. The host never drew it. The platform shells still carried the 1.x structure - an x-h-split with a permanently locked, gutterless sidebar panel, --sidebar-width: 100% to fill it, a plain toolbar, the hosted iframe in a bare flex div - so the same form looked like the old stack inside the application shell and like the reference in its own.

Change

The six sidebar shells (application, personal, partner, admin, monitoring, database) now share the generated shell's structure:

  • bg-sidebar body; the ONE sidebar element in a plain shrink-0 flex slot as a direct peer, moved into the x-h-sheet drawer below 1024px; x-h-sidebar / header / footer data-borderless.
  • Content column min-w-0 flex-1 overflow-hidden with a p-2 gutter around a rounded-xl border shadow-sm <main> card, both dropped when narrow through a :class binding. The hosted iframe sits inside the card, so an embedded app inherits the frame it deliberately does not draw.
  • Brand row as x-h-sidebar-header-item (the projection product-switcher stays), the sidebar content as the <nav> landmark, the logged-in user as the initials x-h-avatar with x-h-menu-label in place of the presentational li + tile (id="user-menu-trigger" kept), a route-loading x-h-progress bar.
  • Each shell's own js/appShell.js: hiddenPanels.left -> isSmallScreen, isOpen -> showSidebarSheet, $refs.sidebarPanel/overlay -> sidebarSlot/sidebarSheet, routeLoading off pinecone:start / :end / :fetch-error, the refreshIcons no-op removed with its call sites. These are per-shell copies loaded only by their own page, so unlike the shared runtime (ui: the shared shell runtime dropped the names every already-generated app shell binds - embedded apps show their own sidebar (#7400) #7427) they carry no cross-vintage contract.

The builder shell is deliberately untouched: it has no sidebar, and its x-h-split is the resizable chat/canvas pane - the one use Split is for. Every stable id the ITs pin (monitoring-*, user-menu-trigger, #app, the iframe) is unchanged.

Verification

  • HarmoniaContractIT green: every x-h-* directive and utility class of the six pages checked against the pinned 3.1.2 webjar.
  • PerspectiveGroupAggregationIT, ShellSwitcherIT, MonitoringShellIT, DatabaseShellIT green headless (the first run had two Chrome session/renderer errors while a second IT run drove Chrome on the same machine; both classes passed in full on rerun).
  • mvn -T 1C formatter:validate with the cache wiped.
  • Not verified: a real browser look at 1440px / 900px, and an embedded generated app inside the new frame - please eyeball once before merging.

Fixes #7428

🤖 Generated with Claude Code

…rated shell has (#7428)

#7400 moved the generated application shell to the Harmonia 3 reference layout
and, in embedded mode, made it drop its own gutter and card chrome on purpose:
the host owns the frame. The host never drew it. The platform shells still
carried the 1.x structure - an x-h-split with a permanently locked, gutterless
sidebar panel, --sidebar-width: 100% to fill it, a plain transparent toolbar and
the hosted iframe in a bare flex div - so the same form looked like the old stack
inside the application shell and like the reference in its own.

The six sidebar shells (application, personal, partner, admin, monitoring,
database) now share the generated shell's structure: a bg-sidebar body, the ONE
sidebar element in a plain shrink-0 flex slot as a direct peer, moved into the
x-h-sheet drawer below 1024px; the content column min-w-0 flex-1 with a p-2
gutter around a rounded-xl border shadow-sm <main> card, both dropped when
narrow through a :class binding; the brand row as x-h-sidebar-header-item (the
projection product-switcher stays as it was); the sidebar content as the <nav>
landmark x-h-sidebar carries no role for; the logged-in user as the initials
x-h-avatar with x-h-menu-label in place of the presentational li + tile; and a
route-loading x-h-progress bar. The hosted iframe sits INSIDE the card, so an
embedded app inherits the frame it deliberately does not draw.

Each shell's js/appShell.js is renamed after the layout that is gone:
hiddenPanels.left -> isSmallScreen, isOpen -> showSidebarSheet,
$refs.sidebarPanel/overlay -> sidebarSlot/sidebarSheet; routeLoading comes off
pinecone:start / :end / :fetch-error; the refreshIcons no-op goes with its call
sites. These files are per-shell copies loaded only by their own page, so unlike
the shared runtime (#7427) they carry no cross-vintage contract and need no
aliases.

The builder shell is deliberately untouched: it has no sidebar, and its
x-h-split is the resizable chat/canvas pane - the one use Split is for.

Verified: HarmoniaContractIT (every directive and utility class of the six pages
against the pinned 3.1.2 webjar), PerspectiveGroupAggregationIT, ShellSwitcherIT
(user-menu-trigger on the avatar), MonitoringShellIT and DatabaseShellIT green
headless; mvn formatter:validate with the cache wiped. Not verified in a
browser at 1440px / 900px.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@delchev
delchev merged commit dbb3079 into master Sep 17, 2026
10 checks passed
@delchev
delchev deleted the issue-7428-platform-shells-harmonia3 branch September 17, 2026 14:29
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.

ui: the platform shells still carry the pre-Harmonia-3 split layout, so an embedded app looks older than in its own shell (#7400 follow-up)

1 participant