0.3.1-0-pre.1

This commit is contained in:
2026-09-20 18:16:32 +02:00
parent 778da67e22
commit ba718ce4ec
14 changed files with 601 additions and 34 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/000-README.md -->
<!-- version: 1 -->
<!-- version: 2 -->
# Plans de versions games.sasedev
@@ -11,4 +11,5 @@ Le `ROADMAP.md` reste la trajectoire macroscopique du projet ; les deltas décri
## Plans
- [`001-V0_3_0_WEB_SNAKE_POC_PLAN.md`](001-V0_3_0_WEB_SNAKE_POC_PLAN.md) — plan actif de `0.3.0`, baseline Snake et premier POC Web direct.
- [`001-V0_3_0_WEB_SNAKE_POC_PLAN.md`](001-V0_3_0_WEB_SNAKE_POC_PLAN.md) — plan clôturé de `0.3.0`, baseline Snake et premier POC Web direct.
- [`002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md`](002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md) — plan actif de `0.3.1`, second host Snake Tauri Android.

View File

@@ -0,0 +1,176 @@
<!-- file: docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md -->
<!-- version: 1 -->
# 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`](../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.1` valide uniquement sa cible Android ;
- `game-snake-poc` reste inchangé sauf défaut réellement découvert ;
- `game-snake-poc-wasm` reste 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.rs` est une façade/reexport et `tauri.rs` reste 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.md` et `USAGE.md` seront créés avec l'app : architecture pour le premier, prérequis/commandes/smokes pour le second ;
- `cargo tauri android init/dev/build` sont les commandes mobiles de référence ;
- SimpleBar et `resize-observer-polyfill` ne 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.rs` façade, `tauri.rs` assemblage 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é par `lib.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-wasm` après généralisation minimale de provenance ;
- `README.md` et `USAGE.md` initiaux.
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_requested` sans 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 :
```bash
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.