Files
IdeA/.ideai/memory/ticket56-visibleelsewhere-derives-from-layout.md
Blomios 8e481aed69 chore(ideai): état d'orchestration du sprint #13 (transport HTTP/WS + surface web)
Versionne l'état runtime IdeA produit pendant le sprint #13 : store de
tickets (dont les nouveaux #55 à #67), compteur et index, notes de mémoire
projet des lots F0 à F5, et journal des tâches de fond.

Séparé du code applicatif conformément à la convention du dépôt
(cf. ad1f225, a244f32) : métadonnée d'orchestration last-writer-wins,
sans impact sur le build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:32:39 +02:00

1.6 KiB

name: ticket56-visibleelsewhere-derives-from-layout description: Fix frontend du sélecteur d'agent : la désactivation « visible ailleurs » doit venir du layout courant, pas du dernier nodeId du live registry. metadata: type: reference

Bug #56 : agent X affiché en cellule A → A bascule sur Y → X désactivé (« visible ailleurs ») en cellule B alors que X n'est plus affiché nulle part.

Cause : le live registry garde X→nodeId A même après le swap ; LayoutGrid.visibleElsewhere lisait live.nodeId comme « affiché ici ».

Fix (frontend pur, ne tue pas la session) dans frontend/src/features/layout/LayoutGrid.tsx :

  • visibleElsewhere(candidate) dérive du layout courant : truthy uniquement s'il existe une feuille visible ≠ cellule courante avec leaf.agent === candidate. Retourne { nodeId }.
  • backgroundLive utilise !visibleElsewhere(candidate) au lieu de !visibleNodeIds.has(live.nodeId) ; garde live.nodeId === id (anti-boucle self-launch).
  • onChange du select : même dérivation ; sélection inchangée (attachLiveAgent si sessionId sinon setCellAgent).
  • Prop visibleNodeIds supprimé (devenu mort) de tout le threading LayoutGrid→NodeView→Split/Grid/Leaf.

Invariant préservé : agent réellement épinglé dans une cellule visible reste NON sélectionnable ailleurs.

Piège de test : un test qui mocke listLiveAgents avec un nodeId visible mais sans épingler l'agent dans ce leaf ne désactive plus rien — il faut setCellAgent réel. Tests dans singletonAgent.test.tsx (describe « ticket #56 » + ajustement R0d). Suite frontend : 706 verts.