You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Redesign the bottom threat bar into a context-reactive ad-hoc report bar with exactly 4 sections, one per context type. Only the section matching the active context is enabled and expanded; the other three are grayed out and non-interactive.
Current state
The bottom bar (.threat-bar) currently renders threat-slot elements with hardcoded content (fast relay suspects / threat indicators). It is not connected to the context driver system (getContextDriver()).
Target design
Replace the current 4 threat slots with 4 fixed context sections:
Section
Label
Icon
Active when
General
NETWORK OVERVIEW
🌐
getContextDriver().type === "general"
Message
MESSAGE REPORT
📨
getContextDriver().type === "message"
Channel
CHANNEL REPORT
⚡
getContextDriver().type === "channel"
Node
NODE REPORT
🔵
getContextDriver().type === "node"
Each section is always visible in the bar. When inactive:
Label and icon are dimmed (opacity: 0.25, pointer-events: none)
A subtle lock/dash indicator shows it is not available in this context
Summary
Redesign the bottom threat bar into a context-reactive ad-hoc report bar with exactly 4 sections, one per context type. Only the section matching the active context is enabled and expanded; the other three are grayed out and non-interactive.
Current state
The bottom bar (
.threat-bar) currently rendersthreat-slotelements with hardcoded content (fast relay suspects / threat indicators). It is not connected to the context driver system (getContextDriver()).Target design
Replace the current 4 threat slots with 4 fixed context sections:
getContextDriver().type === "general"getContextDriver().type === "message"getContextDriver().type === "channel"getContextDriver().type === "node"Each section is always visible in the bar. When inactive:
opacity: 0.25,pointer-events: none)When active:
Implementation
index.html.threat-slotHTML structure with 4.report-slotdivs, each withdata-context="general|message|channel|node".report-slot.disabled(dimmed, no pointer events) and.report-slot.active(highlighted accent border-top matching context color)app.jsupdateContextBar()(or addupdateReportBar()called from it) to:getContextDriver().type.report-slot: add/removedisabledclass based on whetherdata-contextmatches active typebuildSuspectsHtml()/ threat slot rendering logic (move suspects content into the General report, issue Ad-hoc report: General context — network overview with rankings, charts and anomaly insights #14)Acceptance criteria
updateContextBar()triggers the bar state update on every context change