bevyengine/bevy · error
DiagnosticsOverlayHeader has been tempered with. Parent was
Error message
DiagnosticsOverlayHeader has been tempered with. Parent was not a DiagnosticsOverlay.
What it means
Panic in drag_by_header: a DiagnosticsOverlayHeader entity's parent lacks the DiagnosticsOverlay component, meaning the header/overlay hierarchy was altered by user code after the plugin spawned it.
Source
Thrown at crates/bevy_dev_tools/src/diagnostics_overlay.rs:439
palettes::tailwind::GRAY_600
.with_alpha(BACKGROUND_COLOR_ALPHA)
.into()
),
)
],
));
}
fn drag_by_header(
mut event: On<PointerDrag>,
mut diagnostics_overlays: Query<&mut Node, With<DiagnosticsOverlay>>,
diagnostics_overlay_headers: Query<&ChildOf, With<DiagnosticsOverlayHeader>>,
) {
let entity = event.entity;
if let Ok(child_of) = diagnostics_overlay_headers.get(entity) {
event.propagate(false);
let Ok(mut node) = diagnostics_overlays.get_mut(child_of.get()) else {
panic!("DiagnosticsOverlayHeader has been tempered with. Parent was not a DiagnosticsOverlay.");
};
let delta = event.delta;
let Val::Px(top) = &mut node.top else {
panic!(
"DiagnosticsOverlay has been tempered with. Node must have `top` using `Val::Px`."
);
};
*top += delta.y;
let Val::Px(left) = &mut node.left else {
panic!(
"DiagnosticsOverlay has been tempered with. Node must have `left` using `Val::Px`."
);
};
*left += delta.x;
}
}
fn collapse_on_click_to_header(View on GitHub (pinned to 396ca72708)
Solutions
- Do not re-parent or despawn the overlay's internal entities
- Recreate the overlay through the plugin if hierarchy changes are needed
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/bevy_dev_tools/src/diagnostics_overlay.rs:439 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20).
Data as JSON: /api/errors/b3e50936af596a0c.
Report an issue: GitHub.