Files
IdeA/.ideai/tickets/217/carnet.md

4.0 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#217 8
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
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é.