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-tauriau workspace ; - création de la façade
src/lib.rs, de l'assemblagesrc/tauri.rset du module propriétairesrc/runtime.rs; - ajout du point d'entrée mobile
#[cfg_attr(mobile, tauri::mobile_entry_point)]; - initialisation du subscriber partagé via
game-logging-libavant le premier événement Rust ; - installation de
tauri-plugin-tracing; - généralisation minimale de
game-snake-poc-wasm::configure_runtime_provenanceafin que le même adapter accepte explicitement la famille et le host observés ; - conservation de
ExecutionModel::Wasmdans 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.jsonetvite.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.jsonetcapabilities/default.json;- un icon POC cohérent avec le host Tauri historique ;
README.mdetUSAGE.mdinitiaux.
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é.