Files
games/deltas/0.3.1/0-pre.2.md
2026-09-20 21:30:12 +02:00

7.1 KiB

Delta 0.3.1-0-pre.2

Base requise

0.3.1-0-pre.1, validée par l'utilisateur le 2026-09-20.

Objectif

Créer le host Tauri Android minimal de Snake sans dupliquer le gameplay, sans créer un second adapter WASM et sans réintroduire de build orchestré par Python.

Cette tranche vise le premier démarrage Android et la validation des frontières Tauri/WASM/tracing. Le Canvas, les contrôles, les assets et le lifecycle complet restent réservés à 0-pre.3 et 0-pre.4 conformément au plan vivant.

Audit Tauri KSP direct

L'archive fournie khadhroony-solana-project-v0.3.15.zip a été extraite et les six crates ksp-app-*-desk ont été vérifiées directement. Elles possèdent toutes les frontières structurantes retenues pour games.sasedev :

src/lib.rs
src/tauri.rs
package.json
vite.config.ts
tauri.conf.json
capabilities/default.json
tauri-plugin-tracing côté Rust
@fltsci/tauri-plugin-tracing côté frontend

Le nouveau host Snake reprend cette organisation, avec un scope volontairement plus petit. Le Tauri Reflex historique reste seulement une référence de compatibilité : son orchestration Python n'est pas reproduite.

Changements Rust et WASM

  • passage du workspace à 0.3.1-0-pre.2 ;
  • ajout de game-snake-poc-tauri au workspace ;
  • création de la façade src/lib.rs, de l'assemblage src/tauri.rs et du module propriétaire src/runtime.rs ;
  • ajout du point d'entrée mobile #[cfg_attr(mobile, tauri::mobile_entry_point)] ;
  • initialisation du subscriber partagé via game-logging-lib avant le premier événement Rust ;
  • installation de tauri-plugin-tracing ;
  • généralisation minimale de game-snake-poc-wasm::configure_runtime_provenance afin que le même adapter accepte explicitement la famille et le host observés ;
  • conservation de ExecutionModel::Wasm dans l'adapter ;
  • adaptation du Web direct pour fournir explicitement web / browser ;
  • ajout d'un test ciblé android / tauri-webview / wasm ;
  • généralisation de la rustdoc RuntimeHost::TauriWebView, qui n'est plus décrite comme Desktop uniquement.

Frontend et build Tauri

La nouvelle app contient :

  • package.json, tsconfig.json et vite.config.ts ;
  • un frontend minimal sous frontend/ ;
  • un bridge IPC vers le descriptor runtime Rust ;
  • le chargement des bindings produits depuis game-snake-poc-wasm ;
  • le tracing frontend via @fltsci/tauri-plugin-tracing ;
  • tauri.conf.json et capabilities/default.json ;
  • un icon POC cohérent avec le host Tauri historique ;
  • README.md et USAGE.md initiaux.

Les hooks Tauri exécutent eux-mêmes le build Cargo WASM, wasm-bindgen puis Vite. Les outputs restent sous ../builds/sasedev-games/. Aucun script Python n'est impliqué dans ce chemin.

cargo tauri android init reste une opération locale de la gate : son répertoire gen/ est généré et ignoré, donc il n'est pas distribué dans le delta.

NDK et JDK

La machine de validation possède plusieurs NDK sous $ANDROID_HOME/ndk/; NDK_HOME n'est donc pas imposé globalement par le dépôt. Si la CLI Tauri exige une valeur explicite pendant android init/dev, utiliser ponctuellement le chemin exact de la version NDK concernée.

JAVA_HOME reste également facultatif tant que java est résolu correctement par la CLI dans l'environnement courant. Les deux variables deviennent des outils de diagnostic local, pas des invariants source du projet.

Audit de distribution

audit_distribution_layout.py couvre désormais le host Tauri Snake minimal : fichiers requis, hooks Tauri, outputs WASM externes au dépôt, point d'entrée mobile, bridge tracing, provenance Android/TauriWebView et interdiction de Python/console.* dans le chemin touché.

Fichiers ajoutés

crates/apps/game-snake-poc-tauri/Cargo.toml
crates/apps/game-snake-poc-tauri/README.md
crates/apps/game-snake-poc-tauri/USAGE.md
crates/apps/game-snake-poc-tauri/build.rs
crates/apps/game-snake-poc-tauri/capabilities/default.json
crates/apps/game-snake-poc-tauri/frontend/css/main.css
crates/apps/game-snake-poc-tauri/frontend/main.html
crates/apps/game-snake-poc-tauri/frontend/ts/bridge.ts
crates/apps/game-snake-poc-tauri/frontend/ts/logging.ts
crates/apps/game-snake-poc-tauri/frontend/ts/main.ts
crates/apps/game-snake-poc-tauri/icons/icon.png
crates/apps/game-snake-poc-tauri/package.json
crates/apps/game-snake-poc-tauri/src/lib.rs
crates/apps/game-snake-poc-tauri/src/main.rs
crates/apps/game-snake-poc-tauri/src/runtime.rs
crates/apps/game-snake-poc-tauri/src/tauri.rs
crates/apps/game-snake-poc-tauri/tauri.conf.json
crates/apps/game-snake-poc-tauri/tsconfig.json
crates/apps/game-snake-poc-tauri/vite.config.ts
history/0.3.1/0-pre.1.md

Fichiers modifiés

Cargo.toml
README.md
Web/game-snake-poc/frontend/ts/provenance.ts
crates/apps/game-snake-poc-wasm/src/runtime.rs
crates/apps/game-snake-poc-wasm/unit_tests/runtime.rs
crates/engines/engine-v1-platform-api/src/environment.rs
docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md
scripts/audit_distribution_layout.py

Validation générateur

Les audits statiques applicables sont exécutés avant livraison. Aucun cargo, npm, wasm-bindgen, Gradle, Tauri Android ou smoke n'est déclaré validé par le générateur.

Gate utilisateur

Appliquer d'abord la gate workspace :

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 Web deltas history
python3 scripts/audit_distribution_layout.py

cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p game-snake-poc-wasm --all-targets --all-features

Comme l'API de provenance partagée est utilisée par le Web direct, reconstruire ses bindings et son frontend :

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
(cd Web/game-snake-poc && npm install && npm run build)

Puis initialiser et lancer le nouveau host par Tauri, sans exécuter ses scripts npm de build directement :

(cd crates/apps/game-snake-poc-tauri && npm install)
(cd crates/apps/game-snake-poc-tauri && cargo tauri android init)
(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev)

Critères du smoke android dev :

  • l'app démarre sur l'appareil/AVD choisi ;
  • le frontend affiche android / tauri-webview / wasm / unknown / unknown ;
  • le bridge Rust répond ;
  • le frontend charge game-snake-poc-wasm ;
  • les logs Rust et frontend atteignent le pipeline tracing/logcat ;
  • aucune erreur runtime bloquante n'est visible.

cargo tauri android build reste reporté au jalon de packaging prévu par le plan.

Suite après validation

Si la gate est propre, passer automatiquement à 0.3.1-0-pre.3 pour intégrer le Canvas Snake, les inputs et les assets dans le WebView Tauri. Tout défaut source de 0-pre.2 produit d'abord un 0-pre.2.fix.N borné.