fix(chat-share): Workspace-Änderungen geteilter Chats gelangen nicht auf den anderen Rechner #326

Open
opened 2026-11-05 11:23:43 +00:00 by alf · 2 comments
Owner

Befund

Eine Notiz im Workspace eines geteilten Chats (grüner Daumen) wurde auf dem Mac-VM-Server im Seitenpanel dupliziert und bearbeitet. Nach manuellem Sync (erst VM, dann Mac Studio) kam die Kopie auf dem Studio nicht an.

Ursache (im Code belegt)

  1. Export: ChatShareManager.exportIfShared läuft nur nach Jobende (AgentJob.swift, Status .idle) und beim Umbenennen. Schreiben, Duplizieren, Verschieben, Umbenennen oder Löschen von Workspace-Dateien über /file/* und POST /vault/file löst keinen Export aus; die Kopie bleibt auf dem Rechner, der sie angelegt hat.
  2. Import: ChatShareFiles.digest bildet die Prüfsumme nur aus chat-manifest.json und messages.json; importAll überspringt bei gleicher Prüfsumme. Eine reine Workspace-Änderung wird beim Import nie erkannt, selbst wenn sie im Vault liegt.

Fix

  • Prüfsumme umfasst zusätzlich die Dateiliste des Workspaces (relativer Pfad, Größe, Inhalts-Hash bei kleinen Dateien; keine Änderungszeiten, weil Git sie nicht erhält).
  • Mutierende Datei-Routen stoßen nach kurzer Entprellung einen Export der geteilten Chats an, deren Workspace sich gegenüber dem Vault-Stand geändert hat (nicht während ein Job läuft).
  • Linux-Server: gleiche Prüfsumme in chat_share.py (Gegenstück iris/iris-linux-server, siehe Verweis unten).

Hinweis

Einmalig nach dem Update weicht die gespeicherte Prüfsumme von Chats mit Workspace ab; der nächste Import liest diese Chats einmal neu aus dem Vault ein.

## Befund Eine Notiz im Workspace eines geteilten Chats (grüner Daumen) wurde auf dem Mac-VM-Server im Seitenpanel dupliziert und bearbeitet. Nach manuellem Sync (erst VM, dann Mac Studio) kam die Kopie auf dem Studio nicht an. ## Ursache (im Code belegt) 1. **Export:** `ChatShareManager.exportIfShared` läuft nur nach Jobende (`AgentJob.swift`, Status `.idle`) und beim Umbenennen. Schreiben, Duplizieren, Verschieben, Umbenennen oder Löschen von Workspace-Dateien über `/file/*` und `POST /vault/file` löst keinen Export aus; die Kopie bleibt auf dem Rechner, der sie angelegt hat. 2. **Import:** `ChatShareFiles.digest` bildet die Prüfsumme nur aus `chat-manifest.json` und `messages.json`; `importAll` überspringt bei gleicher Prüfsumme. Eine reine Workspace-Änderung wird beim Import nie erkannt, selbst wenn sie im Vault liegt. ## Fix - Prüfsumme umfasst zusätzlich die Dateiliste des Workspaces (relativer Pfad, Größe, Inhalts-Hash bei kleinen Dateien; keine Änderungszeiten, weil Git sie nicht erhält). - Mutierende Datei-Routen stoßen nach kurzer Entprellung einen Export der geteilten Chats an, deren Workspace sich gegenüber dem Vault-Stand geändert hat (nicht während ein Job läuft). - Linux-Server: gleiche Prüfsumme in `chat_share.py` (Gegenstück iris/iris-linux-server, siehe Verweis unten). ## Hinweis Einmalig nach dem Update weicht die gespeicherte Prüfsumme von Chats mit Workspace ab; der nächste Import liest diese Chats einmal neu aus dem Vault ein.
Author
Owner

PR #327 gemergt: fix(chat-share): Workspace-Änderungen geteilter Chats exportieren und importieren (iris/Iris#326)
http://docker:3000/iris/Iris/pulls/327

Commits:

  • fix(chat-share): Workspace-Änderungen geteilter Chats exportieren und importieren (iris/Iris#326)

Stand

Befund: Eine auf der Mac-VM duplizierte Notiz im Workspace eines geteilten Chats kam auf dem Mac Studio nicht an. Zwei Lücken: (1) Export nur nach Jobende und Umbenennen, nicht nach Datei-Routen; (2) ChatShareFiles.digest kannte den Workspace nicht, der Import übersprang den Chat bei gleichem Verlauf.

Geändert:

  • ChatShareFiles.digest enthält die Workspace-Dateiliste (relativer Pfad, Größe, SHA-1 bei Dateien ≤ 256 KiB, keine Änderungszeiten). Ohne Workspace-Dateien bleibt die Prüfsumme die alte.
  • ChatShareManager.workspaceMayHaveChanged() (entprellt, 5 s) exportiert jeden geteilten Chat, dessen Workspace vom Vault-Stand abweicht und dessen Job nicht läuft. Aufgerufen von /file/{copy,delete,rename,mkdir,move,upload} und POST /vault/file im Mac-Server.
  • Wire-Protokoll-Abschnitt „Geteilte Chats“ nachgezogen. Linux-Gegenstück: iris/iris-linux-server#141.

Geprüft: scripts/test-vault-sync-core.sh: 300 Prüfungen, 0 Fehler (neu: neue/geänderte/gelöschte Datei ändert die Prüfsumme, Änderungszeit allein nicht, workspaceDiffers).

Nicht geprüft: Kein Xcode-Build der App (kein xcodebuild im Terminal), ChatShareManager/IrisRemoteServer also nicht übersetzt. Nicht zwischen zwei echten Rechnern ausprobiert (Mac-VM war per SSH nicht erreichbar). Der Befund zur VM stammt aus dem Code und dem Zustand auf dem Studio.

Grenzen / offen:

  • Einmalig nach dem Update weicht die gespeicherte Prüfsumme von Chats mit Workspace ab; der nächste Import liest sie neu ein.
  • Gelöschte Dateien löscht der Import auf der Gegenseite nicht (copyWorkspaceItems kopiert nur); nicht Teil dieses Issues.
  • Änderungen auf dem Studio laufen über denselben Weg (gleicher Server-Code).
  • Test: Notiz auf der VM duplizieren, 5 s warten, VM synchronisieren, dann Studio.
PR #327 gemergt: fix(chat-share): Workspace-Änderungen geteilter Chats exportieren und importieren (iris/Iris#326) http://docker:3000/iris/Iris/pulls/327 Commits: - fix(chat-share): Workspace-Änderungen geteilter Chats exportieren und importieren (iris/Iris#326) --- ## Stand **Befund:** Eine auf der Mac-VM duplizierte Notiz im Workspace eines geteilten Chats kam auf dem Mac Studio nicht an. Zwei Lücken: (1) Export nur nach Jobende und Umbenennen, nicht nach Datei-Routen; (2) `ChatShareFiles.digest` kannte den Workspace nicht, der Import übersprang den Chat bei gleichem Verlauf. **Geändert:** - `ChatShareFiles.digest` enthält die Workspace-Dateiliste (relativer Pfad, Größe, SHA-1 bei Dateien ≤ 256 KiB, keine Änderungszeiten). Ohne Workspace-Dateien bleibt die Prüfsumme die alte. - `ChatShareManager.workspaceMayHaveChanged()` (entprellt, 5 s) exportiert jeden geteilten Chat, dessen Workspace vom Vault-Stand abweicht und dessen Job nicht läuft. Aufgerufen von `/file/{copy,delete,rename,mkdir,move,upload}` und `POST /vault/file` im Mac-Server. - Wire-Protokoll-Abschnitt „Geteilte Chats“ nachgezogen. Linux-Gegenstück: iris/iris-linux-server#141. **Geprüft:** `scripts/test-vault-sync-core.sh`: 300 Prüfungen, 0 Fehler (neu: neue/geänderte/gelöschte Datei ändert die Prüfsumme, Änderungszeit allein nicht, `workspaceDiffers`). **Nicht geprüft:** Kein Xcode-Build der App (kein `xcodebuild` im Terminal), `ChatShareManager`/`IrisRemoteServer` also nicht übersetzt. Nicht zwischen zwei echten Rechnern ausprobiert (Mac-VM war per SSH nicht erreichbar). Der Befund zur VM stammt aus dem Code und dem Zustand auf dem Studio. **Grenzen / offen:** - Einmalig nach dem Update weicht die gespeicherte Prüfsumme von Chats mit Workspace ab; der nächste Import liest sie neu ein. - Gelöschte Dateien löscht der Import auf der Gegenseite nicht (`copyWorkspaceItems` kopiert nur); nicht Teil dieses Issues. - Änderungen auf dem Studio laufen über denselben Weg (gleicher Server-Code). - Test: Notiz auf der VM duplizieren, 5 s warten, VM synchronisieren, dann Studio.
Author
Owner

PR #153 gemergt: docs(wire): geteilte Chats — Export bei Workspace-Änderung, Prüfsumme mit Workspace-Dateiliste (iris/Iris#326)
http://docker:3000/alf/2ndbrain/pulls/153

Commits:

  • docs(wire): geteilte Chats — Export bei Workspace-Änderung, Prüfsumme mit Workspace-Dateiliste (iris/Iris#326)
PR #153 gemergt: docs(wire): geteilte Chats — Export bei Workspace-Änderung, Prüfsumme mit Workspace-Dateiliste (iris/Iris#326) http://docker:3000/alf/2ndbrain/pulls/153 Commits: - docs(wire): geteilte Chats — Export bei Workspace-Änderung, Prüfsumme mit Workspace-Dateiliste (iris/Iris#326)
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#326
No description provided.