// web/src/components/Message.tsx import React from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import type { Message as MessageType, LearningMode } from "../App"; interface MessageProps { message: MessageType; // existing props you are already passing in ChatArea showSenderInfo?: boolean; userId?: string; isLoggedIn: boolean; learningMode: LearningMode; docType?: string; lastUserText?: string; } export function Message({ message, showSenderInfo, userId, isLoggedIn, learningMode, docType, lastUserText, }: MessageProps) { const isUser = message.role === "user"; // If you already have avatar / sender rendering logic, keep it. // The only critical change is content rendering below. return (
{!isUser && (
C
)}
{/* Optional sender info (group mode) */} {showSenderInfo && message.sender && !isUser && (
{message.sender.name}
)}
{/* ✅ THE FIX: render markdown instead of plain text */} {message.content || ""} {/* If you already render references, keep your original block here */} {message.references && message.references.length > 0 && (
References
{message.references.map((r, idx) => (
{r}
))}
)} {/* If you already have feedback buttons inside Message, keep them here. Do not change logic—only keep UI. */}
{isUser && (
U
)}
); }