--- issueRef: "#208" version: 12 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedAt: 1786777760816 --- 2026-08-15 Main - Demande utilisateur: 1) switch du TUI naïf vers la CLI custom dans le web, 2) layout desktop web identique au système de layout AppImage. - UX: desktop = segmented control dans l’en-tête de cellule/session; mobile = action menu + rappel du mode; layout AppImage desktop uniquement, mobile préservé sans grille multi-cellules. - Architect: converger le desktop web vers ViewPlacements + LayoutTabs + LayoutGrid; ne pas promettre detached sur le web; réutiliser la logique de mode de cellule desktop; risque de divergence si on garde WebWorkspace actuel comme base unique. - Point d’attention initial: la bascule web vers CLI custom nécessitait le chat structuré via l’adapter HTTP frontend. - DevFrontend a livré: - desktop/mobile shell séparés dans WebWorkspace; - desktop web avec LayoutTabs + LayoutGrid et panneaux closed/floating/docked; - mobile web conservé avec shell simplifié; - structured chat web branché dans streamGateways/wsLiveClient/frames pour CLI custom. - QA a d’abord trouvé un bug réel: timeout sur `sendAgentChat()` car les frames `chat.output` portant `replyTo` étaient traitées comme flux spontané. - DevFrontend a corrigé `frontend/src/adapters/http/wsLiveClient.ts` pour corréler ces frames au waiter `send()`. - QA finale: OK - `npm run typecheck` OK - `npm test -- WebDesktopWorkspace agentGateway wsLiveClient.chat` OK (3 fichiers / 12 tests) - `npm test -- WebMobile WebWorkspaceLive WebAgentCell LayoutGrid.chat http/wsLiveClient http/agentGateway` OK (8 fichiers / 52 tests) - Git a ensuite exécuté: - commit feature `7cdb97ae` : `feat(web): parité layout AppImage desktop + switch TUI naïf/CLI custom — #208` - merge local `8dbd5faf` dans `develop` : `merge(web): parité layout AppImage desktop + switch TUI/CLI custom — #208 (QA verte)` - bookkeeping `1bb20e42` sur `develop` - suppression de la branche feature locale. - État final: ticket livré, fusionné localement dans `develop`, aucun push distant.