Skip to content

fix(mobile): stop Latin letter spacing from breaking RTL Arabic labels - #6440

Merged
iscekic merged 1 commit into
mainfrom
kwf/explorer-home-ar-the-arabic-labels-the-top-row-the-eyebro-69c8a-fabd
Sep 22, 2026
Merged

iscekic merged 1 commit into
mainfrom
kwf/explorer-home-ar-the-arabic-labels-the-top-row-the-eyebro-69c8a-fabd

Conversation

@iscekic

@iscekic iscekic commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Changelog for users

  • Arabic labels on the home screen keep their joined cursive letterforms in the RTL interface.
  • The section header and its "see all" action, the eyebrow, and the bottom tab labels are all covered.
  • Latin text in an LTR interface keeps its existing letter spacing.

Changelog for maintainers

  • The shared Text component prepends letterSpacing: 0 to its RTL style array, ahead of any caller style.
  • RTL_NO_LETTER_SPACING in lib/rtl-text.ts holds the reset, so text built with createElement can reuse it.
  • The reset covers every shared Text in RTL, including tracking-tight headings; check headings still look correct.
  • tracking-* classes stay in className; only their RTL rendering is neutralized, so the LTR design is untouched.
  • Start review at the style array in the shared Text component and the new mounted tracking test.
  • RTL style expectations were updated in the chat-composer and new-session-prompt suites.
  • The red Kilo Code Review check needed no product change: it is the review bot's own check run, and it reported no findings.
  • Review hint: the earlier home-ar live pass at head 087b3f0 is superseded as proof — the replacement run could not start the mobile-app gate (the environment could not provide it), so that check is skipped and pending owner verification; the glyph-join judgement stays the visual reviewer's on the capture below, and no baseline device was provided for the before/after A/B.

E2E proof

e1-ar-home

[e1] home-ar: Arabic RTL labels on the home screen (header row + see-all, eyebrow, bottom tabs) — e2e-mobile-app/e1-ar-home.png

Owner request

Explorer finding: home-ar: The Arabic labels — the top 'الجلسات الجارية الآن' / 'عرض الكل' row, the 'استكشف' eyebrow and the bottom tab labels — are rendered with Latin letter-spacing, so the cursive glyphs are visibly disconnected ('ا س ت ك ش ف').

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: home-ar
Found on revision: fb5e67d

Repro:

  1. set this state first: credits 40; reviews 6
  2. open the app on 1B2CEF92-949B-4331-A6F5-FAD734645205
  3. reach home-ar
  4. the capture shows the defect named below

Observed: The Arabic labels — the top 'الجلسات الجارية الآن' / 'عرض الكل' row, the 'استكشف' eyebrow and the bottom tab labels — are rendered with Latin letter-spacing, so the cursive glyphs are visibly disconnected ('ا س ت ك ش ف').
Expected: the screen renders without this defect

Evidence (from the device run):

E2E proof — log excerpts

[e1] home-ar: Arabic RTL labels on the home screen (header row + see-all, eyebro -> pass :: Ran on emulator-5554 (android) at head 087b3f0: the banked replay reproduces the Arabic home (e1-replay.log:1 'SCENE e1 OK') with the header row 'الجلسات الجارية الآن' and 'عرض الكل', the eyebrow 'استكشاف' and the tab labels 'الرئيسية'/'الوكلاء'/'الملف الشخصي' all present in the digest, and the LTR control (e1-en-home.digest.log:1 'SCENE e1-en-home OK') still shows 'LIVE NOW'/'SEE ALL'/'EXPLORE'; the glyph-join judgement is the visual reviewer's on e1-ar-home.png, and no baseline device was provided for the before/after A/B.

Explorer finding: home-ar: The Arabic labels — the top 'الجلسات الجارية الآن' / 'عرض الكل' row, the 'استكشف' eyebrow and the bottom tab labels — are rendered with Latin letter-spacing, so the cursive glyphs are visibly disconnected ('ا س ت ك ش ف').

The user-agent explorer found this while using the app like a user.
One finding per item; the explorer never edits product code.

Flow: home-ar
Found on revision: fb5e67d

Repro:
1. set this state first: credits 40; reviews 6
2. open the app on 1B2CEF92-949B-4331-A6F5-FAD734645205
3. reach home-ar
4. the capture shows the defect named below

Observed: The Arabic labels — the top 'الجلسات الجارية الآن' / 'عرض الكل' row, the 'استكشف' eyebrow and the bottom tab labels — are rendered with Latin letter-spacing, so the cursive glyphs are visibly disconnected ('ا س ت ك ش ف').
Expected: the screen renders without this defect

Evidence (from the device run):
- ~/.local/share/kwf/findings/explorer-home-ar-the-arabic-labels-the-top-row-the-eyebro-69c8a089/home-ar.png
@iscekic
iscekic marked this pull request as draft September 20, 2026 21:10
@iscekic
iscekic marked this pull request as ready for review September 20, 2026 21:23
@kilo-code-bot

kilo-code-bot Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The RTL letter-spacing reset is correctly ordered before the caller style in the shared Text component, verified against NativeWind inline-style precedence; test expectations match the emitted style arrays, and no memory leaks were introduced.

Files Reviewed (6 files)
  • apps/mobile/src/components/ui/text.tsx
  • apps/mobile/src/lib/rtl-text.ts
  • apps/mobile/src/components/ui/text.rtl-tracking.mounted.test.tsx
  • apps/mobile/src/components/home/section-header.mounted.test.tsx
  • apps/mobile/src/components/agents/chat-composer.test.ts
  • apps/mobile/src/components/agents/new-session-prompt-initial-prompt.test.ts

Reviewed by efficient · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@iscekic

iscekic commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator Author

This description names a scenario the proof did not capture:

  • not proved live: home-ar.png is no longer on the host that took it, so no publish can carry it

A repeated proof run rebuilds the same evidence, so no proof run is dispatched for a named gap. Merging with this gap open is your decision.

@iscekic iscekic added the human-ready The PR is ready for human review. label Sep 21, 2026
@iscekic iscekic self-assigned this Sep 21, 2026

@eshurakov eshurakov left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved after a shallow triage pass. No blocking findings.

@iscekic
iscekic merged commit b85a25f into main Sep 22, 2026
28 of 29 checks passed
@iscekic
iscekic deleted the kwf/explorer-home-ar-the-arabic-labels-the-top-row-the-eyebro-69c8a-fabd branch September 22, 2026 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

human-ready The PR is ready for human review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants