Chat-Export/-Import: zugeordnete Notiz (im Workspace) und offene Browser-Tabs mitnehmen #123

Open
opened 2026-10-20 18:20:51 +00:00 by alf · 0 comments
Owner

Wunsch

Wenn Chats exportiert und wieder importiert werden, sollen auch die dem Chat zugeordnete Notiz (sofern sie im Chat-Workspace liegt) und die offenen Browser-Tabs mitgehen. Nach dem Import soll der rechte Seitentab so aussehen wie vor dem Export.

Beobachtung (Nutzer)

Die Notiz aus dem Workspace wird mit exportiert und importiert (sie liegt als Datei im Workspace-Ordner), aber der rechte Seitentab „Notiz“ ist nach dem Import leer: die Zuordnung Chat → Notiz fehlt, die Datei ist da.

Befund im Code (gelesen, nicht ausprobiert)

  • ChatBundleBuilder.ChatManifest (Format-Version 1, ChatBundleBuilder.swift) enthält u. a. jobID, title, agentType, backend, model, Zeitstempel, Systemprompt-Titel, workingDirectory, categoryTags. Weder die Notiz-Zuordnung (AgentJob.vaultNotePath, seit „Notiz pro Chat“) noch Browser-Tabs sind im Manifest.
  • Exportiert wird der Workspace-Ordner des Chats (ChatExportManager, job.workspacePath); die Notiz-Datei kommt dadurch mit, aber importJob(manifest:messages:workspaceSourceURL:) setzt vaultNotePath nicht.
  • Browser-Tabs liegen im Plugin iris-browser auf dem Server je Chat (BrowserPanelModel(client:chatID:), Zustand BrowserPanelState.tabs), nicht im Chat selbst. Nach einem Import gibt es für den Chat keinen Tab-Zustand.
  • Es gibt zwei Wege: lokal (ChatExportManager/ChatImportManager) und gegen einen Server (RemoteChatExportManager/RemoteChatImportManager); beide müssen dasselbe können, und das Paket-Format ist Teil der Wire-/Austauschverträge (Mac- und Linux-Server).

Vorschlag (zu klären)

  1. Notiz: Das Manifest bekommt ein optionales Feld (z. B. noteRelativePath, relativ zum Workspace, nur wenn die Notiz im Workspace liegt). Beim Import wird vaultNotePath auf den neuen Pfad im importierten Workspace gesetzt. Liegt die Notiz im Vault, bleibt es bei der heutigen Regel (nicht exportiert; offen: Hinweis beim Export?).
  2. Browser-Tabs: Das Manifest bekommt eine Liste der offenen Tabs (URL, Titel, aktiver Tab). Beim Import werden sie im Browser-Plugin des Zielservers neu geöffnet (nur wenn das Plugin installiert ist, sonst ohne Fehler überspringen). Kein Seiteninhalt, keine Cookies.
  3. Format: formatVersion erhöhen (2), ältere Pakete bleiben importierbar; neue Felder optional, damit ältere Iris-Versionen neue Pakete weiter lesen (ohne Notiz/Tabs).
  4. Mac und Linux: Server-Seite (Export/Import auf dem Linux-Server, falls vorhanden) und beide Client-Wege angleichen.

Abnahme

  • Chat mit zugeordneter Workspace-Notiz und zwei offenen Tabs exportieren, auf einem anderen Rechner importieren: Seitentab „Notiz“ zeigt die Notiz, Reiter „Browser“ zeigt die zwei Tabs (bei vorhandenem Plugin).
  • Ohne Browser-Plugin am Ziel: Import gelingt, kein Fehler, Hinweis.
  • Altes Paket (Format 1) lässt sich weiter importieren.
## Wunsch Wenn Chats exportiert und wieder importiert werden, sollen auch **die dem Chat zugeordnete Notiz** (sofern sie im Chat-Workspace liegt) und **die offenen Browser-Tabs** mitgehen. Nach dem Import soll der rechte Seitentab so aussehen wie vor dem Export. ## Beobachtung (Nutzer) Die Notiz aus dem Workspace wird mit exportiert und importiert (sie liegt als Datei im Workspace-Ordner), aber der rechte Seitentab **„Notiz“ ist nach dem Import leer**: die Zuordnung Chat → Notiz fehlt, die Datei ist da. ## Befund im Code (gelesen, nicht ausprobiert) - `ChatBundleBuilder.ChatManifest` (Format-Version 1, `ChatBundleBuilder.swift`) enthält u. a. `jobID`, `title`, `agentType`, `backend`, `model`, Zeitstempel, Systemprompt-Titel, `workingDirectory`, `categoryTags`. **Weder die Notiz-Zuordnung (`AgentJob.vaultNotePath`, seit „Notiz pro Chat“) noch Browser-Tabs sind im Manifest.** - Exportiert wird der Workspace-Ordner des Chats (`ChatExportManager`, `job.workspacePath`); die Notiz-Datei kommt dadurch mit, aber `importJob(manifest:messages:workspaceSourceURL:)` setzt `vaultNotePath` nicht. - Browser-Tabs liegen im Plugin `iris-browser` auf dem Server je Chat (`BrowserPanelModel(client:chatID:)`, Zustand `BrowserPanelState.tabs`), nicht im Chat selbst. Nach einem Import gibt es für den Chat keinen Tab-Zustand. - Es gibt zwei Wege: lokal (`ChatExportManager`/`ChatImportManager`) und gegen einen Server (`RemoteChatExportManager`/`RemoteChatImportManager`); beide müssen dasselbe können, und das Paket-Format ist Teil der Wire-/Austauschverträge (Mac- und Linux-Server). ## Vorschlag (zu klären) 1. **Notiz:** Das Manifest bekommt ein optionales Feld (z. B. `noteRelativePath`, **relativ zum Workspace**, nur wenn die Notiz im Workspace liegt). Beim Import wird `vaultNotePath` auf den neuen Pfad im importierten Workspace gesetzt. Liegt die Notiz im Vault, bleibt es bei der heutigen Regel (nicht exportiert; offen: Hinweis beim Export?). 2. **Browser-Tabs:** Das Manifest bekommt eine Liste der offenen Tabs (URL, Titel, aktiver Tab). Beim Import werden sie im Browser-Plugin des Zielservers neu geöffnet (nur wenn das Plugin installiert ist, sonst ohne Fehler überspringen). Kein Seiteninhalt, keine Cookies. 3. **Format:** `formatVersion` erhöhen (2), ältere Pakete bleiben importierbar; neue Felder optional, damit ältere Iris-Versionen neue Pakete weiter lesen (ohne Notiz/Tabs). 4. **Mac und Linux:** Server-Seite (Export/Import auf dem Linux-Server, falls vorhanden) und beide Client-Wege angleichen. ## Abnahme - Chat mit zugeordneter Workspace-Notiz und zwei offenen Tabs exportieren, auf einem anderen Rechner importieren: Seitentab „Notiz“ zeigt die Notiz, Reiter „Browser“ zeigt die zwei Tabs (bei vorhandenem Plugin). - Ohne Browser-Plugin am Ziel: Import gelingt, kein Fehler, Hinweis. - Altes Paket (Format 1) lässt sich weiter importieren.
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#123
No description provided.