fix(plugin): hide native main-views when our panel active; BTE in-main not full-viewport
plugin-tests / test (push) Failing after 5s

JP reported (Chrome) after b43e649:
- Sidebar buttons render ✓
- Adwright: useless middle black panel between sidebar and right area
- BTE: entire left sidebar disappears, only close-X recovers it

ROOT CAUSES:
1. webui CSS has `main.main:not(.showing-X):not(.showing-Y)... > #mainChat
   { display:flex }` which still matches when our class is svrnty-showing-*
   (not in webui's whitelist). Chat rendered alongside our panel → the
   empty void = "middle black panel".
2. BTE overlay was `position:fixed; inset:0; z-index:9991` — covered the
   whole viewport including sidebar + topbar.

FIXES:
- Adwright + BTE CSS now `main.main.svrnty-showing-<id> > .main-view
  { display:none !important }` — explicitly hides every native main-view
  (mainChat, mainSkills, mainTasks, ...) when our panel is active.
- BTE.css: overlay no longer position:fixed. Becomes a normal flex child
  of main when svrnty-showing-bte is active. Sidebar + topbar stay visible.
- bte.js: _openOverlay now appends to <main class="main"> instead of
  document.body. Migrates existing body-mounted overlay on first open.

Karpathy 4 rules: root-caused via direct CSS inspection (not guessing),
two-line CSS change per panel, no new abstractions.
This commit is contained in:
Svrnty
2026-05-24 13:05:38 -04:00
parent b43e6496f5
commit 69e575ca59
3 changed files with 42 additions and 15 deletions
+24 -7
View File
@@ -17,18 +17,35 @@
/* ── Launcher removed — sidebar nav (svrnty_nav.js) opens BTE now ──────── */
.svrnty-bte-launcher { display: none !important; }
/* ── Full-screen overlay panel ────────────────────────────────────────────── */
.svrnty-bte-overlay {
position: fixed;
inset: 0;
z-index: 9991;
background: var(--bg);
/* ── Panel mounted inside <main>; sidebar stays visible ────────────────── */
/* Default hidden. Shown only when sidebar button activates us.
!important hides native .main-view siblings so chat doesn't render
alongside (same trick as Adwright panel — webui's default mainChat rule
matches even when our svrnty-* class is set). */
.svrnty-bte-overlay { display: none; }
main.main.svrnty-showing-bte > .main-view {
display: none !important;
}
main.main.svrnty-showing-bte > .svrnty-bte-overlay {
display: grid;
position: static; /* override prior position:fixed */
inset: auto; /* override prior inset:0 */
z-index: auto;
flex: 1 1 100%;
max-width: 100%;
height: 100%;
min-height: 0;
background: var(--bg);
grid-template-rows: auto 1fr;
font-family: var(--font-ui, sans-serif);
color: var(--text);
overflow: hidden;
}
.svrnty-bte-overlay[hidden] { display: none; }
/* hidden attribute still works for programmatic close */
.svrnty-bte-overlay[hidden] { display: none !important; }
/* ── Top toolbar ──────────────────────────────────────────────────────────── */
.svrnty-bte-toolbar {