docs(memory): notes projet du redémarrage des annonces live (ticket #4)
Notes du chantier #4 relancé sur develop, commit séparé du code (convention d'usage) : - ticket4-restart-on-develop-ebd992e: baseline de redémarrage. - ticket4-overlay-composition-leafview: décision de composition de l'overlay dans le layout (LeafView). - ticket4-announcements-frontend-f1f2f3: cadrage de la surface frontend F1-F3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
25
.ideai/memory/ticket4-overlay-composition-leafview.md
Normal file
25
.ideai/memory/ticket4-overlay-composition-leafview.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
name: ticket4-overlay-composition-leafview
|
||||
description: Règle de composition des deux voiles plein-cellule de LeafView (write-portal injection PTY vs F3 annonces busy) — exclusion mutuelle avec priorité F3, arbitrée pour éviter le double voile.
|
||||
metadata:
|
||||
type: reference
|
||||
---
|
||||
Arbitrage layout Architect 2026-07-04 (branche feature/agent-live-announcements, base develop ebd992e, 481 tests verts).
|
||||
|
||||
**Problème vérifié :** LeafView héberge DEUX voiles plein-cellule inset:0 dans le même conteneur relatif :
|
||||
- write-portal (LayoutGrid.tsx:841, zIndex:4, rgba(0,0,0,0.45), « Un agent est en train de parler… ») = délégation injectée dans le PTY de l'agent (§20.3, flag `overlay` de useWritePortal).
|
||||
- F3 TargetAnnouncementsOverlay (z-20, bg-canvas/85, « …en train de LUI parler… » + réflexions) = agent busy (agentBusyChanged mediator).
|
||||
Ils rendent le MÊME événement depuis deux signaux et montent ENSEMBLE sur le chemin d'injection inter-agent (overlay+busy) → double voile empilé + bannières dupliquées = rendu cassé, chemin nominal.
|
||||
|
||||
**Décision (DevFrontend, layout, zéro backend) :** exclusion mutuelle, un seul voile à la fois, priorité F3 :
|
||||
- busy(agent) → F3 seul ; voile write-portal gated `agentId!=null && overlay && !busyActive`.
|
||||
- sinon overlay → write-portal seul (repli fenêtre sans busy).
|
||||
- jamais les deux.
|
||||
Sécurité : on ne touche que le visuel ; la suspension des frappes (portal.isSuspended(), TerminalView.tsx:182) reste ; F3 est pointer-events-none.
|
||||
|
||||
**Couplage point 3 :** F3 DOIT rendre la bannière sur busy même à 0 annonce (déjà: if(!active) return null, TargetAnnouncementsOverlay.tsx:56), car F3 absorbe le voile write-portal — une garde « ≥1 annonce » rouvrirait le trou d'indication. Pas de garde.
|
||||
|
||||
**F2 (point 4) :** filtre requester==id de ligne suffit en V1 (isolation fil partagé) ; ticketId optionnel dormant.
|
||||
**F3 hébergement (point 1) :** conteneur LeafView validé (pas de ConversationCell sur develop).
|
||||
|
||||
Liens : [[ticket4-restart-on-develop-ebd992e]], [[ticket4-f3-overlay-driven-by-agentbusychanged]], [[inter-agent-live-context-shared-per-agent]].
|
||||
Reference in New Issue
Block a user