From 6c9639969d0f7a5d4dfcba4414889c2c8e722d59 Mon Sep 17 00:00:00 2001 From: Gur Fishler Date: Sat, 28 Mar 2026 12:07:29 +0300 Subject: [PATCH 1/4] Add RTL support for chat messages Use dir="auto" on user and assistant message text containers so the browser automatically detects RTL languages (Arabic, Hebrew, etc.) and aligns text correctly. --- apps/web/src/components/ChatMarkdown.tsx | 5 ++++- apps/web/src/components/chat/MessagesTimeline.tsx | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/ChatMarkdown.tsx b/apps/web/src/components/ChatMarkdown.tsx index 9663d158eb..24dac8ab23 100644 --- a/apps/web/src/components/ChatMarkdown.tsx +++ b/apps/web/src/components/ChatMarkdown.tsx @@ -289,7 +289,10 @@ function ChatMarkdown({ text, cwd, isStreaming = false }: ChatMarkdownProps) { ); return ( -
+
{text} diff --git a/apps/web/src/components/chat/MessagesTimeline.tsx b/apps/web/src/components/chat/MessagesTimeline.tsx index f3174030ef..6ef022d2ce 100644 --- a/apps/web/src/components/chat/MessagesTimeline.tsx +++ b/apps/web/src/components/chat/MessagesTimeline.tsx @@ -720,7 +720,10 @@ const UserMessageBody = memo(function UserMessageBody(props: { } return ( -
+
{inlineNodes}
); @@ -748,7 +751,10 @@ const UserMessageBody = memo(function UserMessageBody(props: { } return ( -
+
{inlineNodes}
); @@ -759,7 +765,10 @@ const UserMessageBody = memo(function UserMessageBody(props: { } return ( -
+    
       {props.text}
     
); From 75bc007e269cc5523a9012c8a74477c2a194cd7d Mon Sep 17 00:00:00 2001 From: Gur Fishler Date: Sun, 29 Mar 2026 05:05:01 +0300 Subject: [PATCH 2/4] Fix RTL direction leaking into code blocks and tables Move dir="auto" from the outer ChatMarkdown wrapper to individual text-level markdown components (p, headings, li, blockquote) so code blocks, Shiki-highlighted code, and tables remain LTR. --- apps/web/src/components/ChatMarkdown.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/ChatMarkdown.tsx b/apps/web/src/components/ChatMarkdown.tsx index cb23e0212b..e2a382410e 100644 --- a/apps/web/src/components/ChatMarkdown.tsx +++ b/apps/web/src/components/ChatMarkdown.tsx @@ -263,6 +263,15 @@ function ChatMarkdown({ text, cwd, isStreaming = false }: ChatMarkdownProps) { /> ); }, + p: ({ node: _node, ...props }) =>

, + h1: ({ node: _node, ...props }) =>

, + h2: ({ node: _node, ...props }) =>

, + h3: ({ node: _node, ...props }) =>

, + h4: ({ node: _node, ...props }) =>

, + h5: ({ node: _node, ...props }) =>

, + h6: ({ node: _node, ...props }) =>
, + li: ({ node: _node, ...props }) =>
  • , + blockquote: ({ node: _node, ...props }) =>
    , pre({ node: _node, children, ...props }) { const codeBlock = extractCodeBlock(children); if (!codeBlock) { @@ -289,10 +298,7 @@ function ChatMarkdown({ text, cwd, isStreaming = false }: ChatMarkdownProps) { ); return ( -
    +
    {text} From cb59328097062cfa701628385e85799cf892b909 Mon Sep 17 00:00:00 2001 From: Gur Fishler Date: Sun, 29 Mar 2026 05:21:28 +0300 Subject: [PATCH 3/4] Use logical CSS properties for RTL-aware blockquote and list styling Replace physical border-left/padding-left with border-inline-start/ padding-inline-start so blockquote borders and list indentation follow text direction in RTL content. --- apps/web/src/index.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/web/src/index.css b/apps/web/src/index.css index ea76f24fac..1f154d066c 100644 --- a/apps/web/src/index.css +++ b/apps/web/src/index.css @@ -264,12 +264,12 @@ label:has(> select#reasoning-effort) select { } .chat-markdown ul { - padding-left: 1.25rem; + padding-inline-start: 1.25rem; list-style-type: disc; } .chat-markdown ol { - padding-left: 1.25rem; + padding-inline-start: 1.25rem; list-style-type: decimal; } @@ -304,8 +304,8 @@ label:has(> select#reasoning-effort) select { } .chat-markdown blockquote { - border-left: 2px solid var(--border); - padding-left: 0.8rem; + border-inline-start: 2px solid var(--border); + padding-inline-start: 0.8rem; color: var(--muted-foreground); } From 0d33c1024a441523c1bb7f3fd03b617449a75a49 Mon Sep 17 00:00:00 2001 From: Gur Fishler Date: Sun, 29 Mar 2026 05:26:56 +0300 Subject: [PATCH 4/4] chore: retrigger CI