162 lines
7.1 KiB
Markdown
162 lines
7.1 KiB
Markdown
<!-- file: deltas/0.3.1/0-pre.2.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# 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 :
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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 :
|
|
|
|
```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 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 :
|
|
|
|
```bash
|
|
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 :
|
|
|
|
```bash
|
|
(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é.
|