0.3.0-0-pre.3
This commit is contained in:
118
deltas/0.3.0/0-pre.3.md
Normal file
118
deltas/0.3.0/0-pre.3.md
Normal file
@@ -0,0 +1,118 @@
|
||||
<!-- file: deltas/0.3.0/0-pre.3.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.0-0-pre.3
|
||||
|
||||
## Base
|
||||
|
||||
Base requise : `0.3.0-0-pre.2`.
|
||||
|
||||
La validation complète de `0-pre.2` est consignée dans `history/0.3.0/0-pre.2.md`.
|
||||
|
||||
## Objet
|
||||
|
||||
Introduire l'adapter WASM minimal de Snake avant tout frontend navigateur :
|
||||
|
||||
- ajouter `game-snake-poc-wasm` comme crate d'application dédiée ;
|
||||
- réutiliser exclusivement `engine-v1-common` et `game-snake-poc` ;
|
||||
- exposer à `wasm-bindgen` les directions logiques et la scène portable ;
|
||||
- préserver la cadence de simulation en séparant événement d'entrée et `tick()` ;
|
||||
- documenter un chemin Cargo + `wasm-bindgen` direct sans orchestrateur Python ;
|
||||
- ne pas introduire Vite, Bootstrap, DOM, Tauri ou SDL3 dans cette tranche.
|
||||
|
||||
## Version
|
||||
|
||||
La version workspace passe de `0.3.0-0-pre.2` à `0.3.0-0-pre.3`.
|
||||
|
||||
## Adapter Snake WASM
|
||||
|
||||
La nouvelle crate `crates/apps/game-snake-poc-wasm` contient une façade `lib.rs` et un runtime propriétaire séparé.
|
||||
|
||||
`SnakeWasmGame` possède :
|
||||
|
||||
- un `SnakeState` issu de la crate de gameplay ;
|
||||
- un `FixedStepRunner` à pas déterministe de 16 ms ;
|
||||
- un `InputState` en attente pour la prochaine update.
|
||||
|
||||
Les appels `left()`, `right()`, `up()` et `down()` ne font pas avancer la simulation. Ils remplacent la direction logique en attente. `tick()` consomme ensuite cette entrée une fois, la remet à zéro et avance le runner d'une update. La cadence reste ainsi sous la responsabilité du futur host navigateur.
|
||||
|
||||
L'API expose également le score, la longueur, la couleur de fond et les rectangles normalisés de l'`EngineScene`. Le futur frontend `0-pre.4` peut donc dessiner le Canvas sans accéder à la structure interne de Snake.
|
||||
|
||||
## Frontières conservées
|
||||
|
||||
`game-snake-poc-wasm` ne dépend pas de :
|
||||
|
||||
- `engine-v1-platform-api` ;
|
||||
- `engine-v1-sdl` ;
|
||||
- Tauri ;
|
||||
- DOM/Canvas Rust ;
|
||||
- code frontend TypeScript.
|
||||
|
||||
La duplication limitée des getters de scène avec `game-reflex-poc-wasm` est volontairement conservée à ce stade. Une abstraction commune ne sera extraite que si les POC suivants démontrent un besoin partagé suffisamment stable.
|
||||
|
||||
## Documentation et audits
|
||||
|
||||
L'architecture du workspace mentionne désormais l'adapter Snake WASM et le contrat d'entrée précise la file directionnelle consommée par `tick()`.
|
||||
|
||||
L'audit de distribution exige maintenant `crates/apps/game-snake-poc-wasm/Cargo.toml`, portant le nombre de chemins requis de 19 à 20.
|
||||
|
||||
Le plan actif est réconcilié avec la livraison réelle de `0-pre.3`. `docs/development/009-SNAKE_WEB_WASM_BUILD.md` documente le build natif Cargo + `wasm-bindgen`, avec tous les artefacts générés sous `../builds/sasedev-games/`.
|
||||
|
||||
## Historique
|
||||
|
||||
Ajout de `history/0.3.0/0-pre.2.md` avec les résultats réellement fournis par l'utilisateur : audits, formatage, check workspace, Clippy workspace strict, tests Snake/Reflex et graphes de dépendances.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
- `crates/apps/game-snake-poc-wasm/Cargo.toml` ;
|
||||
- `crates/apps/game-snake-poc-wasm/src/lib.rs` ;
|
||||
- `crates/apps/game-snake-poc-wasm/src/runtime.rs` ;
|
||||
- `crates/apps/game-snake-poc-wasm/unit_tests/runtime.rs` ;
|
||||
- `deltas/0.3.0/0-pre.3.md` ;
|
||||
- `docs/development/009-SNAKE_WEB_WASM_BUILD.md` ;
|
||||
- `history/0.3.0/0-pre.2.md`.
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
- `Cargo.toml` ;
|
||||
- `README.md` ;
|
||||
- `docs/architecture/001-WORKSPACE_ARCHITECTURE.md` ;
|
||||
- `docs/000-README.md` ;
|
||||
- `docs/architecture/004-INPUT_AND_CONTROLS.md` ;
|
||||
- `docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md` ;
|
||||
- `scripts/audit_distribution_layout.py`.
|
||||
|
||||
## Suppressions
|
||||
|
||||
Aucune.
|
||||
|
||||
## Validations applicables
|
||||
|
||||
Audits statiques de préparation :
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android deltas history
|
||||
python3 scripts/audit_distribution_layout.py
|
||||
```
|
||||
|
||||
Validation utilisateur demandée :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo fmt --all -- --check
|
||||
cargo check --workspace
|
||||
cargo clippy -p game-snake-poc-wasm --all-targets --all-features -- -D warnings
|
||||
cargo test -p game-snake-poc-wasm
|
||||
cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown
|
||||
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/debug/game_snake_poc_wasm.wasm --target web --out-dir ../builds/sasedev-games/game-snake-poc-web/wasm --out-name game_snake_poc_wasm
|
||||
cargo tree -p game-snake-poc-wasm --edges normal
|
||||
```
|
||||
|
||||
Le `cargo tree` doit rester limité à `engine-v1-common`, `game-snake-poc`, `wasm-bindgen` et leurs dépendances nécessaires ; aucune dépendance SDL3, Tauri ou `engine-v1-platform-api` ne doit apparaître.
|
||||
|
||||
La commande `wasm-bindgen` doit produire les bindings navigateur sans écrire d'artefact généré dans le dépôt. Aucun build Vite/Bootstrap et aucun smoke navigateur ne sont requis dans cette tranche, car le frontend appartient à `0-pre.4`.
|
||||
|
||||
## Suite
|
||||
|
||||
Après validation de `0-pre.3`, ouvrir `0-pre.4` pour le frontend Web direct Vite/TypeScript, son shell HTML Bootstrap 5, le Canvas et les contrôles clavier/tactiles.
|
||||
Reference in New Issue
Block a user