4.0 KiB
4.0 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #217 | 8 |
|
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, puisreattach_*côté app-tauri si nécessaire. - Branche locale créée par Git:
fix/217-layout-gitgraph-conversation-lossdepuisdevelop@02715a0.
Diagnostic DevFrontend
- Bug confirmé côté frontend.
- Cause: au retour de layout,
CustomAgentChatViewsavait reprendre viasessionId, mais pas viaconversationIdseul. 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 parsessionId - restauration initiale depuis le cache conversation quand
sessionIdmanque - reprise au retour avec
conversationIdconnu et scrollback appliqué, sans relance froide implicite
- cache UI ajouté par
- QA a trouvé un gap: la vue repeignait depuis le cache mais relançait encore
launchAgentChatquandsessionIdé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 appelerlaunchAgentChat
- le cache conversation conserve aussi le
- Fichiers modifiés:
frontend/src/features/agents/CustomAgentChatView.tsxfrontend/src/features/agents/CustomAgentChatView.test.tsxfrontend/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_chatpréserve session + scrollback;reattach_agent_chatrelit le scrollback;set_active_layoutne 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
conversationIdconnu /sessionIdnul qui déclenchait encorelaunchAgentChat. - Deuxième passage QA: VERT.
- Vérification explicite validée:
- retour de layout avec
conversationIdconnu etsessionIdnul => conversation visible restaurée - pas de relance froide implicite
launchAgentChatnon appelé- la session cachée est réattachée et le replay restaure les messages visibles
- retour de layout avec
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é.