-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Add RTL/bidi support for Hebrew and Arabic content (web + mobile) #11868
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Amit-Tabibi
wants to merge
38
commits into
pingdotgg:main
Choose a base branch
from
Amit-Tabibi:rtl
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
38 commits
Select commit
Hold shift + click to select a range
0d66eab
fix(web): read Arabic and Hebrew messages in the right direction
AsimNet 8d90e3a
fix(web): carry direction into alerts, file chips, and rename inputs
AsimNet adcffb4
fix(web): align table cells to their own text
AsimNet ca9169c
fix(web): keep the header rename input on the title's own direction
AsimNet 3e064d8
fix(web): finish the truncated-text sweep for draft previews and the …
AsimNet c430d4b
fix(web): narrow the palette to the one string that is message text
AsimNet 0129d2c
fix(web): let a palette item say whether its title is prose
AsimNet d8e825a
fix(web): let the sidebar thread tooltip align to its own text
AsimNet 8e7f514
fix(web): render Hebrew/Arabic chat markdown right-to-left
nioasoft b22ca50
fix(web): resolve bidi on alert body and table scroll viewport
nioasoft ff6b0c3
fix(web): give RTL tables a concrete direction Base UI can follow
nioasoft 41b8e2c
fix(web): keep alert title row in the body's direction; cover astral …
nioasoft 983c40b
fix(web): drop redundant text-align: start on bidi leaf blocks
nioasoft 9481d7c
Merge branch 'main' into pr/bidi-message-direction
AsimNet ac49d47
Merge branch 'pr-7126' into rtl
Amit-Tabibi 7cd9f2c
merge RTL PRs #7126 + #7574: per-block bidi + content-driven table di…
Amit-Tabibi 0857f3e
fix(mobile): render Hebrew/Arabic chat markdown right-to-left
Amit-Tabibi 574cbc8
chore: lockfile refresh after mobile module install
Amit-Tabibi fbffd37
fix(web): read Hebrew blocks that open with Latin tech tokens right-t…
Amit-Tabibi 1c588e1
fix(web): flip the composer direction live with the draft's language
Amit-Tabibi a887991
fix(mobile): read Hebrew blocks that open with Latin tech tokens righ…
Amit-Tabibi 374a092
fix(mobile): flip the composer direction live with the draft's language
Amit-Tabibi 5312410
fix(web): read Hebrew blocks that open with a Latin prose label right…
Amit-Tabibi bd3992d
fix(mobile): read Hebrew blocks that open with a Latin prose label ri…
Amit-Tabibi 67a2dcc
fix(web): finish Hebrew bidi rendering — citations, list gutters, Lat…
Amit-Tabibi e52ba1f
fix(mobile): finish Hebrew bidi rendering — citations, per-item lists…
Amit-Tabibi 03e89a0
merge upstream/main into rtl: keep bidi direction pipeline through th…
Amit-Tabibi 0a113c5
test(web): accept the button variant of the LTR-pinned file chip
Amit-Tabibi a878c25
fix(web): give question-panel prose its own text direction
Amit-Tabibi 7846dd2
fix(mobile): give question-card prose its own text direction
Amit-Tabibi bd02b4d
fix(web): align question-panel prose with its own direction
Amit-Tabibi d7fe279
Merge upstream/main into rtl
Amit-Tabibi 0257813
Merge remote-tracking branch 'upstream/main' into rtl-merge
Amit-Tabibi 843fd0b
fix(rtl): address Macroscope review findings on PR #11868
Amit-Tabibi 8dad01c
fix(web): resolve nested list items' own direction, not just top-level
Amit-Tabibi 0af96f8
merge: sync rtl with upstream/main, resolve conflicts
Amit-Tabibi f213c83
test: update assertions for writingDirection/dir attributes after merge
Amit-Tabibi 180ad6f
fix: address CodeRabbit review findings on PR #11868
Amit-Tabibi File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Apply placeholder alignment before the early return.
firstStrongDirection("")returns"ltr". The initialisRightToLeftvalue isfalse, sosetWritingDirection("ltr")returns before updatingplaceholderLabel.textAlignment. The label remains.natural, which can align right in an RTL app instead of using the explicit LTR empty-state fallback.Proposed fix
func setWritingDirection(_ writingDirection: String) { let isRTL = writingDirection == "rtl" + placeholderLabel.textAlignment = isRTL ? .right : .left guard isRTL != isRightToLeft else { return } isRightToLeft = isRTL - placeholderLabel.textAlignment = isRTL ? .right : .left🤖 Prompt for AI Agents