62 lines
4.0 KiB
Markdown
62 lines
4.0 KiB
Markdown
---
|
|
issueRef: "#217"
|
|
version: 8
|
|
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
|
updatedAt: 1786815249567
|
|
---
|
|
## Triage 2026-08-15
|
|
- Symptôme rapporté: la conversation disparaît parfois quand l'utilisateur passe de son layout agent au layout Git Graph puis revient.
|
|
- Cadrage UX: un switch de layout ne doit jamais réinitialiser la conversation; au retour, il faut restaurer transcript connu + état de réattachement explicite au lieu d'une surface vide.
|
|
- Cadrage Architect: cause probable côté projection frontend / corrélation de réattache (`conversationId`/`sessionId`) plus qu'une perte backend réelle.
|
|
- Couches à inspecter d'abord: `frontend/src/features/layout/LayoutGrid.tsx`, `frontend/src/features/agents/CustomAgentChatView.tsx`, hooks layout frontend, puis `reattach_*` côté app-tauri si nécessaire.
|
|
- Branche locale créée par Git: `fix/217-layout-gitgraph-conversation-loss` depuis `develop` @ `02715a0`.
|
|
|
|
## Diagnostic DevFrontend
|
|
- Bug confirmé côté frontend.
|
|
- Cause: au retour de layout, `CustomAgentChatView` savait reprendre via `sessionId`, mais pas via `conversationId` seul. Si le layout revenait avec conversation persistée mais sans session réattachable, la vue repartait vide et la reprise n'appliquait pas le scrollback.
|
|
- Correctif initial appliqué:
|
|
- cache UI ajouté par `conversationId`, en plus du cache par `sessionId`
|
|
- restauration initiale depuis le cache conversation quand `sessionId` manque
|
|
- reprise au retour avec `conversationId` connu et scrollback appliqué, sans relance froide implicite
|
|
- QA a trouvé un gap: la vue repeignait depuis le cache mais relançait encore `launchAgentChat` quand `sessionId` était nul dans les props.
|
|
- Correctif complémentaire livré:
|
|
- le cache conversation conserve aussi le `sessionId`
|
|
- le cache n'écrase plus une entrée utile par un état vide sans session
|
|
- au retour, si le cache conversation porte un `sessionId`, la vue réattache cette session et sort sans appeler `launchAgentChat`
|
|
- Fichiers modifiés:
|
|
- `frontend/src/features/agents/CustomAgentChatView.tsx`
|
|
- `frontend/src/features/agents/CustomAgentChatView.test.tsx`
|
|
- `frontend/src/features/layout/LayoutGrid.chat.test.tsx`
|
|
- Tests DevFrontend finaux:
|
|
- `npm test -- CustomAgentChatView.test.tsx` => OK (50)
|
|
- `npm test -- LayoutGrid.chat.test.tsx` => OK (14)
|
|
- `npm run typecheck` => OK
|
|
|
|
## Diagnostic DevBackend
|
|
- Pas de bug backend/app-tauri trouvé.
|
|
- `detach_agent_chat` préserve session + scrollback; `reattach_agent_chat` relit le scrollback; `set_active_layout` ne détruit pas les conversations/layouts; la perte apparente ne vient pas du backend selon les tests ciblés.
|
|
- Tests DevBackend:
|
|
- `cargo test -p app-tauri --test chat_bridge reattach` => OK (4)
|
|
- `cargo test -p app-tauri --test dto_layouts git_graph` => OK (2)
|
|
- `cargo test -p application relaunch_other_cell_with_conversation_id_rebinds` => OK (1)
|
|
- `cargo test -p application launch_other_cell_with_conversation_id_rebinds_no_respawn` => OK (1)
|
|
- `cargo test -p application attach_` => OK (5)
|
|
- `cargo test -p application --test layout_usecases` => OK (27)
|
|
- Conclusion: correction frontend, pas backend.
|
|
|
|
## QA
|
|
- Premier passage QA: ROUGE sur le scénario `conversationId` connu / `sessionId` nul qui déclenchait encore `launchAgentChat`.
|
|
- Deuxième passage QA: VERT.
|
|
- Vérification explicite validée:
|
|
- retour de layout avec `conversationId` connu et `sessionId` nul => conversation visible restaurée
|
|
- pas de relance froide implicite
|
|
- `launchAgentChat` non appelé
|
|
- la session cachée est réattachée et le replay restaure les messages visibles
|
|
|
|
## Git
|
|
- Commit fix: `581063c` — `fix(cli): restaure la conversation au retour de layout via cache conversationId+sessionId — #217`
|
|
- Commit bookkeeping: `33c6fc6` — `chore(idea): bookkeeping #217 QA verte + clôture #216`
|
|
- Merge local: `3d466f9` — `merge(cli): conservation conversation au switch layout Git Graph — #217 (QA verte)`
|
|
- Branche finale active: `develop`
|
|
- Aucun push effectué.
|