frontend: drop the Panel forwarding object and the side-panel-body compat class

Per mara's review: '2 and maybe 1, but 3 also sounds reasonable on first
glance' (against 3 options I posted). Doing 2 and 1, leaving open()/
openNamed() as-is (option 3, tentative only).

Both dashboard/common.js and agent/app.js now export/use the
<hive-side-panel> element instance directly (sidePanel) instead of a
thin Panel = { open, openNamed, refresh, close } object that existed
purely to keep the old call-site shape unchanged. All 6 real call sites
updated to call the element's own methods directly.

The .side-panel-body class each wrapper stamped onto its own instance,
purely so common.css/agent.css's pre-existing content-styling selectors
kept matching, is gone too -- those selectors now use the element's own
tag name as the root (hive-side-panel .md, hive-side-panel .agent-inbox),
which already uniquely identifies the light-DOM instance without a
compatibility class. Verified via headless Chromium/CDP that the
tag-name selectors resolve correctly with no class needed.

Drive-by: removed an unrelated dead Panel import in call.js.
This commit is contained in:
iris 2026-08-01 00:46:02 +02:00 committed by mara
commit 399a837e17
8 changed files with 73 additions and 90 deletions

View file

@ -901,10 +901,10 @@ pre.diff {
element's own shadow tree) and the styling for the panel's own
content types, which the shared element's shadow tree can never
reach (see @hive/shared/side-panel/hive-side-panel.css's header
comment). `.side-panel-body` below is the compatibility class
app.js's `Panel` wrapper puts directly on its `<hive-side-panel>`
instance so these rules keep reaching the slotted content by
ordinary light-DOM descendant matching. */
comment). The `hive-side-panel .agent-inbox ` rules below use the
element's own tag name as the selector root no compatibility class
needed, the tag name already uniquely identifies the light-DOM
instance app.js's `sidePanel` creates. */
body.side-panel-resizing {
user-select: none;
}
@ -913,12 +913,12 @@ body.side-panel-resizing * { cursor: ew-resize !important; }
legacy <details>-collapsible variant of .agent-inbox is gone, so
here we strip the inbox-only chrome (background, border-left) and
let the panel body's own padding own the framing. */
.side-panel-body .agent-inbox {
hive-side-panel .agent-inbox {
margin: 0;
font-size: inherit;
color: var(--fg);
}
.side-panel-body .agent-inbox ul {
hive-side-panel .agent-inbox ul {
background: transparent;
border-left: 0;
padding: 0;