Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/frontend/packages/dashboard/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
iris 38aa5f77f4 frontend: guard hive-menu/hive-agent-menu connectedCallback against reconnect
Fixes hyperhive#2893: 'Element.attachShadow: Unable to re-attach to
existing ShadowDOM', crashing swarm.js's live-update render path.

A custom element's connectedCallback fires again on a same-document
*move* (insertBefore/append repositioning an already-connected node
runs the removal + insertion steps for its whole subtree), not just
on a fresh mount. swarm.js's row-fingerprint cache reuses + reorders
existing <li> subtrees on live updates -- reordering an unchanged,
cached row moves its already-initialised <hive-agent-menu>/<hive-menu>
without ever really detaching it from the document, so connectedCallback
re-runs full setup on an instance that's already set up. attachShadow()
throws unconditionally if the host already has a shadow root, and
HiveAgentMenu's unconditional child-menu creation would have appended a
second <hive-menu> on top of the first, doubling the dropdown, once the
shadow-attach crash itself was out of the way.

Both connectedCallbacks now bail early if already initialised
(shadowRoot present / _menu already built). Reproduced the crash and
duplicate-menu bug with an unguarded control copy of both files driven
via headless Chromium (simulating the exact row-reorder move), then
confirmed the guarded version throws nothing, keeps the same shadowRoot
object identity across the move, and doesn't duplicate the dropdown.
2026-08-01 01:57:06 +02:00
..
agent-menu frontend: guard hive-menu/hive-agent-menu connectedCallback against reconnect 2026-08-01 01:57:06 +02:00
builds.css feat(builds): add /builds.html — build lifecycle hub (closes #1999) 2026-06-28 23:56:11 +02:00
builds.html fix(dashboard): replace stale 'manager' with 'submitter' in approval UI text 2026-07-02 14:15:07 +02:00
builds.js refactor(#2808): the wire state enum is the scheduler's own 2026-07-27 21:50:24 +02:00
call.js frontend: drop the Panel forwarding object and the side-panel-body compat class 2026-08-01 00:58:53 +02:00
colors.css refactor(frontend): base16 theme contract in a swappable colors.css 2026-06-08 21:24:07 +02:00
common.css frontend: drop the Panel forwarding object and the side-panel-body compat class 2026-08-01 00:58:53 +02:00
common.js frontend: drop the Panel forwarding object and the side-panel-body compat class 2026-08-01 00:58:53 +02:00
core.css fix(core): add card styling for K3PT ST4T3 and 1NFR4 entries 2026-07-26 17:23:52 +02:00
core.html feat: add infra container start/stop/restart tab to C0R3 page 2026-07-12 03:12:44 +02:00
core.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
credentials.css feat: rename matrix-accounts page to credentials, add github PAT tab 2026-07-11 12:40:13 +02:00
credentials.html extra-forges: fully dashboard-provisioned, no host config 2026-07-14 18:38:55 +02:00
credentials.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
dashboard.css frontend: move hive-menu's reachable dropdown/trigger chrome out of the caller stylesheet 2026-07-31 23:24:22 +02:00
dashboard.html frontend: unify dashboard + agent side panel into shared hive-side-panel 2026-08-01 00:58:53 +02:00
flow.css chore(frontend): scrub pre-existing issue-tag refs from source comments 2026-06-09 00:24:49 +02:00
flow.html refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
flow.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
home.css dashboard(home): matrix-rain backdrop on the H0M3 page 2026-06-17 21:46:25 +02:00
home.js fix(#2854): slice the store-path hash from the front, not the pname suffix from the back 2026-07-31 19:37:41 +02:00
index.html dashboard: surface the hive's hyperhive rev on the H0M3 start page 2026-07-31 19:32:20 +02:00
logs.css fix(logs): log output scrolls internally instead of scrolling the page 2026-07-26 17:20:48 +02:00
logs.html dashboard: move infra container logs to dedicated INFRA tab 2026-07-26 15:24:33 +02:00
logs.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
permissions.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
schedules.js frontend: extract themed dialogs + async-form handler to shared, wire agent UI 2026-07-27 18:55:17 +02:00
settings.css refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
settings.html refactor(frontend): extract the page-chrome into @hive/shared (#1464 step 3) 2026-06-09 09:13:35 +02:00
settings.js refactor(frontend): move S3TT1NGS to its own /settings.html page (#1464 step 2) 2026-06-08 23:44:22 +02:00
state.js dashboard: extract operator-inbox + approvals into call.js (#1451) 2026-06-16 10:22:53 +02:00
stats.css fix(stats): move window selector into the page header tab bar 2026-07-26 17:21:21 +02:00
stats.html add per-agent and hive-wide skill invocation stats 2026-07-27 23:53:07 +02:00
stats.js add per-agent and hive-wide skill invocation stats 2026-07-27 23:53:07 +02:00
stream-worker.js refactor(fe): trim >30-line comment blocks (second pass, #2077) 2026-06-29 01:05:53 +02:00
swarm.js frontend: split hive-agent-menu's generic dropdown mechanics into a shared hive-menu component 2026-07-31 23:24:22 +02:00
system-sections.css frontend: render Skipped node state as a quiet 'not run' glyph 2026-07-27 21:06:18 +02:00
tabs.js frontend: drop the Panel forwarding object and the side-panel-body compat class 2026-08-01 00:58:53 +02:00
theme.css refactor(frontend): base16 theme contract in a swappable colors.css 2026-06-08 21:24:07 +02:00
util.js dashboard frontend: consume rfc3339 timestamps from the api 2026-07-02 22:28:30 +02:00