7.8 KiB
Plan v0.3.1 — second host Snake Tauri Android
But de la version
0.3.1 doit ajouter un second host Snake réellement exécutable sous Tauri Android en réutilisant la baseline Web/WASM validée par 0.3.0.
La version ne doit ni déplacer le gameplay hors de game-snake-poc, ni créer un second adapter Snake, ni transformer immédiatement les similitudes Web/Tauri en framework générique.
Base stable : 0.3.0.
Cadrage : ../studies/024-V0_3_1_TAURI_ANDROID_SNAKE_AUDIT.md.
Décisions acquises
- la nouvelle crate sera
crates/apps/game-snake-poc-tauri; 0.3.1valide uniquement sa cible Android ;game-snake-pocreste inchangé sauf défaut réellement découvert ;game-snake-poc-wasmreste l'unique adapter Snake WASM et recevra seulement la généralisation de provenance nécessaire au second host ;- le frontend Tauri part du comportement réellement validé dans
Web/game-snake-poc, avec adaptation de lifecycle et logging ; lib.rsest une façade/reexport ettauri.rsreste l'assemblage Tauri ;- le tracing frontend utilise
@fltsci/tauri-plugin-tracing; - les hooks Tauri possèdent le build frontend/WASM ;
- aucun nouveau chemin de build n'est piloté par Python ;
README.mdetUSAGE.mdseront créés avec l'app : architecture pour le premier, prérequis/commandes/smokes pour le second ;cargo tauri android init/dev/buildsont les commandes mobiles de référence ;- SimpleBar et
resize-observer-polyfillne sont pas ajoutés au host Tauri sans besoin démontré.
Scope
La version couvre :
- création de la crate/app Tauri Snake ;
- initialisation de la cible Android par Tauri ;
- pipeline Rust/WASM + Vite/TypeScript possédé par Tauri sans Python ;
- consommation de
game-snake-poc-wasm; - shell Canvas, contrôles touch et comportement responsive nécessaires au jeu ;
- assets communs et spécifiques Snake ;
- lifecycle mobile/WebView ;
- provenance
Android / Wasm / TauriWebView; - tracing Rust/Tauri/frontend ;
- politique de sortie/Back conforme au moteur ;
- build/package et smoke sur AVD/appareil disponible aux jalons prévus ;
- comparaison du code Web direct/Tauri après fonctionnement réel afin de décider s'il existe une extraction commune justifiée.
Hors scope : Tauri Desktop Snake comme cible validée, iOS, Android SDL3 multi-ABI additionnel, réseau realtime, Uroburas, ads, billing, auth et leaderboard.
Prévision souple
0-pre.1 — cadrage et règles
Audit complet de l'archive stable, règles, baseline Web/WASM, Tauri Reflex, références Desk KSP accessibles, environnement Android historique et commandes Tauri mobiles actuelles.
Livraison : étude 024, présent plan, correction des règles Tauri Android, clarification PlatformFamily, index documentaires et ouverture de la version technique 0.3.1-0-pre.1.
Aucun scaffold Tauri Snake n'est créé.
0-pre.2 — host Tauri Android minimal
Créer game-snake-poc-tauri avec :
- manifest Cargo/build script/config Tauri/capabilities ;
lib.rsfaçade,tauri.rsassemblage et modules propriétaires minimaux ;- point d'entrée
run()mobile annoté#[cfg_attr(mobile, tauri::mobile_entry_point)]dans le module propriétaire puis réexporté parlib.rs; - frontend Vite/TypeScript minimal ;
- bridge tracing initialisé ;
- hooks de build natifs, sans Python ;
- cible Android initialisée via Tauri ;
- chargement du même adapter
game-snake-poc-wasmaprès généralisation minimale de provenance ; README.mdetUSAGE.mdinitiaux.
La tranche vise un premier démarrage Tauri Android minimal, pas encore toute la finition input/lifecycle.
Gate utilisateur : audits, Cargo workspace strict, build WASM nécessaire, cargo tauri android dev sur un AVD ou appareil disponible. cargo tauri android build reste reporté aux phases finales sauf besoin diagnostique.
0-pre.3 — shell Snake, Canvas, input et assets
Réutiliser sélectivement le host Web validé :
- rendu Canvas et session fixed-step ;
- shell responsive pertinent ;
- contrôles directionnels touch/pointer et clavier lorsque disponible ;
- resize/orientation ;
- assets canoniques communs + Snake ;
- absence de dépendances Web-only inutiles.
Aucune extraction commune n'est réalisée uniquement pour éviter quelques fichiers similaires pendant la mise au point.
0-pre.4 — lifecycle, provenance, tracing et sortie mobile
Stabiliser :
- background/foreground et reprise sans rattrapage massif ;
- rotation/resize ;
- provenance
Android / Wasm / TauriWebView+ device/input observés ; - tracing Rust/Tauri/frontend ;
- sorties applicatives conformes à
EngineGame::quit_requestedsans détourner le Back système Android ; - smokes AVD et, si disponible, appareil réel.
Cette tranche doit rendre le second host fonctionnel de bout en bout.
0-pre.5 — extraction conditionnelle
Créer uniquement si l'état 0-pre.4 montre une duplication réellement durable entre Web/game-snake-poc et le frontend Tauri.
Une extraction possible doit rester bornée à une responsabilité clairement partagée, par exemple projection/rendu Canvas, mapping input Web ou helpers d'assets. Lifecycle et logging restent host-specific s'ils divergent réellement.
Si aucune extraction n'est justifiée, cette tranche est omise.
2-beta.1 — validation large et packaging Android
Prévoir :
- audits statiques applicables ;
cargo fmt --all -- --check;cargo check --workspace;- Clippy workspace strict ;
- suite workspace complète à ce jalon planifié ;
- build WASM release et bindings ;
cargo tauri android build;- APK/AAB selon le livrable de validation ;
- install/smoke AVD ;
- install/smoke appareil ARM64 réel si disponible ;
- vérification que les outputs restent hors racine du dépôt lorsqu'ils sont configurables par le projet.
2-beta.2 — consolidation documentaire conditionnelle
Réserver seulement si les validations beta demandent une consolidation substantielle de README.md, USAGE.md, architecture, matrice de validation ou plan. Ne pas créer cette tranche par cérémonial.
3-rc.1 — candidate gelée
Gel fonctionnel, reproductibilité, packaging Android RC et validation finale selon les règles RC applicables. Aucun nouveau framework ni nouveau host.
0.3.1 — release stable
Promotion mécanique de la RC validée : versions stables, changelog, history et clôture du plan. Aucun ajout fonctionnel.
Inventaire environnement requis avant 0-pre.2
La gate 0-pre.1 doit recevoir au minimum :
rustc --version
cargo --version
cargo tauri --version
rustup target list --installed
node --version
npm --version
wasm-bindgen --version
java -version
printf 'JAVA_HOME=%s\nANDROID_HOME=%s\nNDK_HOME=%s\n' "$JAVA_HOME" "$ANDROID_HOME" "$NDK_HOME"
adb version
adb devices -l
emulator -list-avds
L'absence d'un outil ne doit pas être masquée. Elle devient un prérequis concret de 0-pre.2 ou motive un fix borné de 0-pre.1.
Critères de fermeture de 0.3.1
La version peut entrer en RC lorsque :
- Snake est jouable dans le WebView Tauri Android sans gameplay dupliqué ;
- le même adapter WASM sert Web direct et Tauri Android avec provenance exacte ;
- lifecycle/input/assets/tracing/Back ont un comportement explicite et validé ;
- le chemin de build ne dépend d'aucun orchestrateur Python ;
- le packaging Tauri Android est reproductible ;
- les smokes prévus sur cible Android ont été exécutés ;
- aucune extraction commune non prouvée n'a été introduite ;
- la documentation opérateur et architecture reflète l'état réel.
Version suivante
0.3.2 reste réservée à Tauri Desktop + Snake et à une éventuelle factorisation WebView seulement après deux consommateurs réels.