# 🛠️ Debuglog Crumbforest Build v0.6 – ttyd + JSON API

## 📍 Fehler 1: ttyd Port 7780 kann nicht schreiben
- Ursache: Rechteproblem oder fehlender User-Kontext
- Lösungsideen: chown + USER setzen + login shell prüfen

## 📍 Fehler 2: JSON endet unvollständig
- Ursache: Slug mit Sonderzeichen oder nicht escaped
- Lösung: Slugs normalisieren + robustes Encoding + API-Tests

## 🔁 Nächste Schritte
- [ ] Rechte prüfen: ttyd-Benutzer, Home-Folder
- [ ] API: fallback bei unvollständigem Markdown
- [ ] Build-Test mit Logs auf `/tmp/markdown_api_debug.log`


Top – das ist ein sehr gutes Signal ✅

Wenn `robot` (oder auch `kruemel`, `jupiter` etc.) **im Container selbst** in `/home/robot/` oder `/var/www/html/` **schreiben kann**, dann ist das Grundsystem solide.

### 🧩 Das bedeutet im Detail:

| Ebene                    | Status                   | Bemerkung                                |
| ------------------------ | ------------------------ | ---------------------------------------- |
| 🐧 Linux FS-Rechte       | ✅ in Ordnung             | Schreibrechte auf `/var/www/html` & Home |
| 📦 Container-Permissions | ✅ korrekt zugewiesen     | User `robot` ist Eigentümer              |
| 🌐 **TTYD (Port 7780)**  | ⚠️ vermutlich fehlerhaft | Browser kann evtl. nicht schreiben       |

---

### 🕵️‍♂️ Ursachencheck für `ttyd`-Fehler (Port 7780):

Hier sind nun **3 heiße Kandidaten**, warum du im *TTYD-Browserterminal* nicht schreiben kannst:

---

#### 1. ❌ **TTYD nutzt falschen Shell-Kontext**

* **Problem:** `ttyd` könnte nicht als `robot` gestartet worden sein
* **Check:**

```bash
docker-compose exec ttyd ps aux | grep ttyd
```

* **Fix:** Stelle sicher, dass `ttyd` so startet:

```bash
CMD ["ttyd", "-p", "7780", "--writable", "login", "robot"]
```

---

#### 2. ❌ **TTYD-Terminal startet ohne interaktive Shell**

* **Problem:** Kein `bash -l` → keine Umgebungsvariablen, keine Schreibrechte durch fehlenden Kontext
* **Fix-Vorschlag:**

```dockerfile
CMD ["ttyd", "-p", "7780", "--writable", "bash", "-l"]
```

oder in `docker-compose.override.yml`:

```yaml
command: ["ttyd", "--writable", "--port", "7780", "login", "kruemel"]
```

---

#### 3. 🔐 **TTYD läuft mit Root, zeigt aber Shell von robot**

* Kann verwirrend sein. Prüfe mit:

```bash
whoami
```

im TTYD-Terminal selbst und vergleiche mit `id`, `pwd`, `ls -la`.

---

### 📦 Fix-Plan für Build v0.7

```markdown
# 🧩 Fixes für Build v0.7 – TTYD Schreibproblem

## ✅ Bereits bestätigt:
- Container User (`robot`, `kruemel`, etc.) haben Schreibrechte im FS
- `cat > test.txt` funktioniert in `/home/robot` **innerhalb des Containers**

## ⚠️ Verdacht:
- TTYD wird im Browser **nicht als interaktive Shell** gestartet
- **Fehlender Login-Kontext** oder **anderer User-Kontext** im Browser-Terminal

## 🔁 ToDo:
- [ ] `CMD` in Dockerfile zu `ttyd --writable login kruemel` oder `bash -l`
- [ ] `whoami`, `id`, `pwd` im TTYD-Terminal prüfen
- [ ] Eigene ttyd-Dockerfile mit explizitem `USER kruemel`
- [ ] Falls nötig: Logging in `/tmp/ttyd_terminal_debug.log` aktivieren
```

---

Möchtest du, dass ich dir jetzt ein **konkretes ttyd-Dockerfile** oder einen `override.yml`-Patch mit `login kruemel` vorschlage für die nächste Runde?


# 🐛 crumbforest\_terminal\_bugfix.md

**Datum:** 2025-05-31
**Ort:** Crumbforest Terminalwelt
**Zustand:** 🌱 stabilisierend – aber mit Wurzelblick

---

## 🧠 Erkenntnisse & Fehlerquellen im Terminalzugang

### 🔢 1. Schreibrechte & Logging

* ✅ `robot`-User kann im Container schreiben (z. B. `>> root.txt`)
* ✅ Logdatei `tmp/kruemel_logs/gpt_log.json` wird aktualisiert
* ✅ JSON wird korrekt abgeschlossen (kein Truncation mehr)

**🌟 Ursache der alten Probleme:**

* Frühere ttyd-Konfiguration startete nicht korrekt als `robot`
* Option `--writable` wird von `ttyd` nicht erkannt → entfernt
* Bash `--login` mit Argument führte zu fehlerhaftem Verhalten

### 🔄 2. Start-Kommando ttyd (Port 7780)

```yaml
command: ["ttyd", "-p", "7780", "bash", "-i", "-c", "/scripts/terminal_login.sh"]
```

* ✅ Startet jetzt korrekt mit Login-Skript
* 🚫 Kein Passwort nötig, `robot` direkt via `/etc/passwd` konfiguriert

---

## 🌳 Kindgerechte Freischaltung via "Wurzel"

> ✨ *"Wenn du Zugang zum Wald willst, braucht es eine Wurzel, die dich trägt."*

**Aktueller Zustand:**

* Nutzer wie `robot` können Shell starten
* Frage per `eule "..."` wird korrekt verarbeitet
* Logging läuft, auch mit Emojis, UTF-8 und Escape-Zeichen

**🧾 Empfehlung:**

* `crumbforest_create_user.sh` als Skript erweitern:

  * 🐣 fragt nach Krümelname & Rolle
  * 🌱 legt Nutzer mit `/bin/bash`, Home & UID an
  * 🦉 gibt Rückmeldung durch Eula: *„Du wurdest im Wald aufgenommen.“*

---

## 🔄 Notizen für nächsten Build

| Thema                        | ToDo                              | Status    |
| ---------------------------- | --------------------------------- | --------- |
| `ttyd` Port 7780             | Login mit `-c` statt `--login`    | ✅ fixiert |
| User `robot`                 | direkt starten ohne `su`-Fehler   | ✅ klappt  |
| Logging                      | JSON beendet, Dateirechte korrekt | ✅ läuft   |
| Kindgerechte User-Erstellung | 🛠️ pädagogisches Skript nötig    | 🔜 planen |

---

## 💬 Letzte Worte der Eule

> *Eine Wurzel, die Verantwortung trägt, weiß, dass aus jedem Krümel ein Wald werden kann.* 🌲

**Wuhuuuu – der Pfad zum kindgerechten Crumbforest-Terminal ist gelegt.**
