b30c9c7590ceac33278d460ec5adf76a670b6f8c
Ferme #68 : le serveur web s'active désormais depuis l'app desktop, via un panneau Settings > Deployment. C'est la fonctionnalité demandée à l'origine du ticket, et l'aboutissement de la chaîne #65 (extraction d'idea-serve) → #68 B1 (seam shared-core) → #72 (durcissement proxy) → ce lot. Backend : `EmbeddedServerController` sur `AppState`, commandes start/stop/status, store `<app-data-dir>/deployment/server-exposure.json` (config de sécurité, pas préférence d'UI), arrêt câblé sur la sortie d'app. Le serveur embarqué consomme `run_embedded_with_core` avec le `BackendCore` du desktop — une seule composition root, ce pour quoi le seam de B1 existait. Frontend : `features/settings/` avec `SettingsView`/`DeploymentSettings`, gateway `DesktopServerGateway`, et `ProjectsView` dont le booléen `showSettings` devient une vraie navigation `AI Profiles` / `Deployment`. Vert avant merge, ré-exécuté par Git HORS SANDBOX — impératif sur ces crates, le sandbox bloque `bind` et a déjà produit un faux vert sur #68 B1 : `cargo test -p app-tauri` 43 passed / 1 ignored · `-p web-server` 66 passed · `npm run typecheck` exit 0 · `npx vitest run` 87 files / 789 passed. Le test ignoré est une garde d'environnement préexistante, vérifiée passante hors sandbox avec `--ignored`. Invariants vérifiés par Git avant merge : `run_embedded_with_core` bien l'appelant, aucune fuite des types d'exposition dans `domain`/`application`, `0600` posé avant le `rename`, `stop()` appelé à la fermeture. Dette consignée, non bloquante : `preview_settings` valide avant de prévisualiser (verrouille la liste des candidats LAN, contourné côté frontend), et le warning `missingTrustedProxy` est inatteignable. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The file is empty.
Description
Languages
Rust
80.5%
TypeScript
19.4%