Stabilize WebUI mount geometry

Add responsive shell styling for a 250px desktop sidebar slot that yields to the mounted left panel and collapses on mobile. Reserve the welcome composer's final height while nested input components hydrate, and document that component-local layout contract.

Alessandro committed Jul 23, 2026 at 15:25 UTC dec6df661f839040748221f828f5f792257892f0
3 files changed +19
webui/components/welcome/AGENTS.md
+1
@@ -18,6 +18,7 @@
18 - Do not show setup prompts for already configured plugins when backend status can prevent it.
19 - Do not replace the welcome composer with blocking model setup UI; missing model setup is deferred to the chat thread on first send.
20 - The welcome screen mounts the shared chat composer to start a new chat; keep it mutually exclusive with the normal chat input DOM.
21 +- Reserve the welcome composer's final minimum height before its nested input components hydrate.
22 - Render `system-resources` as the dedicated System Resources panel, not as a generic alert banner.
23 - Utility quick actions from welcome must keep the first screen intact; use modal/floating entry points instead of docking the right canvas beside welcome content.
24
webui/components/welcome/welcome-screen.html
+1
@@ -237,6 +237,7 @@
237
238 .welcome-composer {
239 width: 100%;
240 + min-height: 4.9rem;
241 }
242
243 .welcome-composer > x-component,
webui/index.css
+17
@@ -311,6 +311,23 @@ img {
311 overflow: hidden;
312 }
313
314 +.sidebar-slot {
315 + flex: 0 0 250px;
316 + min-width: 250px;
317 + height: 100%;
318 +}
319 +
320 +.sidebar-slot:has(#left-panel) {
321 + display: contents;
322 +}
323 +
324 +@media (max-width: 768px) {
325 + .sidebar-slot {
326 + flex-basis: 0;
327 + min-width: 0;
328 + }
329 +}
330 +
331 .panel {
332 display: -webkit-flex;
333 display: flex;