Chatverlauf: Routen für Zeitleiste, Stand und Klon (Gegenstück zu iris/Iris#338) #147

Open
opened 2026-11-08 19:18:34 +00:00 by alf · 3 comments
Owner

Gegenstück zu iris/Iris#338 (Chatverlauf: Zeitleiste, Detailstand, Klon zum Zeitpunkt). Dort stehen Warum, Wunsch und offene Fragen.

Hier

Routen im Linux-Server (app/chat_share.py und Vault-Routen): Git-Historie des Chat-Ordners lesen, Stand rekonstruieren, Klon als neuen Job anlegen.

Das Wire-Protokoll (Routen für Zeitleiste, Stand zu einem Commit, Klon aus Commit) wird zuerst in Entwicklerdokumentation/02-Wire-Protokoll.md spezifiziert; diese Seite setzt es byte-genau wie der Mac-Server um.

Gegenstück zu iris/Iris#338 (Chatverlauf: Zeitleiste, Detailstand, Klon zum Zeitpunkt). Dort stehen Warum, Wunsch und offene Fragen. ## Hier Routen im Linux-Server (`app/chat_share.py` und Vault-Routen): Git-Historie des Chat-Ordners lesen, Stand rekonstruieren, Klon als neuen Job anlegen. Das Wire-Protokoll (Routen für Zeitleiste, Stand zu einem Commit, Klon aus Commit) wird zuerst in `Entwicklerdokumentation/02-Wire-Protokoll.md` spezifiziert; diese Seite setzt es byte-genau wie der Mac-Server um.
Author
Owner

PR #148 gemergt: feat(history): Chatverlauf – Routen für Zeitleiste, Stand und Klon (#147)
http://docker:3000/iris/iris-linux-server/pulls/148

Commits:

  • feat(history): Chatverlauf – Routen für Zeitleiste, Stand und Klon (#147)

Stand: Linux-Server-Routen (Gegenstück zu iris/Iris#338, Spec: Wire-Protokoll, Abschnitt „Chatverlauf“)

Geändert: iris-server/app/chat_history.py (neu, Git-Kern: Zeitleiste, Stand, LFS-Zeiger, Workspace-Stand, Klon, Wire-Form), drei Routen in main.py, ROUTES.md, tests/test_chat_history.py. Klon nutzt jobs_store.import_job mit dem Manifest des Standes (Titel „ (Stand TT.MM.JJJJ HH:mm)“, frische ID, vote: none, kein _share_id). Fehler durchgehend als {"error": ...}.

Geprüft: 10 Tests grün gegen echte Temp-Git-Repos: Reihenfolge, limit/truncated, Nachrichtenzahl, workspace_changed, Status added/modified/deleted/unchanged, LFS-Zeiger (Größe, Verfügbarkeit, Inhalt), Browser-Tabs, ungültige/fremde/unbekannte Commits, Klon mit und ohne Workspace, nicht geteilt/entteilt, Routen per TestClient (200/404, skipped nur wenn nötig). tests/test_chat_share.py weiter grün.

Nicht geprüft: Nicht auf iris-server deployt; kein Aufruf gegen den laufenden Server mit echtem Vault. git lfs fetch vom Forgejo nicht ausprobiert (nur lokale LFS-Objekte). Byte-Gleichheit mit dem Mac-Server nicht gegen eine echte Antwort des Mac-Servers verglichen, nur gegen die Spec.

Offen: Sheet in Iris.app/IrisClient.app, iOS (iris/2ndbrain-ios#107), Linux-Client.

PR #148 gemergt: feat(history): Chatverlauf – Routen für Zeitleiste, Stand und Klon (#147) http://docker:3000/iris/iris-linux-server/pulls/148 Commits: - feat(history): Chatverlauf – Routen für Zeitleiste, Stand und Klon (#147) --- **Stand: Linux-Server-Routen (Gegenstück zu iris/Iris#338, Spec: Wire-Protokoll, Abschnitt „Chatverlauf“)** **Geändert:** `iris-server/app/chat_history.py` (neu, Git-Kern: Zeitleiste, Stand, LFS-Zeiger, Workspace-Stand, Klon, Wire-Form), drei Routen in `main.py`, `ROUTES.md`, `tests/test_chat_history.py`. Klon nutzt `jobs_store.import_job` mit dem Manifest des Standes (Titel „<Titel> (Stand TT.MM.JJJJ HH:mm)“, frische ID, `vote: none`, kein `_share_id`). Fehler durchgehend als `{"error": ...}`. **Geprüft:** 10 Tests grün gegen echte Temp-Git-Repos: Reihenfolge, `limit`/`truncated`, Nachrichtenzahl, `workspace_changed`, Status added/modified/deleted/unchanged, LFS-Zeiger (Größe, Verfügbarkeit, Inhalt), Browser-Tabs, ungültige/fremde/unbekannte Commits, Klon mit und ohne Workspace, nicht geteilt/entteilt, Routen per TestClient (200/404, `skipped` nur wenn nötig). `tests/test_chat_share.py` weiter grün. **Nicht geprüft:** Nicht auf iris-server deployt; kein Aufruf gegen den laufenden Server mit echtem Vault. `git lfs fetch` vom Forgejo nicht ausprobiert (nur lokale LFS-Objekte). Byte-Gleichheit mit dem Mac-Server nicht gegen eine echte Antwort des Mac-Servers verglichen, nur gegen die Spec. **Offen:** Sheet in Iris.app/IrisClient.app, iOS (iris/2ndbrain-ios#107), Linux-Client.
Author
Owner

PR #149 gemergt: feat(history): Zeitleiste liefert messages_changed und reason (#147)
http://docker:3000/iris/iris-linux-server/pulls/149

Commits:

  • feat(history): Zeitleiste liefert messages_changed und reason (#147)

Stand: messages_changed und reason je Stand der Zeitleiste (Gegenstück zu iris/Iris#338)

Geändert: app/chat_history.py: Fakten je Commit um Prüfsumme von messages.json, Zahl und Text des letzten Nutzer-Prompts erweitert (zwischengespeichert); reason und messages_changed in der Zeitleiste, Regeln wie in der Spec. tests/test_chat_history.py um drei Tests ergänzt (Grund bei neuem Prompt, Betreff als Fallback, Wächter-Betreff ohne Grund, Kürzung).

Geprüft: tests/test_chat_history.py und tests/test_chat_share.py: 31 grün (echte Temp-Repos).

Nicht geprüft: Nicht auf iris-server deployt; nicht mit echtem Vault.

PR #149 gemergt: feat(history): Zeitleiste liefert messages_changed und reason (#147) http://docker:3000/iris/iris-linux-server/pulls/149 Commits: - feat(history): Zeitleiste liefert messages_changed und reason (#147) --- **Stand: `messages_changed` und `reason` je Stand der Zeitleiste** (Gegenstück zu iris/Iris#338) **Geändert:** `app/chat_history.py`: Fakten je Commit um Prüfsumme von `messages.json`, Zahl und Text des letzten Nutzer-Prompts erweitert (zwischengespeichert); `reason` und `messages_changed` in der Zeitleiste, Regeln wie in der Spec. `tests/test_chat_history.py` um drei Tests ergänzt (Grund bei neuem Prompt, Betreff als Fallback, Wächter-Betreff ohne Grund, Kürzung). **Geprüft:** `tests/test_chat_history.py` und `tests/test_chat_share.py`: 31 grün (echte Temp-Repos). **Nicht geprüft:** Nicht auf iris-server deployt; nicht mit echtem Vault.
Author
Owner

PR #150 gemergt: feat(history): Route für eine Datei im Stand eines Commits (#147)
http://docker:3000/iris/iris-linux-server/pulls/150

Commits:

  • feat(history): Route für eine Datei im Stand eines Commits (#147)

Stand: GET /agent/{id}/history/{commit}/file (Gegenstück zu iris/Iris#338)

Geändert: app/chat_history.py (is_safe_relative_path, known_commit), Route in main.py (Datei im Stand des Commits, Content-Type nach Endung, 400/404/413 wie in der Spec), Tests in tests/test_chat_history.py (Datei im ersten und im dritten Stand, fehlende Datei, ..-Pfad, unbekannter Commit).

Geprüft: tests/test_chat_history.py: 13 grün.

Nicht geprüft: Nicht deployt, nicht gegen einen echten Vault und nicht mit einem LFS-Objekt, das vom Forgejo nachgeladen werden muss.

PR #150 gemergt: feat(history): Route für eine Datei im Stand eines Commits (#147) http://docker:3000/iris/iris-linux-server/pulls/150 Commits: - feat(history): Route für eine Datei im Stand eines Commits (#147) --- **Stand: `GET /agent/{id}/history/{commit}/file`** (Gegenstück zu iris/Iris#338) **Geändert:** `app/chat_history.py` (`is_safe_relative_path`, `known_commit`), Route in `main.py` (Datei im Stand des Commits, `Content-Type` nach Endung, 400/404/413 wie in der Spec), Tests in `tests/test_chat_history.py` (Datei im ersten und im dritten Stand, fehlende Datei, `..`-Pfad, unbekannter Commit). **Geprüft:** `tests/test_chat_history.py`: 13 grün. **Nicht geprüft:** Nicht deployt, nicht gegen einen echten Vault und nicht mit einem LFS-Objekt, das vom Forgejo nachgeladen werden muss.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/iris-linux-server#147
No description provided.