Skip to content

Commit 3558096

Browse files
Claude Code Agentclaude
andcommitted
Add Arabic language support
- Add Arabic ('ar') to Language type in types/index.ts - Add Arabic option to Settings page with Saudi Arabia flag (🇸🇦) - Add complete Arabic translations (150+ strings) to translations.ts - Add tests test-252 through test-254 for Arabic language feature Users can now switch between English, Japanese, and Arabic languages. All UI elements update when Arabic is selected. Ref: #31 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 75c4f9d commit 3558096

24 files changed

+990
-15
lines changed

FEATURE_REQUEST.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
# Feature Request: Issue #32
1+
# Feature Request: Issue #31
22

33
## Title
4-
[FEATURE] Admin dashboard for indexdb data
4+
[FEATURE] Add Arabic
55

66
## Description
77
### Feature Name
88

9-
indexdb dashboard
9+
Arabic Language
1010

1111
### Feature Specification
1212

13-
Build a dashboard where an admin can see data from indexdb - show the data and how its stored
13+
Add Arabic as a language option
1414

1515
### Acceptance Criteria
1616

@@ -23,7 +23,7 @@ Small (< 1 hour)
2323

2424
## Branch
2525
All work should be committed to the `agent-runtime` branch.
26-
Commits should reference this issue: `Ref: #32`
26+
Commits should reference this issue: `Ref: #31`
2727

2828
## Mode
2929
Enhancement - Modify existing app in generated-app/

agent_state.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"session_id": "gh-issue-32-20251202-232259-19876786579",
3-
"current_issue": 32,
2+
"session_id": "gh-issue-31-20251202-234717-19877265545",
3+
"current_issue": 31,
44
"backlog_item_id": null,
55
"status": "running",
6-
"last_heartbeat": "2025-12-02T23:23:12.557869+00:00",
6+
"last_heartbeat": "2025-12-02T23:47:25.141711+00:00",
77
"restart_count": 0,
88
"working_directory": "/app/workspace/agent-runtime",
9-
"last_commit": "e2d712576be0308128526326cbda93a549259bfd"
9+
"last_commit": "75c4f9dcddf3d1a30f3cc5865cd409271f09b7f0"
1010
}

generated-app/agent_state.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"desired_state": "continuous",
33
"current_state": "continuous",
4-
"timestamp": "2025-12-02T23:35:51.336Z",
4+
"timestamp": "2025-12-02T23:47:27.381Z",
55
"setBy": "agent",
66
"note": "Running in continuous mode"
77
}

generated-app/claude-progress.txt

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,53 @@
11
# Canopy - JIRA-like Project Management App
22

3-
## Project Status: ✅ COMPLETE AND VERIFIED (Issue #32 - Admin Dashboard for IndexedDB)
3+
## Project Status: ✅ COMPLETE AND VERIFIED (Issue #31 - Arabic Language)
44

5-
## Re-Verification Session (Issue #32 - Admin Dashboard for IndexedDB - VERIFIED)
5+
## Issue #31 - Arabic Language (COMPLETE)
6+
Added Arabic as a language option in the Settings page.
7+
8+
### Feature Description:
9+
Users can now:
10+
1. Navigate to Settings page and see Arabic in the Language section
11+
2. Choose between English (🇺🇸), Japanese (🇯🇵), and Arabic (🇸🇦) languages
12+
3. Switch to Arabic and see the entire UI update to Arabic
13+
4. Have the language preference persist across page reloads (stored in IndexedDB)
14+
15+
### Files Modified:
16+
- src/types/index.ts - Added 'ar' to the Language type union ('en' | 'ja' | 'ar')
17+
- src/pages/SettingsPage.tsx - Added Arabic to the LANGUAGES array with flag 🇸🇦 and native name 'العربية'
18+
- src/lib/translations.ts - Added complete Arabic translations for all 150+ strings
19+
20+
### Arabic Translations Include:
21+
- App-level: كانوبي (Canopy), بحث (Search), إنشاء (Create), إلغاء (Cancel), حفظ (Save), etc.
22+
- Navigation: التخطيط (Planning), خارطة الطريق (Roadmap), قائمة المهام (Backlog), اللوحة (Board), etc.
23+
- Settings: الإعدادات (Settings), الملف الشخصي (Profile), المظهر (Appearance), اللغة (Language), etc.
24+
- Issues: المهام (Issues), الملخص (Summary), الوصف (Description), الأولوية (Priority), etc.
25+
- And all other UI strings...
26+
27+
### New Tests Added (test-252 through test-254):
28+
- test-252: Settings page displays Arabic language option with English and Japanese ✅
29+
- test-253: User can switch to Arabic language and UI updates ✅
30+
- test-254: Arabic language reflects in sidebar navigation ✅
31+
32+
### E2E Tests:
33+
- e2e-tests/arabic-language.spec.ts - Playwright tests for Arabic language switching
34+
- e2e-tests/arabic-test-253.spec.ts - Screenshot capture test
35+
36+
### Build Status:
37+
- `npm run build` succeeds without errors ✅
38+
- All new tests pass (3/3) ✅
39+
- All console logs show NO_CONSOLE_ERRORS ✅
40+
- Application loads correctly ✅
41+
42+
### Screenshots Captured:
43+
- test-252-30295.png: Settings page with all 3 language options (English selected)
44+
- test-253-12345.png: Settings page in Arabic (العربية selected)
45+
- test-254-12345.png: Sidebar with Arabic labels (المشاريع, سير العمل, من نحن)
46+
- final-46272.png: Final app state
47+
48+
---
49+
50+
## Previous Session (Issue #32 - Admin Dashboard for IndexedDB - VERIFIED)
651
Re-verified the Admin Dashboard feature is working correctly:
752
- Took fresh screenshots for all 4 tests (test-248 through test-251)
853
- Verified NO_CONSOLE_ERRORS in all console logs

generated-app/claude_log_20251202_234727.txt

Lines changed: 362 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { test, expect } from '@playwright/test';
2+
3+
test('switch to Arabic language', async ({ page }) => {
4+
await page.goto('http://localhost:6174/settings');
5+
await page.waitForLoadState('networkidle');
6+
7+
// Click on Arabic language option
8+
await page.click('[data-testid="language-ar"]');
9+
10+
// Wait for UI to update
11+
await page.waitForTimeout(500);
12+
13+
// Take screenshot
14+
await page.screenshot({ path: 'screenshots/issue-31/test-253-arabic-ui.png' });
15+
16+
// Verify Settings header is now in Arabic
17+
const settingsHeader = page.locator('h1, h2').filter({ hasText: 'الإعدادات' });
18+
await expect(settingsHeader).toBeVisible();
19+
});
20+
21+
test('Arabic language shows in sidebar', async ({ page }) => {
22+
await page.goto('http://localhost:6174/settings');
23+
await page.waitForLoadState('networkidle');
24+
25+
// Click on Arabic language option
26+
await page.click('[data-testid="language-ar"]');
27+
28+
// Wait for UI to update
29+
await page.waitForTimeout(500);
30+
31+
// Verify sidebar shows Arabic labels
32+
const projectsLabel = page.locator('text=المشاريع');
33+
await expect(projectsLabel).toBeVisible();
34+
});
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { test, expect } from '@playwright/test';
2+
3+
test('test-253: switch to Arabic and capture UI', async ({ page }) => {
4+
await page.goto('http://localhost:6174/settings');
5+
await page.waitForLoadState('networkidle');
6+
7+
// Click on Arabic language option
8+
await page.click('[data-testid="language-ar"]');
9+
10+
// Wait for UI to update
11+
await page.waitForTimeout(500);
12+
13+
// Take screenshot
14+
await page.screenshot({ path: 'screenshots/issue-31/test-253-arabic-selected.png' });
15+
16+
// Verify Settings header is now in Arabic
17+
const settingsHeader = page.locator('h1, h2').filter({ hasText: 'الإعدادات' });
18+
await expect(settingsHeader).toBeVisible();
19+
20+
// Verify Profile is in Arabic
21+
const profileSection = page.locator('text=الملف الشخصي');
22+
await expect(profileSection).toBeVisible();
23+
24+
// Verify sidebar shows Arabic
25+
const projectsLabel = page.locator('text=المشاريع');
26+
await expect(projectsLabel).toBeVisible();
27+
});
49.3 KB
Loading
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
NO_CONSOLE_ERRORS
49.3 KB
Loading

0 commit comments

Comments
 (0)