0.3.1-2-beta.1
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,8 +1,18 @@
|
|||||||
<!-- file: CHANGELOG.md -->
|
<!-- file: CHANGELOG.md -->
|
||||||
<!-- version: 14 -->
|
<!-- version: 15 -->
|
||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.3.1-3-rc.1 — 2026-09-21
|
||||||
|
|
||||||
|
- gel fonctionnel du POC Snake Tauri Android de référence après validation beta du workspace complet et du packaging Android autonome ;
|
||||||
|
- APK Debug universal construit avec les cibles Rust `aarch64-linux-android` et `x86_64-linux-android`, puis installé et lancé avec succès sur Galaxy S9+ ARM64 et AVD API 36 x86_64 ;
|
||||||
|
- host Tauri conservé comme POC comparatif : la voie Android productive reste SDL3 natif/Java/JNI ;
|
||||||
|
- absence d’extraction Web/Tauri supplémentaire et absence d’AAB Tauri volontaire : les choix de distribution Android productive sont reportés au POC SDL3 natif ;
|
||||||
|
- `0.3.2` Tauri Desktop reste différée faute de bénéfice produit/monétisation démontré ; la prochaine version active préparée est `0.3.3`, Android SDL3 natif multi-ABI, avec AAB et compatibilité Android ancienne à évaluer.
|
||||||
|
|
||||||
|
La RC n’ouvre aucun nouveau scope. Seuls les correctifs de publication autorisés par `VER-RC-*` peuvent produire un `3-rc.1.fix.N`.
|
||||||
|
|
||||||
## 0.3.0 — 2026-09-20
|
## 0.3.0 — 2026-09-20
|
||||||
|
|
||||||
- publication stable du premier POC Snake Web direct, construit autour du gameplay Rust partagé, d'un adapter WASM dédié et d'un host navigateur Vite/TypeScript ;
|
- publication stable du premier POC Snake Web direct, construit autour du gameplay Rust partagé, d'un adapter WASM dédié et d'un host navigateur Vite/TypeScript ;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 78
|
# version: 79
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
@@ -21,7 +21,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.1-2-beta.1"
|
version = "0.3.1-3-rc.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/games"
|
repository = "https://git.sasedev.com/Sasedev/games"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: README.md -->
|
<!-- file: README.md -->
|
||||||
<!-- version: 49 -->
|
<!-- version: 50 -->
|
||||||
|
|
||||||
# games.sasedev
|
# games.sasedev
|
||||||
|
|
||||||
@@ -27,7 +27,9 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale
|
|||||||
|
|
||||||
Version stable de référence : `0.3.0`.
|
Version stable de référence : `0.3.0`.
|
||||||
|
|
||||||
Version de développement courante : `0.3.1-2-beta.1`.
|
Version de développement courante : `0.3.1-3-rc.1`.
|
||||||
|
|
||||||
|
Le scope `0.3.1` est gelé en RC. `0.3.2` reste différée ; la prochaine version active prévue après la stable est `0.3.3`, centrée sur Android SDL3 natif multi-ABI, le packaging Gradle/AAB et l’évaluation explicite de la compatibilité avec des versions Android plus anciennes.
|
||||||
|
|
||||||
Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme.
|
Les deux premiers jeux sont des POC structurels : `game-reflex-poc` et `game-snake-poc`. Ils existent d'abord pour valider les frontières du workspace, le moteur, les assets et le packaging multiplateforme.
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: ROADMAP.md -->
|
<!-- file: ROADMAP.md -->
|
||||||
<!-- version: 23 -->
|
<!-- version: 24 -->
|
||||||
|
|
||||||
# Roadmap
|
# Roadmap
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ Le détail historique des prereleases `0.1.0-*` reste dans `deltas/0.1.0/` et `h
|
|||||||
|
|
||||||
- ( ) `0.3.1` — terminer Snake Tauri Android comme POC de référence réutilisant la baseline Web/WASM ; la production Android reste orientée SDL3 natif.
|
- ( ) `0.3.1` — terminer Snake Tauri Android comme POC de référence réutilisant la baseline Web/WASM ; la production Android reste orientée SDL3 natif.
|
||||||
- (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web.
|
- (d) `0.3.2` — Tauri Desktop + Snake est différé tant qu’une solution de monétisation desktop/WebView, notamment vidéo récompensée, n’est pas démontrée techniquement et contractuellement ; ne pas créer cette distribution seulement pour réutiliser le host Web.
|
||||||
- ( ) `0.3.3` — Android SDL natif multi-ABI avec Cargo/Gradle natifs, sans script Python de build.
|
- ( ) `0.3.3` — Android SDL3 natif multi-ABI avec Cargo/Gradle natifs, APK universal pour tests, AAB comme cible de distribution et évaluation du `minSdk`/support d’anciennes versions Android, sans script Python de build.
|
||||||
- ( ) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline, sans serveur Uroburas Mode 3.
|
- ( ) `0.3.4` — API de transport realtime + WebSocket/tokio-tungstenite baseline, sans serveur Uroburas Mode 3.
|
||||||
- ( ) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket.
|
- ( ) `0.3.5` — POC WebTransport/QUIC sur le même protocole, avec comparaison mesurée et fallback WebSocket.
|
||||||
- ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`.
|
- ( ) `0.3.6` — consolidation des POC plateforme/réseau et préparation de la baseline `0.4.x`.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: crates/apps/game-snake-poc-tauri/README.md -->
|
<!-- file: crates/apps/game-snake-poc-tauri/README.md -->
|
||||||
<!-- version: 8 -->
|
<!-- version: 9 -->
|
||||||
|
|
||||||
# game-snake-poc-tauri
|
# game-snake-poc-tauri
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ Le host suspend explicitement sa boucle `requestAnimationFrame` lorsque la WebVi
|
|||||||
|
|
||||||
Le POC reste mono-page et n’enregistre volontairement aucun handler Tauri `onBackButtonPress`. La politique `EngineGame::quit_requested` de Snake est actuellement la politique moteur par défaut `Exit`, cohérente avec le Back Android/Tauri naturel. Un futur jeu retournant `Continue` devra introduire une intégration Back explicite au lieu de modifier ce POC silencieusement.
|
Le POC reste mono-page et n’enregistre volontairement aucun handler Tauri `onBackButtonPress`. La politique `EngineGame::quit_requested` de Snake est actuellement la politique moteur par défaut `Exit`, cohérente avec le Back Android/Tauri naturel. Un futur jeu retournant `Continue` devra introduire une intégration Back explicite au lieu de modifier ce POC silencieusement.
|
||||||
|
|
||||||
Le premier smoke ARM64 réel a mis en évidence un abort natif pendant un teardown déclenché par Back : `FORTIFY: pthread_mutex_lock called on a destroyed mutex`. Après correction du tunnel HMR afin que HTTP et WebSocket partagent tous deux `1436`, le smoke `0-pre.4.fix.1` n'a pas reproduit cet abort : le Back a mené jusqu'au détachement de la fenêtre sans crash observé avant la fin volontaire de la commande. Le défaut reste toutefois considéré comme potentiellement intermittent tant que l'APK autonome beta n'a pas reproduit plusieurs cycles de sortie/lifecycle. Le dépôt ne le masque ni par un handler Back ad hoc ni par un patch du scaffold généré.
|
Le premier smoke ARM64 réel a mis en évidence un abort natif pendant un teardown déclenché par Back : `FORTIFY: pthread_mutex_lock called on a destroyed mutex`. Après correction du tunnel HMR afin que HTTP et WebSocket partagent tous deux `1436`, le smoke `0-pre.4.fix.1` ne l'a pas reproduit. La beta a ensuite validé la construction d'un APK autonome universal et son installation/lancement sur ARM64 réel et AVD x86_64. La RC conserve le teardown/Back dans ses smokes finaux sans ajouter de handler ad hoc ni patcher le scaffold généré.
|
||||||
|
|
||||||
## Limite ergonomique connue
|
## Limite ergonomique connue
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: crates/apps/game-snake-poc-tauri/USAGE.md -->
|
<!-- file: crates/apps/game-snake-poc-tauri/USAGE.md -->
|
||||||
<!-- version: 8 -->
|
<!-- version: 9 -->
|
||||||
|
|
||||||
# Utilisation — Snake Tauri Android
|
# Utilisation — Snake Tauri Android
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ Pendant `cargo tauri android dev` :
|
|||||||
|
|
||||||
Le D-pad placé sous le Canvas est une limite ergonomique connue du POC de référence et n’est pas un critère bloquant de cette gate.
|
Le D-pad placé sous le Canvas est une limite ergonomique connue du POC de référence et n’est pas un critère bloquant de cette gate.
|
||||||
|
|
||||||
Sur le Galaxy S9+ ARM64 utilisé pour la validation réelle, chargement, WASM, Canvas, assets et touch fonctionnent via le tunnel USB. Un premier smoke a observé un abort natif `FORTIFY: pthread_mutex_lock called on a destroyed mutex` pendant Back/teardown ; après passage de HTTP et HMR sur le même tunnel `1436`, le smoke `0-pre.4.fix.1` n'a pas reproduit l'abort et est allé jusqu'au détachement de la fenêtre. Le risque reste enregistré comme potentiellement intermittent et doit encore être retesté sur l'APK autonome beta ; il n'est pas contourné par une modification de `gen/android`.
|
Sur le Galaxy S9+ ARM64 utilisé pour la validation réelle, chargement, WASM, Canvas, assets et touch fonctionnent via le tunnel USB. Un premier smoke a observé un abort natif `FORTIFY: pthread_mutex_lock called on a destroyed mutex` pendant Back/teardown ; après passage de HTTP et HMR sur le même tunnel `1436`, le smoke `0-pre.4.fix.1` ne l'a pas reproduit. La beta a ensuite construit un APK autonome universal et l'a installé/lancé sur le Galaxy S9+ ARM64 ainsi que sur l'AVD x86_64. La RC revalide ces chemins sans modifier `gen/android`.
|
||||||
|
|
||||||
## Packaging beta Android
|
## Packaging beta Android
|
||||||
|
|
||||||
@@ -115,5 +115,5 @@ export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64
|
|||||||
|
|
||||||
Ne pas lancer `npm run build` séparément pour cette gate. Tauri affiche le chemin de l'APK produit ; les outputs sous `gen/android/**/build/` sont générés et ignorés. Vérifier ensuite que l'APK contient les bibliothèques `arm64-v8a` et `x86_64`, puis installer ce même APK successivement sur l'AVD et l'appareil réel avec `adb install -r`.
|
Ne pas lancer `npm run build` séparément pour cette gate. Tauri affiche le chemin de l'APK produit ; les outputs sous `gen/android/**/build/` sont générés et ignorés. Vérifier ensuite que l'APK contient les bibliothèques `arm64-v8a` et `x86_64`, puis installer ce même APK successivement sur l'AVD et l'appareil réel avec `adb install -r`.
|
||||||
|
|
||||||
Le package autonome ne doit dépendre ni de Vite, ni du port `1436`, ni d'un tunnel ADB. Le smoke beta revalide Canvas, assets, WASM, touch, lifecycle et plusieurs sorties Back.
|
Le package autonome ne doit dépendre ni de Vite, ni du port `1436`, ni d'un tunnel ADB. La beta a validé sa construction et son installation/lancement sur les deux architectures de référence. La RC reprend les contrôles fonctionnels lifecycle/Back sur l'état gelé. Aucun AAB Tauri n'est requis : le futur packaging AAB appartient à la voie Android SDL3 native.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "game-snake-poc-tauri",
|
"name": "game-snake-poc-tauri",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.3.1-2-beta.1",
|
"version": "0.3.1-3-rc.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"wasm:dev": "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-tauri/wasm --out-name game_snake_poc_wasm",
|
"wasm:dev": "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-tauri/wasm --out-name game_snake_poc_wasm",
|
||||||
|
|||||||
64
deltas/0.3.1/3-rc.1.md
Normal file
64
deltas/0.3.1/3-rc.1.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<!-- file: deltas/0.3.1/3-rc.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta 0.3.1-3-rc.1
|
||||||
|
|
||||||
|
## Base requise
|
||||||
|
|
||||||
|
`0.3.1-2-beta.1`, validée le 2026-09-21.
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Créer la candidate de publication `0.3.1` sans rouvrir le scope fonctionnel du POC Snake Tauri Android.
|
||||||
|
|
||||||
|
## Gel RC
|
||||||
|
|
||||||
|
Le scope `0.3.1` est gelé. Cette tranche n'ajoute :
|
||||||
|
|
||||||
|
- aucune fonctionnalité ;
|
||||||
|
- aucun nouveau contrôle ;
|
||||||
|
- aucun framework ou refactor Web/Tauri ;
|
||||||
|
- aucune dépendance ;
|
||||||
|
- aucun changement de gameplay ;
|
||||||
|
- aucun AAB Tauri ;
|
||||||
|
- aucun patch du scaffold `gen/android`.
|
||||||
|
|
||||||
|
Seuls les correctifs autorisés par `VER-RC-*` peuvent suivre sous `3-rc.1.fix.N`.
|
||||||
|
|
||||||
|
## Validation beta acquise
|
||||||
|
|
||||||
|
`2-beta.1` a validé :
|
||||||
|
|
||||||
|
- audits/check/Clippy workspace ;
|
||||||
|
- `cargo test --workspace --all-targets --all-features` avec 35 tests réussis ;
|
||||||
|
- build WASM/Vite possédé par Tauri ;
|
||||||
|
- APK Debug universal ;
|
||||||
|
- compilation Android `aarch64-linux-android` + `x86_64-linux-android` ;
|
||||||
|
- installation/lancement du même APK sur Galaxy S9+ ARM64 et AVD API 36 x86_64.
|
||||||
|
|
||||||
|
Le contrôle mécanique `unzip -l` des deux entrées ABI n'a pas été transmis et reste dans la gate RC.
|
||||||
|
|
||||||
|
## Changements
|
||||||
|
|
||||||
|
- passage de `workspace.package.version` à `0.3.1-3-rc.1` ;
|
||||||
|
- synchronisation du package frontend Tauri Snake à `0.3.1-3-rc.1` ;
|
||||||
|
- entrée RC dans `CHANGELOG.md` ;
|
||||||
|
- historique de la beta validée ;
|
||||||
|
- consolidation du plan `0.3.1` avec omission de `2-beta.2` ;
|
||||||
|
- création de `docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md` ;
|
||||||
|
- préparation de `prompts/004-V0_3_3_START_PROMPT.md`, puisque `0.3.2` reste différée ;
|
||||||
|
- mise à jour de la roadmap pour réserver à `0.3.3` le pipeline SDL3 natif multi-ABI, l'AAB et l'évaluation du support d'anciennes versions Android.
|
||||||
|
|
||||||
|
## Validation RC
|
||||||
|
|
||||||
|
Appliquer intégralement :
|
||||||
|
|
||||||
|
```text
|
||||||
|
docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md
|
||||||
|
```
|
||||||
|
|
||||||
|
La gate revalide le workspace complet, reconstruit l'APK autonome universal et le fume sur x86_64 + ARM64. Aucun `npm run build` manuel et aucun AAB ne sont requis.
|
||||||
|
|
||||||
|
## Après validation
|
||||||
|
|
||||||
|
Si la RC est propre, la promotion vers `0.3.1` est mécanique : versions stables, entrée stable du changelog, historique RC, clôture du plan et delta de release. Aucun nouveau comportement ne doit être introduit.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/000-README.md -->
|
<!-- file: docs/000-README.md -->
|
||||||
<!-- version: 28 -->
|
<!-- version: 29 -->
|
||||||
|
|
||||||
# Documentation games.sasedev
|
# Documentation games.sasedev
|
||||||
|
|
||||||
@@ -70,6 +70,7 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_DOCUMENTATION.md`](ru
|
|||||||
- [`testing/002-BETA_VALIDATION_MATRIX.md`](testing/002-BETA_VALIDATION_MATRIX.md) — matrice beta Desktop SDL3, Tauri/WASM et Android multi-appareils.
|
- [`testing/002-BETA_VALIDATION_MATRIX.md`](testing/002-BETA_VALIDATION_MATRIX.md) — matrice beta Desktop SDL3, Tauri/WASM et Android multi-appareils.
|
||||||
- [`testing/003-RC_VALIDATION_MATRIX.md`](testing/003-RC_VALIDATION_MATRIX.md) — matrice RC de reproductibilité, packaging final et promotion vers `0.1.0`.
|
- [`testing/003-RC_VALIDATION_MATRIX.md`](testing/003-RC_VALIDATION_MATRIX.md) — matrice RC de reproductibilité, packaging final et promotion vers `0.1.0`.
|
||||||
- [`testing/004-V0_3_0_RC_VALIDATION_MATRIX.md`](testing/004-V0_3_0_RC_VALIDATION_MATRIX.md) — gate RC spécifique au POC Snake Web direct et à son témoin Desktop SDL3.
|
- [`testing/004-V0_3_0_RC_VALIDATION_MATRIX.md`](testing/004-V0_3_0_RC_VALIDATION_MATRIX.md) — gate RC spécifique au POC Snake Web direct et à son témoin Desktop SDL3.
|
||||||
|
- [`testing/005-V0_3_1_RC_VALIDATION_MATRIX.md`](testing/005-V0_3_1_RC_VALIDATION_MATRIX.md) — gate RC du POC Snake Tauri Android de référence, incluant workspace complet et APK universal x86_64 + ARM64.
|
||||||
- [`development/003-TRACING_AND_DIAGNOSTICS.md`](development/003-TRACING_AND_DIAGNOSTICS.md) — socle `tracing`, subscriber et appender communs.
|
- [`development/003-TRACING_AND_DIAGNOSTICS.md`](development/003-TRACING_AND_DIAGNOSTICS.md) — socle `tracing`, subscriber et appender communs.
|
||||||
- [`development/004-SDL3_DESKTOP_PREREQUISITES.md`](development/004-SDL3_DESKTOP_PREREQUISITES.md) — prérequis SDL3 Desktop, stratégie de liaison système et vérification `pkg-config`.
|
- [`development/004-SDL3_DESKTOP_PREREQUISITES.md`](development/004-SDL3_DESKTOP_PREREQUISITES.md) — prérequis SDL3 Desktop, stratégie de liaison système et vérification `pkg-config`.
|
||||||
- [`development/005-DESKTOP_WINDOW_POLICY.md`](development/005-DESKTOP_WINDOW_POLICY.md) — taille initiale, redimensionnement et séparation future entre fenêtre physique et résolution virtuelle.
|
- [`development/005-DESKTOP_WINDOW_POLICY.md`](development/005-DESKTOP_WINDOW_POLICY.md) — taille initiale, redimensionnement et séparation future entre fenêtre physique et résolution virtuelle.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md -->
|
<!-- file: docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md -->
|
||||||
<!-- version: 9 -->
|
<!-- version: 10 -->
|
||||||
|
|
||||||
# Plan v0.3.1 — second host Snake Tauri Android
|
# Plan v0.3.1 — second host Snake Tauri Android
|
||||||
|
|
||||||
@@ -139,30 +139,28 @@ Si aucune extraction n'est justifiée, cette tranche est omise.
|
|||||||
|
|
||||||
### `2-beta.1` — validation large et packaging Android
|
### `2-beta.1` — validation large et packaging Android
|
||||||
|
|
||||||
Tranche ouverte après validation de `0-pre.4.fix.1`. Aucun `0-pre.5` n'est justifié : aucune extraction Web/Tauri ne conserve assez de valeur maintenant que le host Android Tauri est explicitement un POC de référence.
|
Tranche validée le 2026-09-21. Aucun `0-pre.5` n'était justifié : aucune extraction Web/Tauri ne conserve assez de valeur maintenant que le host Android Tauri est explicitement un POC de référence.
|
||||||
|
|
||||||
Prévoir :
|
Résultats acquis :
|
||||||
|
|
||||||
- audits statiques applicables ;
|
- audits statiques, `cargo fmt`, `cargo check --workspace` et Clippy workspace strict propres ;
|
||||||
- `cargo fmt --all -- --check` ;
|
- suite `cargo test --workspace --all-targets --all-features` propre avec 35 tests réussis et aucun échec ;
|
||||||
- `cargo check --workspace` ;
|
- hook Tauri `beforeBuildCommand` : WASM release, `wasm-bindgen`, TypeScript/Vite et copie des assets réussis ;
|
||||||
- Clippy workspace strict ;
|
- APK Debug universal généré avec `aarch64-linux-android` et `x86_64-linux-android` ;
|
||||||
- suite workspace complète à ce jalon planifié ;
|
- installation et lancement réussis sur Galaxy S9+ ARM64 réel puis AVD API 36 x86_64 ;
|
||||||
- build WASM release et bindings ;
|
- aucun serveur Vite, port `1436` ou tunnel ADB requis pour le package autonome.
|
||||||
- `cargo tauri android build` ;
|
|
||||||
- APK de validation du POC de référence ;
|
|
||||||
- AAB uniquement si une valeur de validation supplémentaire est démontrée, pas par automatisme de distribution ;
|
|
||||||
- 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
|
Le contrôle `unzip` explicite des deux entrées ABI n'a pas été fourni dans la sortie utilisateur ; la RC le conserve donc comme contrôle mécanique, même si l'installation/lancement du même APK sur ARM64 et x86_64 exerce déjà les deux architectures en pratique.
|
||||||
|
|
||||||
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.
|
### `2-beta.2` — omise
|
||||||
|
|
||||||
|
Aucune consolidation beta supplémentaire ne justifie une tranche autonome. Les documents durables nécessaires sont consolidés directement à l'ouverture de la RC.
|
||||||
|
|
||||||
### `3-rc.1` — candidate gelée
|
### `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.
|
Tranche ouverte après validation de `2-beta.1`. Gel fonctionnel strict, synchronisation des versions RC, `CHANGELOG.md`, historique beta, matrice RC spécifique `0.3.1` et préparation du prompt de la prochaine version active. Aucun nouveau framework, host, gameplay ou comportement.
|
||||||
|
|
||||||
|
La gate RC revalide le workspace complet et l'APK autonome universal sur x86_64 + ARM64. Aucun AAB Tauri n'est demandé : l'AAB est réservé à la future voie Android SDL3 native où il constitue un vrai artefact de distribution.
|
||||||
|
|
||||||
### `0.3.1` — release stable
|
### `0.3.1` — release stable
|
||||||
|
|
||||||
@@ -206,4 +204,4 @@ La version peut entrer en RC lorsque :
|
|||||||
|
|
||||||
## Version suivante
|
## Version suivante
|
||||||
|
|
||||||
`0.3.2` devient une évaluation conditionnelle de Tauri Desktop + Snake. Elle n’est ouverte que si la WebView Desktop apporte un bénéfice explicite, notamment une piste de monétisation publicitaire viable ; la factorisation WebView reste interdite sans deux consommateurs réellement retenus.
|
`0.3.2` reste différée : aucune voie de monétisation Desktop/WebView suffisamment démontrée ne justifie son ouverture. La prochaine version active prévue est `0.3.3`, consacrée à Android SDL3 natif multi-ABI. Son `0-pre.1` devra notamment cadrer un AAB de distribution, distinguer compatibilité ABI et compatibilité de version Android, puis déterminer expérimentalement le `minSdk` réellement soutenable avant de promettre le support d’anciens appareils.
|
||||||
|
|||||||
96
docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md
Normal file
96
docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
<!-- file: docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Matrice de validation RC 0.3.1
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
`0.3.1-3-rc.1` est une candidate gelée. Elle n'ajoute aucune fonctionnalité au POC Snake Tauri Android ; elle vérifie qu'un état reproductible peut être promu mécaniquement vers `0.3.1`.
|
||||||
|
|
||||||
|
Le host Tauri Android reste un POC de référence. La voie Android productive reste SDL3 natif/Java/JNI. Aucun AAB Tauri n'est requis pour cette RC.
|
||||||
|
|
||||||
|
## Gel fonctionnel
|
||||||
|
|
||||||
|
Pendant `3-rc.*`, seules les corrections autorisées par `VER-RC-*` sont admises. Tout nouveau gameplay, contrôle swipe, refactor Web/Tauri, framework commun, intégration publicitaire ou changement volontaire de comportement est hors scope.
|
||||||
|
|
||||||
|
## Gate workspace
|
||||||
|
|
||||||
|
Depuis la racine :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64
|
||||||
|
|
||||||
|
cargo fmt --all
|
||||||
|
cargo fmt --all -- --check
|
||||||
|
|
||||||
|
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 check --workspace
|
||||||
|
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||||
|
cargo test --workspace --all-targets --all-features
|
||||||
|
```
|
||||||
|
|
||||||
|
Cette suite complète est volontairement répétée au jalon RC parce que la version technique et les métadonnées frontend sont promues vers la candidate.
|
||||||
|
|
||||||
|
## Packaging Android autonome
|
||||||
|
|
||||||
|
Installer/actualiser les dépendances frontend, puis laisser Tauri posséder le build WASM/Vite :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd crates/apps/game-snake-poc-tauri && npm install)
|
||||||
|
|
||||||
|
(cd crates/apps/game-snake-poc-tauri && \
|
||||||
|
cargo tauri android build --debug --apk --target aarch64 --target x86_64)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ne pas lancer `npm run build` manuellement. Le hook `beforeBuildCommand` doit construire le WASM release, générer les bindings, exécuter TypeScript/Vite et copier les assets.
|
||||||
|
|
||||||
|
Le package RC de validation reste un APK Debug universal car `0.3.1` ne constitue pas la voie Android de production et ne possède aucun secret/signing de store. L'AAB de production sera étudié dans la future version Android SDL3 native.
|
||||||
|
|
||||||
|
## Contrôle ABI
|
||||||
|
|
||||||
|
À partir du chemin `<apk>` affiché par Tauri :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
unzip -l <apk> | grep -E 'lib/(arm64-v8a|x86_64)/libgame_snake_poc_tauri_lib\.so'
|
||||||
|
```
|
||||||
|
|
||||||
|
Les deux entrées doivent être présentes.
|
||||||
|
|
||||||
|
## Smoke AVD x86_64
|
||||||
|
|
||||||
|
Lancer l'AVD de référence dans un terminal séparé :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
emulator -avd sasedev_games_api36
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
adb devices -l
|
||||||
|
adb -s emulator-5554 install -r <apk>
|
||||||
|
adb -s emulator-5554 shell am start -n com.sasedev.games.snake.tauri/.MainActivity
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier : démarrage, Canvas, assets, WASM, contrôles disponibles, lifecycle background/foreground, reprise sans rattrapage et Back sans crash.
|
||||||
|
|
||||||
|
## Smoke ARM64 réel
|
||||||
|
|
||||||
|
Avec le Galaxy S9+ ou un autre appareil ARM64 disponible :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
adb -s <serial> shell getprop ro.product.cpu.abi
|
||||||
|
adb -s <serial> install -r <apk>
|
||||||
|
adb -s <serial> shell am start -n com.sasedev.games.snake.tauri/.MainActivity
|
||||||
|
```
|
||||||
|
|
||||||
|
Vérifier : provenance `android / tauri-webview / wasm / phone / touch`, contrôles tactiles, background/foreground, reprise sans rattrapage, rotation/resize si disponible et plusieurs Back. Aucun Vite, `adb reverse` ou port `1436` ne doit être nécessaire.
|
||||||
|
|
||||||
|
Le crash `FORTIFY: pthread_mutex_lock called on a destroyed mutex` observé une fois en dev reste un point de surveillance. Sa reproduction sur l'APK autonome RC bloque la promotion stable et impose un `3-rc.1.fix.N`; son absence pendant les smokes RC permet de clore ce risque comme non reproductible dans l'état candidat.
|
||||||
|
|
||||||
|
## Promotion stable
|
||||||
|
|
||||||
|
Si la gate RC est propre et qu'aucun correctif n'est nécessaire, la promotion vers `0.3.1` est mécanique : versions stables, entrée stable du `CHANGELOG.md`, historique RC, clôture du plan et delta de release. Aucun code fonctionnel ne doit changer.
|
||||||
60
history/0.3.1/2-beta.1.md
Normal file
60
history/0.3.1/2-beta.1.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<!-- file: history/0.3.1/2-beta.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Historique 0.3.1-2-beta.1
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
Beta validée par l'utilisateur le 2026-09-21. La version peut entrer en `0.3.1-3-rc.1` sans `2-beta.2`.
|
||||||
|
|
||||||
|
## Gate workspace
|
||||||
|
|
||||||
|
Les audits Rust/workspace, Markdown et distribution sont propres. `cargo fmt`, `cargo check --workspace` et Clippy workspace strict passent.
|
||||||
|
|
||||||
|
La suite :
|
||||||
|
|
||||||
|
```text
|
||||||
|
cargo test --workspace --all-targets --all-features
|
||||||
|
```
|
||||||
|
|
||||||
|
termine avec 35 tests réussis et aucun échec sur les crates effectivement porteuses de tests.
|
||||||
|
|
||||||
|
## Build frontend et APK autonome
|
||||||
|
|
||||||
|
`npm install` termine sans vulnérabilité signalée. Le hook Tauri `beforeBuildCommand` exécute :
|
||||||
|
|
||||||
|
```text
|
||||||
|
WASM release
|
||||||
|
wasm-bindgen
|
||||||
|
TypeScript
|
||||||
|
Vite production
|
||||||
|
static copy des deux familles d'assets
|
||||||
|
```
|
||||||
|
|
||||||
|
Le build Android :
|
||||||
|
|
||||||
|
```text
|
||||||
|
cargo tauri android build --debug --apk --target aarch64 --target x86_64
|
||||||
|
```
|
||||||
|
|
||||||
|
compile les cibles `aarch64-linux-android` et `x86_64-linux-android`, puis produit :
|
||||||
|
|
||||||
|
```text
|
||||||
|
gen/android/app/build/outputs/apk/universal/debug/app-universal-debug.apk
|
||||||
|
```
|
||||||
|
|
||||||
|
Le contrôle `unzip -l` demandé par le delta n'apparaît pas dans la sortie transmise ; il reste donc explicitement dans la gate RC.
|
||||||
|
|
||||||
|
## Smoke ARM64 réel
|
||||||
|
|
||||||
|
L'APK universal est installé avec succès sur le Galaxy S9+ `arm64-v8a` puis `MainActivity` est lancée via ADB.
|
||||||
|
|
||||||
|
## Smoke x86_64 AVD
|
||||||
|
|
||||||
|
L'AVD `sasedev_games_api36` utilise une image `x86_64`. Le même APK universal est installé avec succès sur `emulator-5554`, puis `MainActivity` est lancée via ADB.
|
||||||
|
|
||||||
|
Ces deux installations/lancements valident le packaging autonome sur les deux architectures de référence sans serveur Vite ni tunnel ADB. Les contrôles lifecycle/Back détaillés restent repris dans la matrice RC afin de fermer explicitement le risque de teardown observé antérieurement en mode dev.
|
||||||
|
|
||||||
|
## Décision de phase
|
||||||
|
|
||||||
|
Aucun défaut beta ne justifie `2-beta.2`. Le scope fonctionnel est gelé et `3-rc.1` devient la tranche suivante.
|
||||||
287
prompts/004-V0_3_3_START_PROMPT.md
Normal file
287
prompts/004-V0_3_3_START_PROMPT.md
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
<!-- file: prompts/004-V0_3_3_START_PROMPT.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Prompt de démarrage `0.3.3` — Android SDL3 natif multi-ABI et packaging Gradle
|
||||||
|
|
||||||
|
## 1. Base exacte et version cible
|
||||||
|
|
||||||
|
Partir uniquement de la version stable/taggée :
|
||||||
|
|
||||||
|
```text
|
||||||
|
v0.3.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Si ce prompt est lu avant la publication effective de `0.3.1`, ne pas ouvrir `0.3.3`. Terminer d'abord la RC puis la release stable `0.3.1`.
|
||||||
|
|
||||||
|
`0.3.2` est volontairement différée : ne pas créer de placeholder, de version vide ou de POC Tauri Desktop par cérémonial. Sa réouverture dépend d'un bénéfice produit concret, notamment une monétisation Desktop/WebView réellement démontrée.
|
||||||
|
|
||||||
|
Version cible active :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.3
|
||||||
|
```
|
||||||
|
|
||||||
|
Première tranche obligatoire :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0.3.3-0-pre.1
|
||||||
|
```
|
||||||
|
|
||||||
|
`0-pre.1` est le gate de cadrage : audit, requirements, recherche ciblée, sizing, risques, matrice de validation et création du plan actif sous `docs/plans/`. Ne pas commencer directement par une réécriture Gradle.
|
||||||
|
|
||||||
|
## 2. Sources de vérité
|
||||||
|
|
||||||
|
Lire intégralement, dans cet ordre :
|
||||||
|
|
||||||
|
```text
|
||||||
|
RULES.md
|
||||||
|
ROADMAP.md
|
||||||
|
CHANGELOG.md
|
||||||
|
docs/000-README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Puis au minimum :
|
||||||
|
|
||||||
|
```text
|
||||||
|
docs/rules/RULES_GENERAL.md
|
||||||
|
docs/rules/RULES_RUST.md
|
||||||
|
docs/rules/RULES_PROJECT.md
|
||||||
|
docs/rules/RULES_DOCUMENTATION.md
|
||||||
|
docs/rules/FILE_CONTRACTS.md
|
||||||
|
docs/rules/VERSION_WORKFLOW.md
|
||||||
|
docs/rules/RULES_COMMANDS.md
|
||||||
|
docs/rules/RULES_VALIDATION_MATRIX.md
|
||||||
|
docs/rules/RULES_SESSION_PLANNING.md
|
||||||
|
docs/rules/PROMPT_STRUCTURE.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Transmission plateforme/Android :
|
||||||
|
|
||||||
|
```text
|
||||||
|
docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md
|
||||||
|
docs/architecture/002-ANDROID_ARCHITECTURE.md
|
||||||
|
docs/architecture/003-SDL3_PLATFORM_ABSTRACTION.md
|
||||||
|
docs/architecture/004-INPUT_AND_CONTROLS.md
|
||||||
|
docs/architecture/005-ASSET_ARCHITECTURE.md
|
||||||
|
docs/architecture/010-RUNTIME_PROVENANCE.md
|
||||||
|
docs/architecture/015-PLATFORM_POC_ARCHITECTURE.md
|
||||||
|
docs/development/006-ANDROID_RUST_NATIVE_BUILD.md
|
||||||
|
docs/development/007-ANDROID_JNI_BRIDGE.md
|
||||||
|
docs/testing/005-V0_3_1_RC_VALIDATION_MATRIX.md
|
||||||
|
history/0.3.1/
|
||||||
|
deltas/0.3.1/
|
||||||
|
```
|
||||||
|
|
||||||
|
Auditer ensuite le code réellement concerné :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Android/
|
||||||
|
crates/apps/game-android-entrypoint/
|
||||||
|
crates/engines/engine-v1-sdl/
|
||||||
|
crates/engines/engine-v1-platform-api/
|
||||||
|
crates/games/game-reflex-poc/
|
||||||
|
crates/games/game-snake-poc/
|
||||||
|
assets/
|
||||||
|
scripts/build_android_rust.py
|
||||||
|
```
|
||||||
|
|
||||||
|
Le script Python historique est une source d'information sur le pipeline existant, pas la cible d'orchestration à conserver.
|
||||||
|
|
||||||
|
## 3. État hérité attendu
|
||||||
|
|
||||||
|
La stable `0.3.1` doit laisser :
|
||||||
|
|
||||||
|
- Desktop SDL3 natif fonctionnel ;
|
||||||
|
- Android SDL3/Java/JNI historique déjà capable d'exécuter Reflex et Snake ;
|
||||||
|
- `game-android-entrypoint` comme `cdylib` commun sélectionnant exactement un jeu ;
|
||||||
|
- SDL3 AAR/Prefab et `cargo-ndk` déjà connus du dépôt ;
|
||||||
|
- Tauri Android Snake conservé uniquement comme POC de référence ;
|
||||||
|
- preuve qu'un même package Android peut couvrir ARM64 réel et x86_64 émulateur ;
|
||||||
|
- décision produit : la voie Android de production est SDL3 native.
|
||||||
|
|
||||||
|
Ne pas réutiliser Tauri, WebView ou WASM dans le packaging Android natif uniquement parce qu'ils existent dans `0.3.1`.
|
||||||
|
|
||||||
|
## 4. Mission `0.3.3`
|
||||||
|
|
||||||
|
Transformer le chemin Android SDL3 natif historique en pipeline multi-ABI reproductible possédé par Cargo/Gradle, sans script Python de build, et préparer une distribution Android réellement adaptée aux futurs jeux.
|
||||||
|
|
||||||
|
Le résultat attendu doit permettre au minimum :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Gradle -> build Rust natif -> SDL3/JNI -> APK de test
|
||||||
|
Gradle -> plusieurs ABI -> APK universal de test
|
||||||
|
Gradle -> plusieurs ABI pertinentes -> AAB de distribution
|
||||||
|
```
|
||||||
|
|
||||||
|
Le choix final des ABI et du `minSdk` doit être fondé sur les contraintes réellement vérifiées de SDL3, NDK, AGP, Rust et du code projet.
|
||||||
|
|
||||||
|
## 5. Multi-ABI et anciennes versions Android : deux sujets distincts
|
||||||
|
|
||||||
|
Ne pas confondre :
|
||||||
|
|
||||||
|
- **ABI CPU** : `arm64-v8a`, `x86_64`, éventuellement `armeabi-v7a` si elle reste techniquement et produitement justifiée ;
|
||||||
|
- **version Android / API level** : `minSdk`, `targetSdk`, `compileSdk`.
|
||||||
|
|
||||||
|
`arm64-v8a` est la cible appareil productive minimale actuelle ; `x86_64` reste utile pour les AVD. Le support `armeabi-v7a` n'est pas automatiquement requis pour supporter un Android ancien : il doit être évalué séparément.
|
||||||
|
|
||||||
|
Le souhait produit est de supporter des versions Android anciennes lorsque cela reste raisonnable. `0-pre.1` doit donc vérifier la documentation officielle actuelle et le pipeline réel avant de fixer un `minSdk`; ne pas recopier aveuglément une valeur historique du dépôt.
|
||||||
|
|
||||||
|
## 6. Packaging attendu
|
||||||
|
|
||||||
|
Pour les tests locaux, viser un APK universal multi-ABI afin qu'un seul artefact puisse être installé sur les appareils/AVD couverts.
|
||||||
|
|
||||||
|
Pour la distribution future, privilégier un Android App Bundle :
|
||||||
|
|
||||||
|
```text
|
||||||
|
app-release.aab
|
||||||
|
```
|
||||||
|
|
||||||
|
contenant les ABI réellement retenues. La signature/keystore de publication reste hors dépôt et ne doit jamais être inventée ou embarquée dans les sources.
|
||||||
|
|
||||||
|
La version doit documenter clairement la différence entre :
|
||||||
|
|
||||||
|
```text
|
||||||
|
APK universal -> sideload/tests
|
||||||
|
AAB -> distribution store
|
||||||
|
APK split ABI -> option technique, pas artefact par défaut sans besoin
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Architecture et ownership
|
||||||
|
|
||||||
|
Conserver les décisions suivantes :
|
||||||
|
|
||||||
|
- Rust porte gameplay et moteur ;
|
||||||
|
- SDL3 porte la couche plateforme graphique/input native ;
|
||||||
|
- Java reste la glue Android préférée ; Kotlin n'est pas introduit sans besoin démontré ;
|
||||||
|
- le contrat JNI reste petit ;
|
||||||
|
- `Android/common` porte le commun durable ;
|
||||||
|
- chaque `Android/game-*` reste une application distincte ;
|
||||||
|
- assets communs et spécifiques restent canoniques sous `assets/` et sont packagés sans duplication source ;
|
||||||
|
- les bibliothèques `jniLibs` générées ne sont pas versionnées ;
|
||||||
|
- aucun build Android productif ne dépend de Tauri.
|
||||||
|
|
||||||
|
## 8. Orchestration de build
|
||||||
|
|
||||||
|
La cible `0.3.3` est de supprimer le besoin de `scripts/build_android_rust.py` dans le chemin normal de build Android.
|
||||||
|
|
||||||
|
Le cadrage doit comparer les options propres disponibles dans Gradle/NDK/Cargo, par exemple l'invocation contrôlée de `cargo ndk` depuis des tâches Gradle, sans créer un nouveau script ad hoc dans un autre langage uniquement pour déplacer le problème.
|
||||||
|
|
||||||
|
Le résultat doit garantir :
|
||||||
|
|
||||||
|
- choix explicite des ABI ;
|
||||||
|
- build Rust avec exactement une feature jeu ;
|
||||||
|
- mise à disposition de `libgame_android_entrypoint.so` et `libSDL3.so` par ABI ;
|
||||||
|
- dépendances de tâches Gradle correctes ;
|
||||||
|
- rebuild incrémental raisonnable ;
|
||||||
|
- erreurs visibles et déterministes ;
|
||||||
|
- outputs générés hors sources versionnées.
|
||||||
|
|
||||||
|
## 9. Scope inclus
|
||||||
|
|
||||||
|
À cadrer puis implémenter progressivement :
|
||||||
|
|
||||||
|
- pipeline Gradle/Cargo natif multi-ABI ;
|
||||||
|
- au minimum Snake comme jeu-sonde, puis Reflex si la factorisation commune le rend naturel dans la même version ;
|
||||||
|
- APK universal de test ;
|
||||||
|
- AAB de validation de distribution sans secrets ;
|
||||||
|
- choix documenté des ABI ;
|
||||||
|
- étude et validation du `minSdk` soutenable ;
|
||||||
|
- smoke x86_64 AVD et ARM64 réel ;
|
||||||
|
- si un AVD d'API plus ancienne compatible est disponible ou raisonnablement créable, smoke ciblé du plancher Android retenu ;
|
||||||
|
- mise à jour des docs Android/Gradle/JNI/validation ;
|
||||||
|
- suppression du script Python du chemin de build normal, puis suppression du fichier lui-même seulement si aucune autre responsabilité durable ne le justifie.
|
||||||
|
|
||||||
|
## 10. Hors scope
|
||||||
|
|
||||||
|
Ne pas intégrer dans `0.3.3` sans découverte bloquante :
|
||||||
|
|
||||||
|
- Tauri Desktop ;
|
||||||
|
- nouvelles fonctionnalités de gameplay ;
|
||||||
|
- réseau realtime ;
|
||||||
|
- publicité AdMob effective ;
|
||||||
|
- billing ;
|
||||||
|
- authentification ;
|
||||||
|
- Uroburas ;
|
||||||
|
- iOS ;
|
||||||
|
- migration vers Kotlin ;
|
||||||
|
- moteur V2 ;
|
||||||
|
- optimisation prématurée par ABI sans mesure.
|
||||||
|
|
||||||
|
L'AAB est un objectif de packaging, pas une ouverture du scope monétisation/store complet.
|
||||||
|
|
||||||
|
## 11. `0-pre.1` obligatoire
|
||||||
|
|
||||||
|
Avant tout développement lourd :
|
||||||
|
|
||||||
|
1. auditer les modules Gradle existants et leurs versions ;
|
||||||
|
2. auditer `scripts/build_android_rust.py` et distinguer ce qu'il orchestre réellement ;
|
||||||
|
3. vérifier la version SDL3/AAR réellement utilisée et sa documentation Android actuelle ;
|
||||||
|
4. vérifier AGP/Gradle/JDK/NDK et les API Android requises ;
|
||||||
|
5. inventorier les ABI installables/testables localement ;
|
||||||
|
6. distinguer support OS ancien et support CPU 32 bits ;
|
||||||
|
7. proposer le `minSdk` candidat avec justification et stratégie de test ;
|
||||||
|
8. définir APK universal, AAB et éventuels splits ;
|
||||||
|
9. définir les gates par jalon ;
|
||||||
|
10. créer `docs/plans/003-V0_3_3_ANDROID_NATIVE_MULTI_ABI_PLAN.md` avec un forecast souple jusqu'à stable.
|
||||||
|
|
||||||
|
Si le scope ne tient pas raisonnablement dans une session/version, le découper dès `0-pre.1` plutôt que d'allonger artificiellement les prereleases.
|
||||||
|
|
||||||
|
## 12. Validation et responsabilité
|
||||||
|
|
||||||
|
Les audits statiques peuvent être exécutés par le générateur. Les builds Cargo/Gradle, tests et smokes finaux restent côté utilisateur conformément aux règles du dépôt et ne sont jamais déclarés réussis sans sortie réelle.
|
||||||
|
|
||||||
|
Dès qu'un fichier Rust/Cargo change, appliquer la gate Rust normale. Dès qu'Android/Gradle change, ajouter les tâches Gradle ciblées prévues par le plan. Les tests workspace complets restent réservés aux jalons larges/finalisation selon la matrice.
|
||||||
|
|
||||||
|
Les commandes nécessitant un changement de répertoire utilisent un sous-shell :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
(cd Android && <commande>)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 13. Documentation, deltas et historique
|
||||||
|
|
||||||
|
Chaque tranche produit `deltas/0.3.3/<jalon>.md` avec base, scope, fichiers et validations attendues.
|
||||||
|
|
||||||
|
`history/0.3.3/<jalon>.md` n'est créé que par la tranche suivante après validation effective du jalon précédent.
|
||||||
|
|
||||||
|
`CHANGELOG.md` reste normalement silencieux pendant pre/alpha/beta et est consolidé à partir de la première RC. `ROADMAP.md` reste macroscopique.
|
||||||
|
|
||||||
|
Les nouvelles responsabilités Android durables doivent être documentées au moment où elles deviennent réelles, pas repoussées intégralement à la fin.
|
||||||
|
|
||||||
|
## 14. Forecast initial non contraignant
|
||||||
|
|
||||||
|
Le `0-pre.1` doit réviser ce forecast à partir de l'audit :
|
||||||
|
|
||||||
|
```text
|
||||||
|
0-pre.1 audit + requirements + choix ABI/API + plan
|
||||||
|
0-pre.2 orchestration Gradle/Cargo native sur une ABI
|
||||||
|
0-pre.3 multi-ABI + APK universal
|
||||||
|
0-pre.4 AAB + compatibilité Android/minSdk + smokes
|
||||||
|
2-beta.1 validation large et packaging final
|
||||||
|
3-rc.1 gel et reproductibilité
|
||||||
|
0.3.3 promotion mécanique stable
|
||||||
|
```
|
||||||
|
|
||||||
|
Les numéros peuvent être regroupés/scindés selon les résultats réels. Une version doit néanmoins être menée jusqu'à stable dans la session autant que possible.
|
||||||
|
|
||||||
|
## 15. Première gate de reprise
|
||||||
|
|
||||||
|
Après lecture/audit et avant la livraison `0-pre.1`, relever au minimum :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rustc --version
|
||||||
|
cargo --version
|
||||||
|
rustup target list --installed
|
||||||
|
java -version
|
||||||
|
printf 'JAVA_HOME=%s\nANDROID_HOME=%s\n' "$JAVA_HOME" "$ANDROID_HOME"
|
||||||
|
adb version
|
||||||
|
adb devices -l
|
||||||
|
emulator -list-avds
|
||||||
|
(cd Android && gradle --version)
|
||||||
|
```
|
||||||
|
|
||||||
|
Compléter par les versions/chemins NDK, SDK, AGP, SDL3 AAR et `cargo ndk` réellement trouvés dans la baseline.
|
||||||
|
|
||||||
|
## 16. Critère de réussite
|
||||||
|
|
||||||
|
`0.3.3` réussit lorsque le build Android SDL3 natif n'a plus besoin d'un orchestrateur Python, qu'un artefact de test multi-ABI reproductible est produit, qu'un AAB de distribution peut être construit sans secrets embarqués, que le support Android/ABI est explicitement documenté et testé selon les moyens disponibles, et que Snake reste fonctionnel sans régression du moteur partagé.
|
||||||
Reference in New Issue
Block a user