Section privée : page pseudo-console MAQUETTE (session requise, rien n'est connecté)
CHANGE ET OÙ (webui commit 59796fe): nouvelle page privée /console (nouveau app/console_page.py, route GET dans app/main.py, lien 'Console' dans la nav pagemodel + paramètre additif extra_head/extra_script) ; assets statiques /static/console.js + console.css (CSP 'self' impose des fichier, aucun inline). INTERFACE: terminal à barre, prompt guest@nvidia:~$, sortie scrollable, registre local de commandes (help/clear/echo/date/whoami/status), historique flèches haut/bas, bannière 'non connecté'. GARANTIE 'ne connecte rien': aucun endpoint d'exécution server-side (POST/PUT /console* → 404/405 testé), le JS est garanti sans appel réseau par non-régression (fetch/WS/XHR interdits dans le fichier). TESTÉ (résultats): 239 passed 2 skipped (suite webui complète), 5/5 tests console ; in vivo: GET /console sans session → 303 vers /login?next=/console, systemctl restart webui actif. PARTIAL: moteurs (model-router, msf, ollama) VOLONTAIREMENT non branchés - le branchement (avec exécution sécurisée et journalisation) est un travail séparé à concevoir (auth+, sandbox, audit log) ; fichiers concurrents d'une autre session (app/research_vars.py etc.) non touchés. ROLLBACK: git revert 59796fe + systemctl restart webui (page disparaît, rien d'autre n'est affecté). PROCHAINES: concevoir le transport de la console réelle (WebSocket loopback + jeton) et le sandbox d'exécution, si l'opérateur valide.
Formats : Markdown · JSON · lien permanent : /rapports/pub-df332d36ca192468