From 1406ce3585754de1001aed847e0921cd595d5ba5 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Sat, 13 Jun 2026 11:46:15 +0700 Subject: [PATCH] chore(auto): task completed - unknown --- services/frontend/src/entities/guild/types.ts | 1 - services/frontend/src/entities/media/types.ts | 1 - services/frontend/src/entities/ui/types.ts | 1 - services/frontend/src/entities/voice/types.ts | 1 - .../live/components/ActiveSpeakers.tsx | 5 +- .../live/components/RecordingsSubPanel.tsx | 3 +- .../messages/components/ImageGrid.tsx | 4 +- .../messages/components/MessageFeed.tsx | 3 +- services/frontend/src/shared/api/client.ts | 5 -- .../src/shared/hooks/useAudioTransmit.ts | 4 +- .../src/shared/hooks/useGsapTransition.ts | 2 +- .../src/shared/hooks/useMascotChat.ts | 4 +- .../frontend/src/shared/hooks/useUIState.ts | 2 +- services/frontend/src/shared/logger.ts | 49 ------------------- .../frontend/src/shared/ui/MobileTabBar.tsx | 2 +- services/frontend/src/shared/ui/index.ts | 4 -- services/frontend/src/shared/ws/socket.ts | 1 - .../frontend/src/widgets/DashboardLayout.tsx | 2 +- services/frontend/src/widgets/Header.tsx | 2 +- services/frontend/src/widgets/Sidebar.tsx | 2 +- 20 files changed, 19 insertions(+), 79 deletions(-) delete mode 100644 services/frontend/src/entities/guild/types.ts delete mode 100644 services/frontend/src/entities/media/types.ts delete mode 100644 services/frontend/src/entities/ui/types.ts delete mode 100644 services/frontend/src/entities/voice/types.ts delete mode 100644 services/frontend/src/shared/logger.ts diff --git a/services/frontend/src/entities/guild/types.ts b/services/frontend/src/entities/guild/types.ts deleted file mode 100644 index a4aa5ac..0000000 --- a/services/frontend/src/entities/guild/types.ts +++ /dev/null @@ -1 +0,0 @@ -export { Channel, Guild } from "../../shared/api/client"; diff --git a/services/frontend/src/entities/media/types.ts b/services/frontend/src/entities/media/types.ts deleted file mode 100644 index 709eaf2..0000000 --- a/services/frontend/src/entities/media/types.ts +++ /dev/null @@ -1 +0,0 @@ -export { MediaItem, MediaMode, MediaState } from "../../shared/api/client"; diff --git a/services/frontend/src/entities/ui/types.ts b/services/frontend/src/entities/ui/types.ts deleted file mode 100644 index d79eb6e..0000000 --- a/services/frontend/src/entities/ui/types.ts +++ /dev/null @@ -1 +0,0 @@ -export { DashboardTab, UIState } from "../../shared/api/client"; diff --git a/services/frontend/src/entities/voice/types.ts b/services/frontend/src/entities/voice/types.ts deleted file mode 100644 index 7fa67a7..0000000 --- a/services/frontend/src/entities/voice/types.ts +++ /dev/null @@ -1 +0,0 @@ -export { ActiveSpeaker, VoiceStatus } from "../../shared/api/client"; diff --git a/services/frontend/src/features/live/components/ActiveSpeakers.tsx b/services/frontend/src/features/live/components/ActiveSpeakers.tsx index 76fb79b..fd70ee3 100644 --- a/services/frontend/src/features/live/components/ActiveSpeakers.tsx +++ b/services/frontend/src/features/live/components/ActiveSpeakers.tsx @@ -1,5 +1,6 @@ import type { ActiveSpeaker } from "../../../shared/api/client"; -import { EmptyStateMascot, Skeleton } from "../../../shared/ui"; +import { Skeleton } from "../../../shared/ui"; +import { EmptyStateMascot } from "../../../widgets/mascot/MascotImage"; interface ActiveSpeakersProps { speakers: ActiveSpeaker[]; @@ -38,7 +39,7 @@ export function ActiveSpeakers({ speakers }: ActiveSpeakersProps) { ); } -export function ActiveSpeakersSkeleton() { +function ActiveSpeakersSkeleton() { return (
{[1, 2, 3].map((i) => ( diff --git a/services/frontend/src/features/live/components/RecordingsSubPanel.tsx b/services/frontend/src/features/live/components/RecordingsSubPanel.tsx index 12ca7be..75bd24b 100644 --- a/services/frontend/src/features/live/components/RecordingsSubPanel.tsx +++ b/services/frontend/src/features/live/components/RecordingsSubPanel.tsx @@ -5,7 +5,8 @@ import { useEffect, useState } from "react"; import type { VoiceRecording } from "../../../shared/api/client"; import { listRecordings } from "../../../shared/api/client"; import { formatBytes, formatDate } from "../../../shared/lib/utils"; -import { Badge, Button, EmptyStateMascot, Skeleton } from "../../../shared/ui"; +import { Badge, Button, Skeleton } from "../../../shared/ui"; +import { EmptyStateMascot } from "../../../widgets/mascot/MascotImage"; export function RecordingsSubPanel() { const [recordings, setRecordings] = useState([]); diff --git a/services/frontend/src/features/messages/components/ImageGrid.tsx b/services/frontend/src/features/messages/components/ImageGrid.tsx index dfa7f4d..d4fc0ad 100644 --- a/services/frontend/src/features/messages/components/ImageGrid.tsx +++ b/services/frontend/src/features/messages/components/ImageGrid.tsx @@ -1,6 +1,6 @@ import { parseMetadata } from "../../../entities/message/types"; import type { MessageRecord } from "../../../shared/api/client"; -import { EmptyStateMascot } from "../../../shared/ui"; +import { EmptyStateMascot } from "../../../widgets/mascot/MascotImage"; interface ImageItem { url: string; @@ -75,7 +75,7 @@ export function ImageGrid({ messages }: { messages: MessageRecord[] }) {
{images.map((image, index) => { // Stable key using message.id + url - const stableKey = `${image.message.id}-${image.kind}-${index}`; + const stableKey = `${image.message.id}-${image.kind}-${image.url}`; return ( (path: string, init?: RequestInit): Promise { return result; } -export function getWebSocketURL(): string { - return BE_WS_URL; -} - export function getAPIURL(): string { return BE_API_URL; } diff --git a/services/frontend/src/shared/hooks/useAudioTransmit.ts b/services/frontend/src/shared/hooks/useAudioTransmit.ts index a1a5fc4..56a3c2c 100644 --- a/services/frontend/src/shared/hooks/useAudioTransmit.ts +++ b/services/frontend/src/shared/hooks/useAudioTransmit.ts @@ -1,10 +1,10 @@ // ─── Audio transmit hook — captures mic, encodes to PCM, sends via WebSocket ── import { useCallback, useRef, useState } from "react"; import { getAPIURL } from "../api/client.js"; -import { createChildLogger } from "../logger.js"; +import { createLogger } from "../lib/logger"; const SAMPLE_RATE = 24000; -const logger = createChildLogger("useAudioTransmit"); +const logger = createLogger("useAudioTransmit"); async function sendTransmitCommand(command: string): Promise { // Send via HTTP API (kept as exported function for backward compatibility) diff --git a/services/frontend/src/shared/hooks/useGsapTransition.ts b/services/frontend/src/shared/hooks/useGsapTransition.ts index 17251ee..84bdebd 100644 --- a/services/frontend/src/shared/hooks/useGsapTransition.ts +++ b/services/frontend/src/shared/hooks/useGsapTransition.ts @@ -99,7 +99,7 @@ export function useGsapTransition(tabKey: string) { return { pageRef, animateIn, animateOut }; } -export function gsapCardHover() { +function gsapCardHover() { return { onMouseEnter: (e: React.MouseEvent) => { gsap.to(e.currentTarget, { diff --git a/services/frontend/src/shared/hooks/useMascotChat.ts b/services/frontend/src/shared/hooks/useMascotChat.ts index a1998f9..a4f2031 100644 --- a/services/frontend/src/shared/hooks/useMascotChat.ts +++ b/services/frontend/src/shared/hooks/useMascotChat.ts @@ -1,9 +1,9 @@ import { useCallback, useState } from "react"; import type { ChatResponse } from "../api/client"; import { request } from "../api/client"; -import { createChildLogger } from "../logger"; +import { createLogger } from "../lib/logger"; -const logger = createChildLogger("useMascotChat"); +const logger = createLogger("useMascotChat"); export interface ChatContext { messageCount: number; diff --git a/services/frontend/src/shared/hooks/useUIState.ts b/services/frontend/src/shared/hooks/useUIState.ts index 61108ff..b3c69fa 100644 --- a/services/frontend/src/shared/hooks/useUIState.ts +++ b/services/frontend/src/shared/hooks/useUIState.ts @@ -1,5 +1,5 @@ import { useCallback } from "react"; -import type { UIState } from "../../entities/ui/types"; +import type { UIState } from "../api/client"; import { uiStateValidator, useLocalStorage } from "./useLocalStorage"; export function useUIState() { diff --git a/services/frontend/src/shared/logger.ts b/services/frontend/src/shared/logger.ts deleted file mode 100644 index d1fac64..0000000 --- a/services/frontend/src/shared/logger.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Simple logger for frontend - structured logging wrapper -type LogLevel = "debug" | "info" | "warn" | "error"; - -interface LogContext { - [key: string]: unknown; -} - -class Logger { - constructor(private context: string) {} - - private log(level: LogLevel, message: string, context?: LogContext) { - const timestamp = new Date().toISOString(); - const logData = { - level, - context: this.context, - message, - timestamp, - ...context, - }; - - // Use appropriate console method - const consoleMethod = console[level] || console.log; - consoleMethod( - `[${level.toUpperCase()}] [${this.context}]`, - message, - context || "", - ); - } - - debug(message: string, context?: LogContext) { - this.log("debug", message, context); - } - - info(message: string, context?: LogContext) { - this.log("info", message, context); - } - - warn(message: string, context?: LogContext) { - this.log("warn", message, context); - } - - error(message: string, context?: LogContext) { - this.log("error", message, context); - } -} - -export function createChildLogger(context: string): Logger { - return new Logger(context); -} diff --git a/services/frontend/src/shared/ui/MobileTabBar.tsx b/services/frontend/src/shared/ui/MobileTabBar.tsx index e859025..7b9a01b 100644 --- a/services/frontend/src/shared/ui/MobileTabBar.tsx +++ b/services/frontend/src/shared/ui/MobileTabBar.tsx @@ -1,5 +1,5 @@ import { LayoutDashboard, MessageSquare, Radio } from "lucide-react"; -import type { DashboardTab } from "../../entities/ui/types"; +import type { DashboardTab } from "../api/client"; import { cn } from "../lib/utils"; const tabs: Array<{ id: DashboardTab; label: string; Icon: typeof Radio }> = [ diff --git a/services/frontend/src/shared/ui/index.ts b/services/frontend/src/shared/ui/index.ts index 18facfc..47245f4 100644 --- a/services/frontend/src/shared/ui/index.ts +++ b/services/frontend/src/shared/ui/index.ts @@ -1,9 +1,5 @@ // ─── Shared UI barrel export ──────────────────────────────────────────────── -export { - EmptyStateMascot, - MascotImage, -} from "../../widgets/mascot/MascotImage"; export { Badge } from "./badge"; export { Button } from "./button"; export { diff --git a/services/frontend/src/shared/ws/socket.ts b/services/frontend/src/shared/ws/socket.ts index a386683..451cde5 100644 --- a/services/frontend/src/shared/ws/socket.ts +++ b/services/frontend/src/shared/ws/socket.ts @@ -209,4 +209,3 @@ export function useDashboardSocket(handlers: WsHandlers) { } // Alias for backward compatibility -export { useDashboardSocket as useWsSocket }; diff --git a/services/frontend/src/widgets/DashboardLayout.tsx b/services/frontend/src/widgets/DashboardLayout.tsx index 6aa670a..b8d2820 100644 --- a/services/frontend/src/widgets/DashboardLayout.tsx +++ b/services/frontend/src/widgets/DashboardLayout.tsx @@ -1,6 +1,6 @@ import { motion } from "framer-motion"; import type { ReactNode } from "react"; -import type { DashboardTab } from "../entities/ui/types"; +import type { DashboardTab } from "../shared/api/client"; import type { MessageRecord, VoiceStatus } from "../shared/api/client"; import { fadeSlideUp } from "../shared/hooks/useFramerStagger"; import type { WsStatus } from "../shared/ws/socket"; diff --git a/services/frontend/src/widgets/Header.tsx b/services/frontend/src/widgets/Header.tsx index 9535127..30eebc2 100644 --- a/services/frontend/src/widgets/Header.tsx +++ b/services/frontend/src/widgets/Header.tsx @@ -1,6 +1,6 @@ import { motion } from "framer-motion"; import { Wifi, WifiOff } from "lucide-react"; -import type { DashboardTab } from "../entities/ui/types"; +import type { DashboardTab } from "../shared/api/client"; import type { VoiceStatus } from "../shared/api/client"; import { fadeSlideUp } from "../shared/hooks/useFramerStagger"; import { cn } from "../shared/lib/utils"; diff --git a/services/frontend/src/widgets/Sidebar.tsx b/services/frontend/src/widgets/Sidebar.tsx index 06a7970..c59e530 100644 --- a/services/frontend/src/widgets/Sidebar.tsx +++ b/services/frontend/src/widgets/Sidebar.tsx @@ -1,6 +1,6 @@ import { motion } from "framer-motion"; import { LayoutDashboard, MessageSquare, Radio } from "lucide-react"; -import type { DashboardTab } from "../entities/ui/types"; +import type { DashboardTab } from "../shared/api/client"; import type { MessageRecord } from "../shared/api/client"; import { useMascotChat } from "../shared/hooks/useMascotChat"; import { cn } from "../shared/lib/utils";