From 064b62cc870a03cf1f5a47c9131e7921a746d85f Mon Sep 17 00:00:00 2001 From: YEJI JUNG Date: Mon, 21 Sep 2026 14:28:04 +0900 Subject: [PATCH 01/83] =?UTF-8?q?fix:=20=ED=8C=80=EA=B3=B5=EC=9C=A0/?= =?UTF-8?q?=EC=9B=90=EB=B3=B8=EB=8C=80=ED=99=94=20=EB=AA=A8=EB=8B=AC?= =?UTF-8?q?=EC=97=90=EC=84=9C=20wide=20=EC=BD=94=EB=93=9C=EB=B8=94?= =?UTF-8?q?=EB=9F=AD=EC=9D=B4=20=EB=AA=A8=EB=8B=AC=EC=9D=84=20=EB=B0=80?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20min-w-0=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prism 코드블럭 pre 는 자체 overflow-x-auto 를 가지지만, 상위 flex 자식들이 기본 min-width:auto 라서 콘텐츠(넓은 code line) 폭에 맞춰 팽창해 pre 의 내부 스크롤이 발동하기 전에 article/모달 자체가 옆으로 넓어졌다. 결과적으로 모달 전체에 가로 스크롤이 생김. - OverlayModal body: min-w-0 추가 (flex 자식 팽창 차단, 모든 소비 모달에 파급) - Step2SummaryPreview 답변 article: min-w-0 - DigestSourceViewBody PairView article: min-w-0 이제 pre 가 자기 폭 안에서만 가로 스크롤을 소유하고 모달은 정상 폭 유지. --- .../src/components/feature/digest/DigestSourceViewBody.tsx | 2 +- .../src/components/feature/digest/Step2SummaryPreview.tsx | 3 ++- src/renderer/src/components/ui/OverlayModal.tsx | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/components/feature/digest/DigestSourceViewBody.tsx b/src/renderer/src/components/feature/digest/DigestSourceViewBody.tsx index f7e68f9..695732b 100644 --- a/src/renderer/src/components/feature/digest/DigestSourceViewBody.tsx +++ b/src/renderer/src/components/feature/digest/DigestSourceViewBody.tsx @@ -138,7 +138,7 @@ const PairView = ({ pair }: { pair: DigestSourcePair }): React.JSX.Element => { -
+
From 2f0cf58b10d9db25e323005e620b9baf858672b2 Mon Sep 17 00:00:00 2001 From: YEJI JUNG Date: Mon, 21 Sep 2026 14:32:24 +0900 Subject: [PATCH 02/83] =?UTF-8?q?fix:=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20?= =?UTF-8?q?=EA=B0=80=EB=A1=9C=20=EB=84=98=EC=B9=A8=20=EC=9D=B4=EC=A4=91=20?= =?UTF-8?q?=EB=B0=A9=EC=96=B4=20(body=20overflow-x-hidden=20+=20MarkdownAn?= =?UTF-8?q?swer=20min-w-0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모바일은 뷰포트 폭 여유가 적어 flex 자식 팽창이 더 민감. min-w-0 만으로 안 잡히는 케이스(예: MarkdownAnswer 내부 컴포넌트)까지 대비해 이중으로 가둔다. - OverlayModal body: overflow-x-hidden 추가 (belt & suspenders) - MarkdownAnswer 래퍼: min-w-0 (article 이 flex 자식일 때 답변 콘텐츠가 부모를 밀지 못하게) --- src/renderer/src/components/ui/MarkdownAnswer.tsx | 2 +- src/renderer/src/components/ui/OverlayModal.tsx | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/components/ui/MarkdownAnswer.tsx b/src/renderer/src/components/ui/MarkdownAnswer.tsx index c0f6f7f..3a1268b 100644 --- a/src/renderer/src/components/ui/MarkdownAnswer.tsx +++ b/src/renderer/src/components/ui/MarkdownAnswer.tsx @@ -37,7 +37,7 @@ const components: Components = { export const MarkdownAnswer = memo(function MarkdownAnswer({ content }: Props): React.JSX.Element { return ( -
+
{content} diff --git a/src/renderer/src/components/ui/OverlayModal.tsx b/src/renderer/src/components/ui/OverlayModal.tsx index 7e1c9d8..569a94b 100644 --- a/src/renderer/src/components/ui/OverlayModal.tsx +++ b/src/renderer/src/components/ui/OverlayModal.tsx @@ -146,9 +146,10 @@ export const OverlayModal = ({
From 0dfb9c5ae6319b66b18b2c5506aa3fbe14e411ee Mon Sep 17 00:00:00 2001 From: YEJI JUNG Date: Mon, 21 Sep 2026 14:35:59 +0900 Subject: [PATCH 03/83] =?UTF-8?q?fix:=20=EC=B1=84=ED=8C=85=20=EB=B7=B0=20a?= =?UTF-8?q?ssistant=20=EB=A9=94=EC=8B=9C=EC=A7=80=20wide=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EB=B8=94=EB=9F=AD=EC=9D=B4=20=EB=B7=B0=ED=8F=AC?= =?UTF-8?q?=ED=8A=B8=20=EB=B0=80=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?min-w-0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모달만이 아니라 실제 채팅 뷰에서도 wide code line 이 assistant 메시지 → 메시지 컨테이너 → 스크롤 뷰포트까지 순차 팽창시켜 모바일에서 가로 스크롤이 생겼다. 각 flex 계층에 min-w-0 을 걸고 스크롤 뷰포트에 overflow-x-hidden 을 세이프가드로 추가. - 메시지 리스트 컨테이너(flex-col): min-w-0 - assistant articleNode(flex-1): min-w-0 - streaming article: min-w-0 - messagesViewport(flex justify-center overflow-y-auto): overflow-x-hidden --- src/renderer/src/pages/ProjectDetailPage.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/ProjectDetailPage.tsx b/src/renderer/src/pages/ProjectDetailPage.tsx index 158560b..6d1c57f 100644 --- a/src/renderer/src/pages/ProjectDetailPage.tsx +++ b/src/renderer/src/pages/ProjectDetailPage.tsx @@ -1234,7 +1234,7 @@ export const ProjectDetailPage = ({ followBottomRef.current = viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight < 80; }} - className="flex h-full justify-center overflow-y-auto px-6 pb-4 max-sm:px-3" + className="flex h-full justify-center overflow-y-auto overflow-x-hidden px-6 pb-4 max-sm:px-3" > {!activeChatId ? (
@@ -1245,7 +1245,7 @@ export const ProjectDetailPage = ({

메시지를 입력하면 새 대화가 시작돼요.

) : ( -
+
{messages.isLoading ? (

메시지를 불러오는 중...

) : null} @@ -1405,7 +1405,7 @@ export const ProjectDetailPage = ({ const articleNode = (
+