diff --git a/apps/desktop/src/app/chat/index.tsx b/apps/desktop/src/app/chat/index.tsx index b9f0b1a75c2..fb8175102b0 100644 --- a/apps/desktop/src/app/chat/index.tsx +++ b/apps/desktop/src/app/chat/index.tsx @@ -499,7 +499,7 @@ export function ChatView({ )} {showChatBar && } {/* Vibe hearts rise from the composer only when no pet is out (else - they play on the pet). DEV Shift+H to preview; not wired to ily/<3 yet. */} + they play on the pet). Fired by the core `reaction` event. */} {!petPresent && ( emitter.burst(count) /** - * Fire a vibe burst from anywhere (hotkey, future `ily`/`<3` wiring). Routes to - * where the affection should land: + * Fire a vibe burst (from the core `reaction` event). Routes to where the + * affection should land: * - pet popped out → forward to the overlay window + celebrate (mirrored) * - pet in-window → play here (on the pet) + celebrate * - no pet → play here (composer) @@ -75,29 +75,6 @@ export const burstVibeHearts = (count?: number) => { } } -/** DEV-only preview: Shift+H, firing even while the composer is focused. Mount - * once in an always-present component (FloatingPet) — a single listener. */ -export function useHeartPreviewHotkey() { - useEffect(() => { - if (!import.meta.env.DEV) { - return - } - - const onKeyDown = (e: KeyboardEvent) => { - if (!e.shiftKey || e.repeat || e.altKey || e.ctrlKey || e.metaKey || e.code !== 'KeyH') { - return - } - - e.preventDefault() - burstVibeHearts() - } - - window.addEventListener('keydown', onKeyDown) - - return () => window.removeEventListener('keydown', onKeyDown) - }, []) -} - export interface HeartFieldProps { config?: Partial className?: string diff --git a/apps/desktop/src/components/pet/floating-pet.tsx b/apps/desktop/src/components/pet/floating-pet.tsx index 3d89c57c460..399ed1bf485 100644 --- a/apps/desktop/src/components/pet/floating-pet.tsx +++ b/apps/desktop/src/components/pet/floating-pet.tsx @@ -4,7 +4,7 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { useGatewayRequest } from '@/app/gateway/hooks/use-gateway-request' import { useOnProfileSwitch } from '@/app/hooks/use-on-profile-switch' import { useRouteOverlayActive } from '@/app/hooks/use-route-overlay-active' -import { PetHeartField, useHeartPreviewHotkey } from '@/components/chat/vibe-hearts' +import { PetHeartField } from '@/components/chat/vibe-hearts' import { persistString, storedString } from '@/lib/storage' import { $petAtRest, @@ -121,10 +121,6 @@ export function FloatingPet() { const roamDir = useStore($petRoamDir) const routeOverlayOpen = useRouteOverlayActive() - // DEV Shift+H heart preview lives here — FloatingPet is always mounted - // (app-shell), so one listener covers every route whether a pet is out or not. - useHeartPreviewHotkey() - const [position, setPosition] = useState(loadPosition) const containerRef = useRef(null) // The facing mirror lives on the sprite wrapper, not the container, so the