Skip to content

fix(ui): restore shell-nav + sidebar-shell wrappers (#2517)#2518

Merged
alexey-pelykh merged 1 commit intomainfrom
fix/2517-sidebar-wrappers
Apr 24, 2026
Merged

fix(ui): restore shell-nav + sidebar-shell wrappers (#2517)#2518
alexey-pelykh merged 1 commit intomainfrom
fix/2517-sidebar-wrappers

Conversation

@alexey-pelykh
Copy link
Copy Markdown

Summary

Rationale

Before the fix, .sidebar's flex: 1 had no flex parent (missing .shell-nav) and .sidebar-nav's overflow-y: auto was absent, so <aside class="sidebar"> was auto-placed into the wrong CSS grid cell and nav-sections were clipped by overflow: hidden — only the CHAT group header was visible. Topbar-right (Health/Version pills, theme toggle) and chat panel content were also missing as side-effects of the broken grid occupancy.

CSS rules (.shell-nav @ layout.css:311, .sidebar-shell @ :338, .sidebar-shell__body @ :370, .sidebar-nav @ :423) were already present in the repo — only the render markup was out of sync.

Design notes

Minimum-viable fix. Optional upstream improvements explicitly deferred:

Test plan

  • pnpm tsgo: clean (no output)
  • pnpm check: pass — format:check 5110 files OK, oxlint 0 warnings / 0 errors on 3926 files, css-class-drift 0 orphans / 0 clusters (all new wrapper classes resolve to layout.css rules)
  • pnpm canvas:a2ui:bundle: built successfully
  • pnpm test: 7014 passed / 3 skipped / 0 failed across 800 test files
  • Visual smoke on deployed: load /chat, /overview, /agents in light + dark themes — full sidebar visible with all 4 groups (Chat / Control / Agent / Settings) + Resources; topbar-right pills and chat panel render correctly

Fixes #2517

🤖 Generated with Claude Code

…sidebar — sidebar markup mismatch with upstream CSS after #2501 migration (#2517)

After #2501 / #2509 adopted upstream's `.sidebar` / `.nav-section` class
vocabulary, the sidebar nav was clipped to a single group header on
deployed builds. Upstream's `.sidebar` rule is designed to be wrapped in
`.shell-nav` (grid-area: nav) and to internally use `.sidebar-shell`
(the flex container that gives `.sidebar`'s `flex: 1` something to fill)
with a scrollable `.sidebar-nav` child.

The fork adopted the class names but not the markup hierarchy, so
`<aside class="sidebar">` was auto-placed into the wrong grid cell and
`overflow: hidden` clipped the nav-sections.

Wrap `<aside class="sidebar">` in `<div class="shell-nav">` and
restructure internal hierarchy as
`<div class="sidebar-shell"><div class="sidebar-shell__body"><nav class="sidebar-nav">...</nav></div></div>`.
No CSS changes — the rules already exist in layout.css; only the
markup was out of sync.

Optional upstream improvements (moving brand into
`.sidebar-shell__header`, semantic `<section>` tags, and a
`.nav-section--links` modifier class) deferred — not required for the
regression fix and the `.nav-section--links` class has no CSS rule
(would fail the #2503 css-class-drift gate).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@alexey-pelykh alexey-pelykh enabled auto-merge (squash) April 24, 2026 07:37
@alexey-pelykh alexey-pelykh merged commit b495ae8 into main Apr 24, 2026
15 checks passed
@alexey-pelykh alexey-pelykh deleted the fix/2517-sidebar-wrappers branch April 24, 2026 07:43
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.

fix(ui): restore shell-nav + sidebar-shell wrappers — sidebar layout broken after #2501 migration

1 participant