From 0bfe77f9f19bbc316ec1db219ada569141588a97 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 21:18:37 +0000 Subject: [PATCH 1/4] Initial plan From 7cf9a9f11a84d9526536b6816a02a97383de923b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 21:29:56 +0000 Subject: [PATCH 2/4] Add markdown rendering to interview-view using Markdown component from ui/markdown Co-authored-by: GTheMachine <156854865+GTheMachine@users.noreply.github.com> --- app/src/components/views/interview-view.tsx | 27 +++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/components/views/interview-view.tsx b/app/src/components/views/interview-view.tsx index 941d0ec8..c1a9a5e1 100644 --- a/app/src/components/views/interview-view.tsx +++ b/app/src/components/views/interview-view.tsx @@ -17,6 +17,7 @@ import { } from "lucide-react"; import { cn } from "@/lib/utils"; import { getElectronAPI } from "@/lib/electron"; +import { Markdown } from "@/components/ui/markdown"; interface InterviewMessage { id: string; @@ -100,10 +101,15 @@ export function InterviewView() { // Auto-scroll to bottom when messages change useEffect(() => { if (messagesContainerRef.current) { - messagesContainerRef.current.scrollTo({ - top: messagesContainerRef.current.scrollHeight, - behavior: "smooth", - }); + // Use a small delay to ensure DOM is updated + setTimeout(() => { + if (messagesContainerRef.current) { + messagesContainerRef.current.scrollTo({ + top: messagesContainerRef.current.scrollHeight, + behavior: "smooth", + }); + } + }, 100); } }, [messages]); @@ -437,10 +443,15 @@ export function InterviewView() { )} > -

{message.content}

+ {message.role === "assistant" ? ( + + {message.content} + + ) : ( +

+ {message.content} +

+ )}

Date: Wed, 10 Dec 2025 23:09:27 +0100 Subject: [PATCH 3/4] fix: scrolling issue --- app/src/components/views/interview-view.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/components/views/interview-view.tsx b/app/src/components/views/interview-view.tsx index c1a9a5e1..dc0a2883 100644 --- a/app/src/components/views/interview-view.tsx +++ b/app/src/components/views/interview-view.tsx @@ -359,7 +359,7 @@ export function InterviewView() { return (

{/* Header */} From a4dc21fd8448195006fda93a568ef24187a9ea3f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:42:17 +0000 Subject: [PATCH 4/4] Add cleanup function to setTimeout in useEffect to prevent memory leaks Co-authored-by: GTheMachine <156854865+GTheMachine@users.noreply.github.com> --- app/src/components/views/interview-view.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/components/views/interview-view.tsx b/app/src/components/views/interview-view.tsx index dc0a2883..01cefa21 100644 --- a/app/src/components/views/interview-view.tsx +++ b/app/src/components/views/interview-view.tsx @@ -100,9 +100,10 @@ export function InterviewView() { // Auto-scroll to bottom when messages change useEffect(() => { + let timeoutId: NodeJS.Timeout | undefined; if (messagesContainerRef.current) { // Use a small delay to ensure DOM is updated - setTimeout(() => { + timeoutId = setTimeout(() => { if (messagesContainerRef.current) { messagesContainerRef.current.scrollTo({ top: messagesContainerRef.current.scrollHeight, @@ -111,6 +112,11 @@ export function InterviewView() { } }, 100); } + return () => { + if (timeoutId) { + clearTimeout(timeoutId); + } + }; }, [messages]); // Auto-focus input