diff --git a/.ideai/tickets/200/carnet.md b/.ideai/tickets/200/carnet.md
index 19cebaf7..84362594 100644
--- a/.ideai/tickets/200/carnet.md
+++ b/.ideai/tickets/200/carnet.md
@@ -1,8 +1,8 @@
---
issueRef: "#200"
-version: 16
+version: 19
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
-updatedAt: 1787384954575
+updatedAt: 1787385038497
---
2026-08-14 Main
- Reprise du ticket après livraison initiale du lot Codex-centric.
@@ -19,4 +19,6 @@ updatedAt: 1787384954575
- Analyse Architect: pas un gap de design; suspicion de chemin secondaire ou de comportement agent qui continue d'utiliser/mentionner `/tmp` explicitement au lieu de suivre l'env temp fourni.
- Suite proposée: reproduire le cas réel avec le provider/profil concerné, vérifier la valeur réellement vue dans le process agent, puis décider entre fix runtime (si env perdu/contourné) et renfort d'instruction/runtime API (si l'agent hardcode `/tmp`).
- Git a retenu une branche de fix dédiée `fix/200-managed-tmp-injection-regression` depuis `develop`, HEAD `3344361fc27bace7f68953f7a11623af1d8a7d86`.
-- DevBackend: diagnostic retenu = l'env temp était déjà injecté, mais le convention file était généré avant l'allocation du temp, donc aucun signal textuel explicite ne guidait l'agent; correctif implémenté = allocation plus tôt dans le launch path, ajout de `IDEA_MANAGED_TMP`, et injection conditionnelle d'une instruction “Temporaire IdeA géré” avec le chemin concret; tests agent_lifecycle renforcés.
\ No newline at end of file
+- DevBackend: diagnostic retenu = l'env temp était déjà injecté, mais le convention file était généré avant l'allocation du temp, donc aucun signal textuel explicite ne guidait l'agent; correctif implémenté = allocation plus tôt dans le launch path, ajout de `IDEA_MANAGED_TMP`, et injection conditionnelle d'une instruction “Temporaire IdeA géré” avec le chemin concret; tests agent_lifecycle renforcés.
+- QA 2026-08-22: VERDICT VERT. Commandes validées: `cargo test -p application --test agent_lifecycle launch_pty_allocates_managed_tmp_env_and_sandbox_from_same_path -- --exact --nocapture`, `cargo test -p application --test agent_lifecycle launch_structured_non_codex_uses_managed_tmp_for_env_without_os_sandbox -- --exact --nocapture`, `cargo test -p application --test agent_lifecycle launch_structured_codex_uses_managed_tmp_for_env_and_writable_roots_without_os_sandbox -- --exact --nocapture`, `cargo test -p application --test agent_lifecycle managed_tmp -- --nocapture`.
+- Git 2026-08-22: commit local `f8cf86c` `fix(infra): temp IdeA géré alloué avant le convention file, exposé via IDEA_MANAGED_TMP et instruction explicite privilégiant le temp géré à /tmp — #200`; merge local `--no-ff` vers `develop` = `85f659c` `merge(infra): temp IdeA géré visible par l'agent avant le spawn — #200 (QA verte)`; aucun push.
\ No newline at end of file
diff --git a/.ideai/tickets/200/issue.md b/.ideai/tickets/200/issue.md
index 58c99aed..6d952d1c 100644
--- a/.ideai/tickets/200/issue.md
+++ b/.ideai/tickets/200/issue.md
@@ -2,7 +2,7 @@
id: "0268a6a4-2ceb-4332-a113-29b93a59caf1"
number: 200
title: "Remplacer l'usage implicite de /tmp par un temp IdeA géré pour les agents"
-status: "inProgress"
+status: "closed"
priority: "high"
sprint: null
links: []
@@ -11,7 +11,7 @@ attachments: []
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
createdAt: 1786743649446
-updatedAt: 1787384954575
-version: 16
+updatedAt: 1787385038497
+version: 19
---
Extension du lot temp IdeA géré. Le temp principal launch-scoped existe déjà mais le comportement doit maintenant être généralisé à tous les agents, pas seulement Codex, afin que n'importe quel agent puisse utiliser le répertoire temporaire IdeA via ses variables d'environnement/runtime appropriées. En plus du release au stop de session déjà en place, IdeA doit purger le contenu de ce stockage temporaire à la fermeture de l'application pour éviter l'accumulation résiduelle. Le lot couvre donc: projection cross-agent du temp IdeA principal, cohérence sandbox/runtime selon les profils, et purge à l'extinction d'IdeA.
\ No newline at end of file
diff --git a/.ideai/tickets/236/carnet.md b/.ideai/tickets/236/carnet.md
new file mode 100644
index 00000000..135099b4
--- /dev/null
+++ b/.ideai/tickets/236/carnet.md
@@ -0,0 +1,25 @@
+---
+issueRef: "#236"
+version: 12
+updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
+updatedAt: 1787385711767
+---
+2026-08-21 Main
+- Bug signalé: dans la custom CLI, la conversation s'affiche bien au début puis les `progress`, messages MCP et assimilés cessent de s'afficher au bout d'un moment.
+- Architect: suspect prioritaire frontend, dans `frontend/src/features/agents/CustomAgentChatView.tsx`, autour de `receive`, `foldChunk`, `appendProgress`, `progressUpsertKey`, `progressEntityKey`.
+- Hypothèse principale confirmée par DevFrontend: collisions de clé / upsert trop agressif sur `progress` `tool`/`mcp` sans `progressId`, causant des remplacements au lieu d'un enrichissement correct de l'historique visible.
+- DevFrontend a corrigé la logique legacy: cycles successifs sans `progressId` restent visibles; `completed` finalise puis libère la clé active; doublons provider/IdeA d'une même complétion restent dédupliqués.
+- Fichiers modifiés: `frontend/src/features/agents/CustomAgentChatView.tsx`, `frontend/src/features/agents/CustomAgentChatView.test.tsx`.
+- QA: VERT. Commandes exécutées: `npm test -- src/features/agents/CustomAgentChatView.test.tsx` => 55/55 verts; `npm test -- src/features/agents` => 151/151 verts; `npm run typecheck` => OK.
+- Git a commité le correctif: `aaf628f` `fix(cli): préserve l'affichage des progress legacy sans progressId via clés d'occurrence dédiées — #236`.
+- Git a mergé localement le fix dans `develop` via `--no-ff`: `2c8c71c` `merge(cli): les messages progress/MCP ne disparaissent plus après un certain temps — #236 (QA verte)`.
+- Aucun push effectué. Ticket clôturé.
+
+2026-08-22 Main
+- Réouverture du ticket pour un cas résiduel distinct observé utilisateur: un agent est en cours de travail mais le message MCP / l'annonce inter-agent attendu n'apparaît pas sur la surface des messages.
+- UX: comportement attendu = preview côté demandeur + overlay côté cible visibles pendant le travail, puis purge à idle; après changement de projet, aucune fuite visuelle inter-projet, et réhydratation correcte dans le projet courant.
+- Architect: diagnostic le plus probable = store/provider d'annonces non scopé par `projectId`; l'état app-global survit au switch, `seedBusy` n'hydrate que si absent, et un tour déjà en cours peut donc ne jamais remonter visuellement dans le nouveau projet.
+- Correctif minimal demandé au frontend: `reset + filter + rehydrate` à chaque changement de `projectId`, idéalement avec un store project-scoped.
+- Git: branche locale retenue `fix/236-annonces-store-par-projectid` depuis `develop` @ `85f659c`.
+- DevFrontend: diagnostic confirmé = provider app-global non borné par projet; correctif implémenté = provider explicitement borné par `projectId`, reset de `index + busy` au changement de projet, filtrage des `agentAnnouncement` par `event.projectId`, tests ciblés verts et `npm run typecheck` vert.
+- Risque résiduel signalé par DevFrontend: `agentBusyChanged` ne porte pas encore `projectId`, donc le lifecycle live busy ne peut pas être filtré aussi strictement que les annonces; le bug visé est néanmoins corrigé par reset + réhydratation au switch.
\ No newline at end of file
diff --git a/.ideai/tickets/236/issue.md b/.ideai/tickets/236/issue.md
new file mode 100644
index 00000000..318c2da2
--- /dev/null
+++ b/.ideai/tickets/236/issue.md
@@ -0,0 +1,17 @@
+---
+id: "5c03537c-2daf-4802-a6fb-6c8aa92b8aa7"
+number: 236
+title: "Custom CLI: les messages progress/MCP disparaissent après un certain temps"
+status: "inProgress"
+priority: "critical"
+sprint: null
+links: []
+agentRefs: []
+attachments: []
+createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
+updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
+createdAt: 1787326716055
+updatedAt: 1787385711767
+version: 12
+---
+Bug sur l'affichage des conversations dans la custom CLI: l'historique s'affiche correctement au début, puis au bout d'un moment les messages `progress`, usages MCP et assimilés cessent de s'afficher. Il faut reproduire, diagnostiquer la cause et corriger sans casser l'affichage initial.
\ No newline at end of file
diff --git a/frontend/src/app/App.tsx b/frontend/src/app/App.tsx
index a470d066..19fd7383 100644
--- a/frontend/src/app/App.tsx
+++ b/frontend/src/app/App.tsx
@@ -9,7 +9,6 @@ import { useEffect, useState } from "react";
import type { DomainEvent, HealthReport } from "@/domain";
import { ProjectsView } from "@/features/projects";
import { FirstRunWizard } from "@/features/first-run";
-import { AnnouncementsProvider } from "@/features/announcements";
import { AppExitConfirmDialog } from "@/features/appExit";
import { PluginRuntimeProvider } from "@/features/plugins";
import { Panel, Spinner, Toolbar } from "@/shared";
@@ -65,7 +64,6 @@ export function App() {
}, [profile]);
return (
-