Automatically aligns each T3 Code user and assistant message from its own text while keeping code, commands, and file paths left to right.
The fix is applied every time the T3 Code desktop app starts. It removes the need to open DevTools and paste CSS manually.
- Hebrew and Arabic messages use right-to-left direction and right alignment.
- English messages remain left to right and left aligned.
- Hebrew and Arabic prose stays right to left even when it starts with English or a number.
- T3 Code 0.1.2 and later set a direction of their own from the majority of the words in each block. The fix's rule replaces it, so a mostly English sentence with a Hebrew word stays right to left, in lists, tables, and alerts as well, and so does each block typed in the composer.
- Each paragraph and other prose block resolves its direction independently.
- Images and other blocks without any letters follow the direction of the message around them.
- Code, commands, and file paths remain left to right.
- Tables follow their content direction, and expanded tables fit the available width.
- A wide Hebrew or Arabic table opens on its first column at the right. Its edge fade and scrollbar follow the hidden part on the left.
- Lists, task lists, quotes, footnotes, alerts, and table cells follow the direction of their text. In a Hebrew or Arabic table every column aligns right, including English headers and values.
- Pending question cards align their content without changing English questions. In a Hebrew or Arabic option, the shortcut number sits next to the radio button, before the option text.
- Proposed plan cards align their title and Markdown content independently.
- Plan progress and composer task controls follow the direction of their steps.
- Pull request descriptions and comments follow the direction of each Markdown block.
- Rendered Markdown file previews follow the direction of each content block.
- Comments on quoted text and their citation chips follow the direction of the comment while it is typed. In the card that opens from a citation chip, the quote and the comment follow the direction of their text, and the quote border and the Go to source button move to the side where the text starts.
- Queued messages follow the direction of their prompt, including their status and action buttons. In the queue above the composer, each prompt follows the direction of its text. Since T3 Code 0.1.3, a queued prompt waits in the thread above the composer and follows the message rule, while the buttons below it keep their layout.
- Each paragraph typed in the composer follows the same rule as a sent message: Hebrew or Arabic anywhere in it makes it right to left, even after an English word or an attachment chip, and word selection with Ctrl+Shift+Arrow moves the same way as the text. A line that holds only a quote with a Hebrew or Arabic comment is right to left as well. Headings, list items, task list items, and quotes typed in the composer follow the same rule, and a list or quote moves its markers or border to the side where its first item starts.
- With prompt suggestions on, a predicted next prompt shown in the empty composer follows the direction of its text. A Hebrew or Arabic prediction sits on the right, and the Tab key hint after it keeps its order.
- The agent's work log follows the direction of its text. Asked questions and their answers follow the message rule, and row summaries follow their first letter so commands that start in English stay left to right. A row whose summary starts in Hebrew or Arabic, such as an asked question, is mirrored: its icon and summary sit on the right, the question comes before the answer, and the expanded question and answer align right. The agent's latest thought, shown while it works, follows its first letter too, and an expanded thought follows the message rule.
- Subagent and delegated task cards show their title and result summary in the direction of their text.
- Thread titles in the sidebar and the open thread header follow the direction of their text, including while a thread is renamed. So do the parent thread and project names shown above a subagent's thread.
- Tooltips follow their first letter, so a tooltip that shows a Hebrew thread title or queued prompt is right to left.
- The comment field of the element annotation window in the browser preview follows the direction of the comment while it is typed, and so do the comment and page title in the card that opens from an annotation chip.
- T3 Code itself is not patched or repackaged.
- Windows or macOS
- The T3 Code desktop app
Run this in PowerShell:
irm 'https://raw.githubusercontent.com/ShlomiPorush/t3code-rtl-fix/main/windows/install.ps1' | iexThe command downloads the current version of this repository, installs it, and removes the downloaded copy. Run the same command again to update the fix, or after a T3 Code update if the fix stops loading. An update that renames the app, such as T3 Code 0.1.0 renaming "T3 Code (Alpha)" to "T3 Code (Beta)", replaces its shortcuts with ones that open T3 Code without the fix.
When T3 Code installs an update, it reopens itself without the fix and points its Start Menu shortcut at the app again. The fix notices the update, points the shortcut back at the fix, and shows a message asking you to quit T3 Code and open it again from its shortcut. If the update renamed the app, the message asks you to run the install command again. Opening T3 Code from a shortcut also repairs any shortcut that an update changed.
Fully quit T3 Code after installation. Open it again from the Desktop shortcut or the Start menu shortcut updated by the installer. The installer backs up the original shortcuts first.
If T3 Code is installed in a non-default location, pass the executable path:
& ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/ShlomiPorush/t3code-rtl-fix/main/windows/install.ps1'))) `
-T3CodePath "D:\Apps\T3 Code (Beta).exe"To install from a local clone instead, run this from the repository folder:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\windows\install.ps1Edit the installed rtl.css file, then fully quit and reopen T3 Code:
%LOCALAPPDATA%\T3RTLFix\rtl.css
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File "$env:LOCALAPPDATA\T3RTLFix\uninstall.ps1"The uninstaller restores the original shortcuts. You can then delete the
%LOCALAPPDATA%\T3RTLFix directory.
Run this in Terminal:
curl -fsSL 'https://raw.githubusercontent.com/ShlomiPorush/t3code-rtl-fix/main/macos/install.sh' | bashThe command downloads the current version of this repository, installs it, and removes the downloaded copy. Run the same command again to update the fix.
The installer finds T3 Code in /Applications or ~/Applications, copies the
fix to ~/Library/Application Support/T3RTLFix, and creates a separate
T3 Code RTL app in ~/Applications with the T3 Code icon. T3 Code itself
is not modified.
Fully quit T3 Code with Cmd+Q, then open T3 Code RTL from
~/Applications or Spotlight. Always open T3 Code through this app so the fix
loads. You can drag it to the Dock in place of the original. When T3 Code
reopens itself after an update, it opens without the fix. Quit it with Cmd+Q
and open T3 Code RTL again.
If T3 Code is installed in a non-default location, pass the app path:
curl -fsSL 'https://raw.githubusercontent.com/ShlomiPorush/t3code-rtl-fix/main/macos/install.sh' |
bash -s -- "/path/to/T3 Code (Alpha).app"To install from a local clone instead, run this from the repository folder:
bash macos/install.shThe launcher runs with Node.js 18 or newer when one is found on the system,
including Homebrew. Otherwise it uses the Node.js runtime bundled in T3 Code
through ELECTRON_RUN_AS_NODE, as on Windows.
Edit the installed rtl.css file, then quit T3 Code with Cmd+Q and open
T3 Code RTL again:
~/Library/Application Support/T3RTLFix/rtl.css
The launcher log is written to launcher.log in the same folder.
bash ~/Library/Application\ Support/T3RTLFix/uninstall.shThe uninstaller removes the T3 Code RTL app and the whole
~/Library/Application Support/T3RTLFix folder, including any changes made to
rtl.css. Open T3 Code normally afterwards.
The installer starts T3 Code through a small local launcher instead of opening
it directly: a Desktop and Start menu shortcut on Windows, and the
T3 Code RTL app on macOS. The launcher runs on the Node.js runtime already
bundled inside T3 Code's Electron executable, or on a system Node.js on macOS,
so no separate installation is required. It opens T3 Code normally with
Chromium's --remote-debugging-pipe option and injects the fix into the T3 Code
page. The fix sets the direction of existing and newly rendered content, injects
rtl.css, and registers both parts for future page reloads.
T3 Code draws its element annotation window inside the browser preview, in a closed shadow root. In the preview, the launcher only listens for that window to take focus and then sets the direction of its comment field. The content of the previewed page is not changed.
On Windows, each time T3 Code exits, the launcher ends and a small helper waits a few minutes for an update to reopen T3 Code. When one does, the helper repairs the shortcuts and shows the message once. It only touches shortcuts that the installer of the fix changed, so the uninstaller still restores all of them.
The connection uses inherited process pipes. It does not open a local TCP debugging port and does not send data over the network.
src/ The fix injected into T3 Code, shared by both platforms
windows/ Windows installer, uninstaller, and shortcut launcher
macos/ macOS installer and uninstaller
tests/ Unit, browser smoke, and Windows installer tests
- T3 Code must be opened from a shortcut updated by the installer on Windows, or from the T3 Code RTL app on macOS.
- A T3 Code update may recreate its Windows shortcuts. Run the install command again if the fix stops loading after an update.
- T3 Code can change its internal HTML structure. The selectors in
rtl.cssmay need an update when that happens. - The first installation cannot inject into an instance that is already open. Fully quit and reopen the app once.
Contributors need Node.js 18 or newer. On Windows with Microsoft Edge installed:
npm testThe smoke test verifies CSS injection through a Chromium debugging pipe. A separate regression test performs a complete installation and removal under Windows PowerShell 5.1. The unit tests also verify that no TCP debugging port is enabled and that shipped user-facing text contains no Hebrew.
- macOS support was contributed by @sagistiki in #27.