From 0107aa3ad46bc2dc430f8b029d1c63d38406f240 Mon Sep 17 00:00:00 2001 From: "Victor \"David\" Medina" Date: Wed, 1 Jul 2026 18:31:35 -0400 Subject: [PATCH] refactor(verse): rename HNeuronVisualizer -> FrictionPulseOverlay (retire neuro-jargon) The component is a friction/insight notification overlay, not a neuron visualizer. The 'H-Neuron' name came from a Tsinghua sycophancy paper and describes nothing it does. Renamed to match behavior; event/helper/CSS identifiers renamed in lockstep (contract verified self-contained, zero external callers). One import site updated in app/(verse)/layout.tsx. Companion to VSC-JARGON-1 (gov #262 + website #677); this is the live console component that dispatch explicitly left to the Claude lane. Co-Authored-By: Claude Opus 4.6 (1M context) --- app/(verse)/layout.tsx | 4 ++-- ...isualizer.tsx => FrictionPulseOverlay.tsx} | 20 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) rename components/verse/{HNeuronVisualizer.tsx => FrictionPulseOverlay.tsx} (88%) diff --git a/app/(verse)/layout.tsx b/app/(verse)/layout.tsx index b2b87ce9..846e4330 100644 --- a/app/(verse)/layout.tsx +++ b/app/(verse)/layout.tsx @@ -2,7 +2,7 @@ import { type ReactNode } from "react"; import Link from "next/link"; import { ArrowLeft, Sparkles } from "lucide-react"; import { CouncilThemeProvider } from "@/components/verse/CouncilThemeProvider"; -import { HNeuronVisualizer } from "@/components/verse/HNeuronVisualizer"; +import { FrictionPulseOverlay } from "@/components/verse/FrictionPulseOverlay"; export const dynamic = "force-dynamic"; @@ -43,7 +43,7 @@ export default function VerseLayout({ children }: { children: ReactNode }) { {/* Global Visualizers */} - + ); diff --git a/components/verse/HNeuronVisualizer.tsx b/components/verse/FrictionPulseOverlay.tsx similarity index 88% rename from components/verse/HNeuronVisualizer.tsx rename to components/verse/FrictionPulseOverlay.tsx index b4430fa2..8d1b369c 100644 --- a/components/verse/HNeuronVisualizer.tsx +++ b/components/verse/FrictionPulseOverlay.tsx @@ -4,14 +4,14 @@ import { useState, useEffect, useCallback } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { usePersona } from "../providers/PersonaProvider"; -interface HNeuronEvent { +interface FrictionPulseEvent { id: string; intensity: number; message: string; } -export function HNeuronVisualizer() { - const [event, setEvent] = useState(null); +export function FrictionPulseOverlay() { + const [event, setEvent] = useState(null); const { persona } = usePersona(); const isExecutive = persona === "Executive"; @@ -29,8 +29,8 @@ export function HNeuronVisualizer() { const customEvent = e as CustomEvent<{ message: string; intensity: number }>; triggerFriction(customEvent.detail.message, customEvent.detail.intensity); }; - window.addEventListener("h-neuron-friction", handleFriction); - return () => window.removeEventListener("h-neuron-friction", handleFriction); + window.addEventListener("friction-pulse", handleFriction); + return () => window.removeEventListener("friction-pulse", handleFriction); }, [triggerFriction]); return ( @@ -110,15 +110,15 @@ export function HNeuronVisualizer() { {/* Screen Shake (Tactical only) */} {!isExecutive && ( )} @@ -129,8 +129,8 @@ export function HNeuronVisualizer() { } // Global Trigger Helper -export const triggerHNeuron = (message: string, intensity: number = 1) => { - const event = new CustomEvent("h-neuron-friction", { +export const triggerFrictionPulse = (message: string, intensity: number = 1) => { + const event = new CustomEvent("friction-pulse", { detail: { message, intensity }, }); window.dispatchEvent(event);