# Baseline consolidée 0.3.0 — Snake Web direct ## Statut Ce document consolide les résultats effectivement validés du premier POC plateforme de la série `0.3.x`. Il prépare le gel RC de `0.3.0` et sert de baseline au second host Snake prévu en `0.3.1`. ## Chaîne validée Le chemin Web direct retenu est : ```text game-snake-poc ↓ game-snake-poc-wasm ↓ wasm-bindgen --target web Web/game-snake-poc ↓ Vite / TypeScript / Bootstrap 5 / Canvas ``` `game-snake-poc` reste indépendant de SDL3, DOM, Canvas, Tauri et des APIs plateforme. `game-snake-poc-wasm` adapte la scène et les entrées au host Web et porte la provenance runtime ; le frontend gère DOM, lifecycle navigateur, rendu Canvas et shell UI. ## Input et cadence Les entrées navigateur sont converties vers les quatre actions Snake `Left`, `Right`, `Up`, `Down`. Une entrée ne fait pas avancer directement la simulation : la direction est mise en attente puis consommée au prochain `tick()` WASM. Le host valide clavier, contrôles pointer/tactiles, resize et pause/reprise sans rattrapage massif après masquage d'onglet. ## Shell Web Le frontend reprend les conventions utiles des applications Desk KSP sans dépendre de Tauri : - Vite + TypeScript ; - Bootstrap 5 / Bootswatch Pulse ; - Font Awesome ; - Sass ; - SimpleBar et `resize-observer-polyfill` ; - header/footer fixes et zone centrale scrollable ; - Canvas conservant le ratio logique Snake `12 × 20`. Le frontend reste un host : il ne contient aucune règle de gameplay. ## Assets Les assets sources restent hors des crates sous `assets/`. Le build Web conserve les namespaces logiques : ```text assets/common/data/runtime.json → /common/data/runtime.json assets/game-snake-poc/data/game.json → /game/data/game.json ``` Les mêmes routes sont valides en développement Vite et dans le bundle production. ## Provenance runtime La session Web conserve `RuntimeProvenance` dans l'adapter WASM. Les dimensions fixes sont `Web / Browser / Wasm`; la classe d'appareil et le profil d'entrée sont renseignés à partir de l'environnement et des entrées réellement observées. Le smoke validé expose notamment : ```text web / browser / wasm / desktop / keyboard-mouse ``` ## Build Le chemin Web direct ne dépend d'aucun orchestrateur Python : ```text Cargo → wasm-bindgen → Vite/npm ``` Les artefacts générés restent hors dépôt sous `../builds/sasedev-games/`. ## Résultat de l'extraction `0.3.0` ne justifie pas encore une abstraction WASM commune entre Reflex et Snake. Les deux adapters spécifiques restent préférables à une factorisation spéculative. Le prochain host Snake doit réutiliser cette baseline et fournir un second cas réel avant extraction d'une couche commune WebView/WASM. ## Témoin Desktop Le runner `game-snake-poc-desktop` reste le témoin SDL3 natif. La beta `0.3.0-2-beta.1` a validé son build release et son smoke sans modification de gameplay ni de runtime SDL3. ## Suite `0.3.1` doit éprouver Tauri Android + Snake. `0.3.2` peut ensuite tester Tauri Desktop et décider, sur deux consommateurs réels, si une factorisation WebView/frontend est justifiée.