# CodeNomad — התקנה ופריסה עם תמיכת RTL + עברית

מדריך זה מסביר כיצד להתקין ולהפעיל את CodeNomad עם ממשק RTL ותרגום עברית מלא (`v0.12.3-rtl-he`).

---

## דרישות מוקדמות

*   **Node.js 18+** — ההתקנה חייבת להתבצע דרך `npm` בלבד.

> ⚠️ **bun אינו נתמך.** השרת חייב לרוץ דרך `node`, לא `bun`.

*   **OpenCode CLI** — נדרש לפעולת הסוכן.

### התקנת OpenCode

```
curl -fsSL https://opencode.ai/install | bash
```

---

## 1\. התקנת CodeNomad גלובלית

```
npm install -g @neuralnomads/codenomad@latest
```

בדיקה:

```
codenomad --version
```

> אם `codenomad` אינו נמצא ב-PATH, בדוק היכן npm מתקין packages גלובליים:
> 
> ```
> npm prefix -g
> # הוסף את <output>/bin ל-PATH
> ```

---

## 2\. הגדרת אישורים

```
mkdir -p ~/.config/codenomad
cat > ~/.config/codenomad/env <<'EOF'
CODENOMAD_SERVER_USERNAME=codenomad
CODENOMAD_SERVER_PASSWORD=your-password
EOF
chmod 600 ~/.config/codenomad/env
```

---

## 3\. הורדת ממשק ה-RTL+Hebrew

### הורדה וחילוץ

```
mkdir -p ~/.config/codenomad/ui

curl -L https://github.com/MusiCode1/CodeNomad/releases/download/v0.12.3-rtl-he/codenomad-ui-rtl-he.zip \
  -o /tmp/codenomad-ui-rtl-he.zip
```

**חילוץ עם** `**unzip**` **(מומלץ):**

```
unzip -o /tmp/codenomad-ui-rtl-he.zip -d ~/.config/codenomad/ui
```

**חילוץ עם** `**python3**` **(אם** `**unzip**` **אינו מותקן):**

```
python3 -c "
import zipfile, os
with zipfile.ZipFile('/tmp/codenomad-ui-rtl-he.zip') as z:
    z.extractall(os.path.expanduser('~/.config/codenomad/ui'))
print('Done.')
"
```

לאחר החילוץ, וודא ש-`index.html` נמצא ישירות בתיקייה:

```
ls ~/.config/codenomad/ui/index.html
```

> אם הקובץ נמצא ב-`ui/dist/index.html` (zip ישן), השתמש ב-`--ui-dir ~/.config/codenomad/ui/dist` במקום.

---

## 4\. הפעלה ידנית (לבדיקה)

```
codenomad \
  --host 0.0.0.0 \
  --ui-dir ~/.config/codenomad/ui \
  --ui-no-update
```

פתח בדפדפן: `http://<כתובת-השרת>:9899`

בחלון ה-UI, עבור לבורר השפות ובחר **עברית** להפעלת התרגום.

### אפשרות: עדכון אוטומטי של ה-UI מהמניפסט

במקום `--ui-dir` אפשר להשתמש ב-`--ui-manifest-url` כדי שהשרת יוריד ויעדכן את ה-UI אוטומטית:

```
codenomad \
  --host 0.0.0.0 \
  --ui-manifest-url https://raw.githubusercontent.com/MusiCode1/CodeNomad/i18n-hebrew/manifest.json
```

> במצב זה השרת יוריד את ה-UI בהפעלה הראשונה ויעדכן אוטומטית כשיוצאת גרסה חדשה.

---

## 5\. שירות systemd (הפעלה אוטומטית עם המערכת)

### יצירת קובץ השירות

```
mkdir -p ~/.config/systemd/user
```

מצא את נתיב ה-node וה-codenomad שלך:

```
which node        # למשל: /usr/bin/node
which codenomad   # למשל: /usr/local/bin/codenomad
```

צור את קובץ השירות:

```
cat > ~/.config/systemd/user/codenomad.service <<'EOF'
[Unit]
Description=CodeNomad Server (RTL + Hebrew)
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5

# קובץ אישורים — ראה שלב 2
EnvironmentFile=%h/.config/codenomad/env

ExecStart=/usr/bin/node /usr/local/lib/node_modules/@neuralnomads/codenomad/dist/bin.js \
  --host 0.0.0.0 \
  --ui-dir %h/.config/codenomad/ui \
  --ui-no-update

[Install]
WantedBy=default.target
EOF
```

> **חשוב:** החלף את הנתיבים בנתיבים מהפקודות `which` שהרצת למעלה.  
> נתיב הבינארי של node: `$(which node)`  
> נתיב bin.js: `$(npm prefix -g)/lib/node_modules/@neuralnomads/codenomad/dist/bin.js`

### הפעלת השירות

```
systemctl --user daemon-reload
systemctl --user enable --now codenomad
systemctl --user status codenomad
```

### לוגים

```
journalctl --user -u codenomad -f
```

---

## 6\. הפעלה לאחר logout (שרתים ללא מסך)

```
loginctl enable-linger $USER
```

פקודה זו מאפשרת לשירותי המשתמש לרוץ גם כשאין session פעיל.

---

## עדכון לגרסה חדשה

כשיוצאת גרסה חדשה:

```
# הורד את ה-UI החדש
curl -L https://github.com/MusiCode1/CodeNomad/releases/latest/download/codenomad-ui-rtl-he.zip \
  -o /tmp/codenomad-ui-rtl-he.zip

rm -rf ~/.config/codenomad/ui/*

unzip -o /tmp/codenomad-ui-rtl-he.zip -d ~/.config/codenomad/ui
# או: python3 -c "import zipfile,os; zipfile.ZipFile('/tmp/codenomad-ui-rtl-he.zip').extractall(os.path.expanduser('~/.config/codenomad/ui'))"

systemctl --user restart codenomad
```

---

## פתרון בעיות נפוצות

| בעיה | פתרון |
| --- | --- |
| `codenomad: command not found` | הוסף `$(npm prefix -g)/bin` ל-`~/.bashrc` |
| השירות לא עולה | בדוק נתיבים ב-`ExecStart` — חייב להיות `node`, לא `bun` |
| הממשק לא נטען | וודא שהחלצה הצליחה: `ls ~/.config/codenomad/ui/index.html` |
| העברית לא מופיעה | בחר את השפה ידנית מבורר השפות בממשק |
| השרת לא נגיש מרחוק | וודא ש-`--host 0.0.0.0` מוגדר ושה-firewall פותח את פורט 9899 |