Skip to content

fix(mobile): drop Latin label treatment for Arabic labels in RTL - #6652

Merged
iscekic merged 1 commit into
mainfrom
kwf/explorer-home-ar-rtl-the-tracked-all-caps-label-style-is-27db51-76eb
Sep 23, 2026
Merged

iscekic merged 1 commit into
mainfrom
kwf/explorer-home-ar-rtl-the-tracked-all-caps-label-style-is-27db51-76eb

Conversation

@iscekic

@iscekic iscekic commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Changelog for users

  • Arabic labels in the Arabic interface render as joined letterforms, with no gaps between letters.
  • The Arabic home section label, its "See all" link, and the explore heading render in a font that carries Arabic glyphs.
  • The Arabic home's section link sits flush with the card's left edge, on the same line as the section label.
  • Latin labels keep their tracked, all-caps mono treatment, including in the Arabic interface.

Changelog for maintainers

  • Text drops font-mono* and tracking-* classes when the interface is RTL and its children contain Arabic script.
  • Script detection covers strings, arrays, and nested elements; a label that mixes scripts counts as Arabic.
  • The token filter keeps the remaining token order and preserves uppercase, so a Latin run inside the same label keeps its capitals.
  • variant="mono" Arabic copy also loses the mono family in RTL, while Latin copy such as session ids keeps it.
  • The section-header link aligns with items-end on its column flex container, replacing text-left/text-right, which resolved to paragraph-start on one platform and disagreed across platforms.
  • Unit and mounted tests cover script detection, token filtering, the Text classes, and the RTL section-header layout.
  • The device run exited rc=1 with a blocked verdict, so the on-device proof is incomplete.

E2E proof — log excerpts

/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-6b612ce-7aee/e2e-backend/backend.log
  scope: [ 'usr_1', null ],
  revision: 1,
  trailing: false,
  status: 'happy',
  running: 1,
  needsInput: 0,
  idle: 0,
  needsApproval: 0
}
uncaught exception; source = Uncaught (in promise); stack = Error: Secret "INTERNAL_API_SECRET_PROD" not found
<redacted>
stderr | src/lib/glanceable-delivery.test.ts
INTERNAL_API_SECRET missing; skipping glanceable aggregate delivery
 ✓ src/lib/glanceable-delivery.test.ts (89 tests) 1679ms
 Test Files  19 passed (19)
      Tests  388 passed (388)
   Start at  18:30:29
   Duration  17.26s (transform 46.59s, setup 750ms, import 155.87s, tests 4.44s, environment 2ms)
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
No projects matched the filters in "/home/igor_kilocode_ai/.local/share/kwf/wt/kwf-fix-proof-6b612ce-7aee"
  • proved live: > Explorer finding: home-ar-rtl: The tracked all-caps label style is applied to Arabic, so 'الجلسات الجارية الآن', 'عرض الكل' and 'استكشف' render with gaps between letters that must stay joined, and… — android emulator-5554, Arabic home (language set to العربية) SCENE e1 OK: e1-scene.log shows 'الجلسات الجارية الآن tappable [503,217][1044,263]' with 'عرض الكل tappable [37,216][485,265]' on the same line and the session card '[40,305][1042,510]' (label right edge 1044 vs card 1042; link left 37 vs card left 37/40), plus 'استكشاف tappable [36,854][1044,900]' over its card and Latin 'CLOUD tappable [318,339][995,376]'; letterform/tracking appearance is the visual reviewer's call on e1.png, and home-ar-rtl had no state file so the state was reached by hand (Profile>Preferences>Account>Language)… > Explorer finding: home-ar-rtl: The tracked all-caps label style is applied to Arabic, so 'الجلسات الجارية الآن', 'عرض الكل' and 'استكشف' render with gaps between letters that must stay joined, and… — e1.png
    [e1] > Explorer finding: home-ar-rtl: The tracked all-caps label style is applied to Arabic, so 'الجلسات الجارية الآن', 'عرض الكل' and 'استكشف' render with gaps between letters that must stay joined, and… — e2e-mobile-app/e1.png
[e1] -> pass :: android emulator-5554, Arabic home (language set to العربية) SCENE e1 OK: e1-scene.log shows 'الجلسات الجارية الآن tappable [503,217][1044,263]' with 'عرض الكل tappable [37,216][485,265]' on the same line and the session card '[40,305][1042,510]' (label right edge 1044 vs card 1042; link left 37 vs card left 37/40), plus 'استكشاف tappable [36,854][1044,900]' over its card and Latin 'CLOUD tappable [318,339][995,376]'; letterform/tracking appearance is the visual reviewer's call on e1.png, and home-ar-rtl had no state file so the state was reached by hand (Profile>Preferences>Account>Language) and the flow was banked at e1.replay.json.
/home/igor_kilocode_ai/.local/share/kwf/sections/kwf-fix-proof-6b612ce-7aee/e2e-mobile-app/e1-scene.log
android.widget.TextView بانتظار تدخلك tappable [132,339][273,376]
android.widget.TextView جلسة بدون عنوان tappable [132,383][995,429]
android.widget.TextView kwf/kwf-fix-proof-6b612ce-7aee tappable [132,439][995,476]
android.widget.Button مهمة برمجة جديدة tappable [37,568][1043,684]
android.widget.TextView مهمة برمجة جديدة tappable [390,602][624,648]
android.widget.Button مهمة جديدة من صورة tappable [37,702][1043,817]
android.widget.TextView مهمة جديدة من صورة tappable [371,736][643,782]
android.widget.TextView استكشاف tappable [36,854][1044,900]
android.widget.Button مراجع الشيفرة, مراجعات PR تلقائية tappable [37,919][1043,1063]
android.widget.TextView مراجع الشيفرة tappable [129,947][911,993]
android.widget.TextView مراجعات PR تلقائية tappable [129,997][911,1034]
android.widget.Button وكيل الأمان, اكتشاف الثغرات ومعالجتها tappable [37,1081][1043,1225]
android.widget.TextView وكيل الأمان tappable [129,1109][911,1155]
android.widget.TextView اكتشاف الثغرات ومعالجتها tappable [129,1159][911,1196]
android.widget.Button مراجعة PR, مراجعة طلبات السحب على الجوال tappable [37,1244][1043,1386]
android.widget.TextView مراجعة PR tappable [129,1272][911,1318]
android.widget.TextView مراجعة طلبات السحب على الجوال tappable [129,1322][911,1359]
android.widget.Button الرئيسية، تبويب، 1 من 3 tappable [720,2195][1080,2337]
android.widget.TextView الرئيسية tappable [733,2281][1067,2330]
android.widget.Button الوكلاء, 1 بانتظار تدخلك، تبويب، 2 من 3 tappable [360,2195][720,2337]
android.widget.TextView 1 tappable [491,2200][541,2250]
android.widget.TextView الوكلاء tappable [373,2281][707,2330]
android.widget.Button الملف الشخصي، تبويب، 3 من 3 tappable [0,2195][360,2337]
android.widget.TextView الملف الشخصي tappable [13,2281][347,2330]

Open findings (not fixed here)

  • og","note":"banked from the progress ledger at the turn cap"},{"name":"[e8]","result":"pass","evidence":"e8-scene.log","note":"banked from the progress ledger at the turn cap"},{"name":"[e10]","result":"pass","evidence":"e10-scene.log","note":"banked from the progress ledger at the turn …[truncated]
  • ation failed (rc=1). --- shard 1 ---
    VERDICT {"verdict":"passed","scenarios":[{"name":"e1","result":"pass","evidence":"out/e1-combined-run.log","note":"ios: English home digest (LIVE NOW [14,121][199,135], See all [206,120][388,136]) then the language switch reloads into the Arabic home (SCENE e1 OK
  • the '## E2E proof' section is empty

e1

@iscekic
iscekic marked this pull request as draft September 23, 2026 14:56
Comment thread apps/mobile/src/lib/rtl-text.ts Outdated
@kilo-code-bot

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

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Executive Summary

The incremental change is test-only (three mobile test files); the previous rtl-text.ts tracking/family filter finding is resolved on current HEAD, and the new assertions match the shipped implementation.

Files Reviewed (3 files)
  • apps/mobile/src/components/home/section-header.mounted.test.tsx
  • apps/mobile/src/components/ui/text.mounted.test.tsx
  • apps/mobile/src/lib/rtl-text.test.ts
Previous Review Summary (commit 36f5dfc)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 36f5dfc)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
apps/mobile/src/lib/rtl-text.ts 60 Tracking/family alternation omits tracking-tighter and variant-prefixed font-mono*
Files Reviewed (7 files)
  • apps/mobile/src/components/home/section-header.mounted.test.tsx - 0 issues
  • apps/mobile/src/components/home/section-header.tsx - 0 issues
  • apps/mobile/src/components/ui/eyebrow.tsx - 0 issues
  • apps/mobile/src/components/ui/text.mounted.test.tsx - 0 issues
  • apps/mobile/src/components/ui/text.tsx - 0 issues
  • apps/mobile/src/lib/rtl-text.test.ts - 0 issues
  • apps/mobile/src/lib/rtl-text.ts - 1 issue

Fix these issues in Kilo Cloud


Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0

Review guidance: REVIEW.md from base branch main

@iscekic
iscekic force-pushed the kwf/explorer-home-ar-rtl-the-tracked-all-caps-label-style-is-27db51-76eb branch from 59439ae to 6b612ce Compare September 23, 2026 17:07
@iscekic
iscekic marked this pull request as ready for review September 23, 2026 17:27
@iscekic

iscekic commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator Author

This description names a scenario the proof did not capture:

  • not proved live: cur-state.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 23, 2026
@iscekic iscekic self-assigned this Sep 23, 2026
@iscekic
iscekic merged commit ba721a4 into main Sep 23, 2026
29 checks passed
@iscekic
iscekic deleted the kwf/explorer-home-ar-rtl-the-tracked-all-caps-label-style-is-27db51-76eb branch September 23, 2026 22:16
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