0.1.0-2-beta.1
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: Android/game-reflex-poc/build.gradle
|
||||
// version: 16
|
||||
// version: 17
|
||||
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
@@ -18,7 +18,7 @@ android {
|
||||
minSdk 21
|
||||
targetSdk 36
|
||||
versionCode 1
|
||||
versionName '0.1.0-1-alpha.2.fix.5'
|
||||
versionName '0.1.0-2-beta.1'
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: Android/game-snake-poc/build.gradle
|
||||
// version: 16
|
||||
// version: 17
|
||||
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
@@ -18,7 +18,7 @@ android {
|
||||
minSdk 21
|
||||
targetSdk 36
|
||||
versionCode 1
|
||||
versionName '0.1.0-1-alpha.2.fix.5'
|
||||
versionName '0.1.0-2-beta.1'
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
|
||||
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,8 +1,17 @@
|
||||
<!-- file: CHANGELOG.md -->
|
||||
<!-- version: 5 -->
|
||||
<!-- version: 6 -->
|
||||
|
||||
# Changelog
|
||||
|
||||
## 0.1.0-2-beta.1 — 2026-09-17
|
||||
|
||||
- validation de `1-alpha.2.fix.5` avec Reflex exécuté dans Tauri/WebView/WASM via Vite + TypeScript ;
|
||||
- validation du tracing unifié Rust/TypeScript et de la sortie `Escape` via le contrat moteur commun ;
|
||||
- passage en phase beta, désormais centrée sur la stabilisation, le packaging et les tests multi-appareils ;
|
||||
- ajout d'une matrice de validation Desktop SDL3, Tauri/WASM, Android AVD x86_64 et Android ARM64 réel ;
|
||||
- ajout d'un audit en lecture seule des frontières statiques nécessaires aux distributions ;
|
||||
- formalisation des gates de packaging Desktop natif, Tauri et Android beta.
|
||||
|
||||
## 0.1.0-1-alpha.1 — 2026-09-16
|
||||
|
||||
- validation de la fin de phase `0-pre.*` avec Snake jouable sur Desktop et Galaxy S9+ ARM64 ;
|
||||
|
||||
@@ -19,7 +19,7 @@ members = [
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.0-1-alpha.2.fix.5"
|
||||
version = "0.1.0-2-beta.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/games"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: ROADMAP.md -->
|
||||
<!-- version: 11 -->
|
||||
<!-- version: 12 -->
|
||||
|
||||
# Roadmap
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
- [x] `0-pre.10` — POC Reflex jouable Desktop + Android.
|
||||
- [x] `0-pre.11` — POC Snake jouable et validation de la réutilisation du moteur.
|
||||
- [x] `1-alpha.1` — première API moteur V1 volontairement stabilisée et provenance runtime/input pour les futures sessions et scores.
|
||||
- [ ] `1-alpha.2` — POC Web/WASM embarqué dans Tauri, sans site distant, et validation de la frontière des services Web/ads.
|
||||
- [x] `1-alpha.2` — POC Web/WASM embarqué dans Tauri, sans site distant, et validation de la frontière des services Web/ads.
|
||||
- [ ] `2-beta.1` — stabilisation, packaging, tests multi-appareils.
|
||||
- [ ] `3-rc.1` — candidat de release du socle 0.1.0.
|
||||
- [ ] `0.1.0` — première baseline stable du framework POC.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "game-reflex-poc-tauri",
|
||||
"private": true,
|
||||
"version": "0.1.0-1-alpha.2.fix.5",
|
||||
"version": "0.1.0-2-beta.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://schema.tauri.app/config/2",
|
||||
"productName": "Reflex POC Tauri",
|
||||
"version": "0.1.0-1-alpha.2.fix.5",
|
||||
"version": "0.1.0-2-beta.1",
|
||||
"identifier": "com.sasedev.games.reflex.tauri",
|
||||
"build": {
|
||||
"beforeDevCommand": {
|
||||
|
||||
114
deltas/0.1.0/2-beta.1.md
Normal file
114
deltas/0.1.0/2-beta.1.md
Normal file
@@ -0,0 +1,114 @@
|
||||
<!-- file: deltas/0.1.0/2-beta.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.1.0-2-beta.1
|
||||
|
||||
## Base
|
||||
|
||||
Base validée : `0.1.0-1-alpha.2.fix.5`.
|
||||
|
||||
## Objectif
|
||||
|
||||
Entrer en phase beta sans ajouter de nouveau gameplay.
|
||||
|
||||
La priorité devient :
|
||||
|
||||
- stabilisation ;
|
||||
- packaging ;
|
||||
- tests multi-runtimes ;
|
||||
- tests multi-appareils.
|
||||
|
||||
## Historique alpha
|
||||
|
||||
La validation de `1-alpha.2.fix.5` est enregistrée sous :
|
||||
|
||||
```text
|
||||
history/0.1.0/1-alpha.2.fix.5.md
|
||||
```
|
||||
|
||||
## Matrice beta
|
||||
|
||||
La matrice durable est documentée dans :
|
||||
|
||||
```text
|
||||
docs/testing/002-BETA_VALIDATION_MATRIX.md
|
||||
```
|
||||
|
||||
## Audit de distribution
|
||||
|
||||
```bash
|
||||
python3 scripts/audit_distribution_layout.py
|
||||
```
|
||||
|
||||
## Gates statiques et Rust
|
||||
|
||||
```bash
|
||||
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 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
|
||||
```
|
||||
|
||||
## Build WASM
|
||||
|
||||
```bash
|
||||
python3 scripts/build_reflex_tauri_wasm.py
|
||||
```
|
||||
|
||||
## Packaging Desktop natif
|
||||
|
||||
```bash
|
||||
cargo build -p game-reflex-poc-desktop --release
|
||||
cargo build -p game-snake-poc-desktop --release
|
||||
```
|
||||
|
||||
## Packaging Tauri
|
||||
|
||||
```bash
|
||||
cd crates/apps/game-reflex-poc-tauri
|
||||
cargo tauri build
|
||||
cd ../../..
|
||||
```
|
||||
|
||||
Ne pas lancer `npm run build` manuellement comme gate séparée.
|
||||
|
||||
## Android x86_64
|
||||
|
||||
```bash
|
||||
python3 scripts/build_android_rust.py reflex --abi x86_64
|
||||
python3 scripts/build_android_rust.py snake --abi x86_64
|
||||
|
||||
cd Android
|
||||
gradle :game-reflex-poc:assembleDebug
|
||||
gradle :game-snake-poc:assembleDebug
|
||||
cd ..
|
||||
```
|
||||
|
||||
Les deux APK doivent ensuite être testés sur l'AVD x86_64.
|
||||
|
||||
## Android ARM64 réel
|
||||
|
||||
```bash
|
||||
python3 scripts/build_android_rust.py reflex --abi arm64-v8a
|
||||
python3 scripts/build_android_rust.py snake --abi arm64-v8a
|
||||
|
||||
cd Android
|
||||
gradle :game-reflex-poc:assembleDebug
|
||||
gradle :game-snake-poc:assembleDebug
|
||||
cd ..
|
||||
```
|
||||
|
||||
Déployer ensuite sur un appareil ARM64 réel, notamment le Galaxy S9+ déjà utilisé.
|
||||
|
||||
## Transition
|
||||
|
||||
Si les gates, packagings et smokes multi-appareils sont propres, `2-beta.1` pourra être validée et la roadmap passera au candidat `3-rc.1`.
|
||||
|
||||
Tout défaut imputable au projet reste dans `2-beta.1.fix.N`.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/000-README.md -->
|
||||
<!-- version: 15 -->
|
||||
<!-- version: 16 -->
|
||||
|
||||
# Documentation games.sasedev
|
||||
|
||||
@@ -49,6 +49,7 @@ Voir [`../RULES.md`](../RULES.md), notamment [`rules/RULES_COMMANDS.md`](rules/R
|
||||
## Tests et diagnostics
|
||||
|
||||
- [`testing/001-TEST_ARCHITECTURE.md`](testing/001-TEST_ARCHITECTURE.md) — séparation `unit_tests/` / `tests/`, tests ciblés et tracing de test.
|
||||
- [`testing/002-BETA_VALIDATION_MATRIX.md`](testing/002-BETA_VALIDATION_MATRIX.md) — matrice beta Desktop SDL3, Tauri/WASM et Android multi-appareils.
|
||||
- [`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/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/rules/RULES_COMMANDS.md -->
|
||||
<!-- version: 6 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Règles d'exécution des commandes
|
||||
|
||||
@@ -62,3 +62,10 @@
|
||||
- **CMD-GIT-002** — Les fichiers générés ne sont pas commités sauf contrat explicite du dépôt ou exigence de distribution.
|
||||
|
||||
- **CMD-WEB-005** — `npm run dev` et `npm run build` du frontend Tauri sont pilotés par les hooks Tauri ; ils ne constituent pas des gates manuelles indépendantes.
|
||||
|
||||
## Beta et packaging
|
||||
|
||||
- **CMD-BETA-001** — À l'entrée en beta, `scripts/audit_distribution_layout.py` vérifie les frontières statiques nécessaires aux runners et packagings supportés.
|
||||
- **CMD-BETA-002** — La transition alpha vers beta exécute une suite Cargo workspace complète en plus des tests ciblés.
|
||||
- **CMD-BETA-003** — Le build Tauri de packaging est lancé via `cargo tauri build`; ses hooks possèdent le build WASM et Vite/TypeScript.
|
||||
- **CMD-BETA-004** — Les APK Debug servent à la validation multi-appareils beta ; la signature de publication appartient à la phase RC/stable.
|
||||
|
||||
130
docs/testing/002-BETA_VALIDATION_MATRIX.md
Normal file
130
docs/testing/002-BETA_VALIDATION_MATRIX.md
Normal file
@@ -0,0 +1,130 @@
|
||||
<!-- file: docs/testing/002-BETA_VALIDATION_MATRIX.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Matrice de validation beta 0.1.0
|
||||
|
||||
## Objectif
|
||||
|
||||
La phase beta n'ajoute pas de nouveau gameplay.
|
||||
|
||||
Elle valide la stabilité du socle existant sur les runtimes et appareils réellement supportés par `0.1.0`.
|
||||
|
||||
## Desktop SDL3 natif
|
||||
|
||||
Jeux :
|
||||
|
||||
- Reflex ;
|
||||
- Snake.
|
||||
|
||||
Smokes :
|
||||
|
||||
```bash
|
||||
cargo run -p game-reflex-poc-desktop
|
||||
cargo run -p game-snake-poc-desktop
|
||||
```
|
||||
|
||||
Critères :
|
||||
|
||||
- fenêtre créée ;
|
||||
- rendu correct ;
|
||||
- contrôles clavier/souris fonctionnels ;
|
||||
- sortie propre.
|
||||
|
||||
## Desktop Tauri / WASM
|
||||
|
||||
Jeu POC :
|
||||
|
||||
- Reflex.
|
||||
|
||||
Smoke :
|
||||
|
||||
```bash
|
||||
cd crates/apps/game-reflex-poc-tauri
|
||||
cargo tauri dev
|
||||
```
|
||||
|
||||
Critères :
|
||||
|
||||
- Vite démarre via le hook Tauri ;
|
||||
- WASM est reconstruit via le hook Tauri ;
|
||||
- rendu Reflex visible ;
|
||||
- score mis à jour ;
|
||||
- traces Rust et TypeScript visibles ;
|
||||
- `Escape` traverse `QuitRequest` / `QuitDecision` puis ferme proprement.
|
||||
|
||||
## Android x86_64 AVD
|
||||
|
||||
Jeux :
|
||||
|
||||
- Reflex ;
|
||||
- Snake.
|
||||
|
||||
Critères :
|
||||
|
||||
- build Rust x86_64 ;
|
||||
- assemblage APK ;
|
||||
- installation ;
|
||||
- démarrage ;
|
||||
- tactile ;
|
||||
- Back Android.
|
||||
|
||||
## Android ARM64 réel
|
||||
|
||||
Appareil de référence déjà utilisé :
|
||||
|
||||
```text
|
||||
Samsung Galaxy S9+
|
||||
arm64-v8a
|
||||
```
|
||||
|
||||
La beta doit au minimum revalider Snake et, si possible, Reflex sur appareil physique.
|
||||
|
||||
Le tactile physique est évalué séparément de l'AVD, car la qualité de contrôle observée peut différer fortement.
|
||||
|
||||
## Provenance
|
||||
|
||||
Les résultats de test conservent les dimensions de provenance pertinentes :
|
||||
|
||||
```text
|
||||
PlatformFamily
|
||||
DeviceClass
|
||||
ExecutionModel
|
||||
RuntimeHost
|
||||
InputProfile
|
||||
```
|
||||
|
||||
Cette provenance décrit l'environnement ; elle ne décide pas automatiquement si deux scores doivent être classés ensemble.
|
||||
|
||||
## Packaging Desktop natif
|
||||
|
||||
```bash
|
||||
cargo build -p game-reflex-poc-desktop --release
|
||||
cargo build -p game-snake-poc-desktop --release
|
||||
```
|
||||
|
||||
## Packaging Tauri
|
||||
|
||||
Le frontend ne doit pas être construit manuellement comme gate indépendante.
|
||||
|
||||
```bash
|
||||
cd crates/apps/game-reflex-poc-tauri
|
||||
cargo tauri build
|
||||
```
|
||||
|
||||
Le hook `beforeBuildCommand` reconstruit WASM puis exécute le build Vite/TypeScript.
|
||||
|
||||
## Packaging Android beta
|
||||
|
||||
Pour la beta, l'APK Debug reste l'artefact de validation multi-appareils.
|
||||
|
||||
La signature et le packaging de publication sont réservés à la phase RC/stable.
|
||||
|
||||
## Gate lourde de phase
|
||||
|
||||
La transition alpha vers beta justifie :
|
||||
|
||||
```bash
|
||||
cargo test --workspace --all-targets --all-features
|
||||
```
|
||||
|
||||
Cette suite complète ne devient pas une gate de chaque futur correctif beta.
|
||||
72
history/0.1.0/1-alpha.2.fix.5.md
Normal file
72
history/0.1.0/1-alpha.2.fix.5.md
Normal file
@@ -0,0 +1,72 @@
|
||||
<!-- file: history/0.1.0/1-alpha.2.fix.5.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Historique 0.1.0-1-alpha.2.fix.5
|
||||
|
||||
## Statut
|
||||
|
||||
Validé par l'utilisateur le 2026-09-17.
|
||||
|
||||
## Gates Rust
|
||||
|
||||
- audits Rust/workspace propres ;
|
||||
- audit Markdown propre ;
|
||||
- `cargo check --workspace` propre ;
|
||||
- Clippy workspace strict propre ;
|
||||
- `game-logging-lib` : test d'intégration propre ;
|
||||
- `game-reflex-poc` : 4/4 tests ;
|
||||
- `game-reflex-poc-wasm` : crate testable propre.
|
||||
|
||||
## WebAssembly
|
||||
|
||||
`scripts/build_reflex_tauri_wasm.py` compile la crate dédiée `game-reflex-poc-wasm` en `wasm32-unknown-unknown` puis génère les bindings `wasm-bindgen` dans le frontend Tauri.
|
||||
|
||||
Le gameplay Reflex reste porté par `game-reflex-poc`.
|
||||
|
||||
## Tauri / Vite / TypeScript
|
||||
|
||||
Le smoke utilisateur a confirmé :
|
||||
|
||||
- démarrage du runtime Tauri ;
|
||||
- initialisation du tracing frontend ;
|
||||
- frontend ready ;
|
||||
- frontend démarré ;
|
||||
- rendu Reflex fonctionnel.
|
||||
|
||||
## Logging
|
||||
|
||||
Les événements Rust et frontend sont visibles dans le terminal via le subscriber partagé de `game-logging-lib`.
|
||||
|
||||
Événements observés :
|
||||
|
||||
```text
|
||||
Starting Reflex Tauri runtime
|
||||
Reflex Tauri frontend tracing initialized
|
||||
Reflex Tauri frontend ready
|
||||
Reflex Tauri frontend started
|
||||
```
|
||||
|
||||
## Sortie Escape
|
||||
|
||||
Le smoke utilisateur a confirmé la chaîne :
|
||||
|
||||
```text
|
||||
Escape
|
||||
-> ReflexWasmGame::quit_requested_escape()
|
||||
-> EngineGame::quit_requested(QuitSource::Escape)
|
||||
-> QuitDecision::Exit
|
||||
-> close_main_window
|
||||
```
|
||||
|
||||
Les événements observés confirment la décision de sortie puis la fermeture native acceptée.
|
||||
|
||||
## Conclusion
|
||||
|
||||
`1-alpha.2` valide la coexistence de deux runners Desktop consommant le même gameplay :
|
||||
|
||||
```text
|
||||
SDL3 natif
|
||||
Tauri + WebView + WASM + Vite/TypeScript
|
||||
```
|
||||
|
||||
La phase alpha est terminée.
|
||||
58
scripts/audit_distribution_layout.py
Normal file
58
scripts/audit_distribution_layout.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
# file: scripts/audit_distribution_layout.py
|
||||
# version: 1
|
||||
|
||||
"""Audit the static distribution layout expected by the 0.1.0 beta."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
|
||||
REQUIRED_PATHS = (
|
||||
"crates/apps/game-reflex-poc-desktop/Cargo.toml",
|
||||
"crates/apps/game-snake-poc-desktop/Cargo.toml",
|
||||
"crates/apps/game-reflex-poc-tauri/Cargo.toml",
|
||||
"crates/apps/game-reflex-poc-tauri/package.json",
|
||||
"crates/apps/game-reflex-poc-tauri/tsconfig.json",
|
||||
"crates/apps/game-reflex-poc-tauri/vite.config.ts",
|
||||
"crates/apps/game-reflex-poc-tauri/tauri.conf.json",
|
||||
"crates/apps/game-reflex-poc-tauri/capabilities/default.json",
|
||||
"crates/apps/game-reflex-poc-tauri/icons/icon.png",
|
||||
"crates/apps/game-reflex-poc-tauri/frontend/index.html",
|
||||
"crates/apps/game-reflex-poc-tauri/frontend/ts/main.ts",
|
||||
"crates/apps/game-reflex-poc-wasm/Cargo.toml",
|
||||
"Android/game-reflex-poc/build.gradle",
|
||||
"Android/game-snake-poc/build.gradle",
|
||||
"scripts/build_android_rust.py",
|
||||
"scripts/build_reflex_tauri_wasm.py",
|
||||
"assets/common",
|
||||
"assets/game-reflex-poc",
|
||||
"assets/game-snake-poc",
|
||||
)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
"""Validate that every static distribution boundary exists."""
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--root", default=".", help="workspace root")
|
||||
arguments = parser.parse_args()
|
||||
root = pathlib.Path(arguments.root).resolve()
|
||||
missing: list[str] = []
|
||||
for relative in REQUIRED_PATHS:
|
||||
if not (root / relative).exists():
|
||||
missing.append(relative)
|
||||
if missing:
|
||||
for relative in missing:
|
||||
print(f"DIST-LAYOUT-001: missing required path: {relative}", file=sys.stderr)
|
||||
print(f"Distribution layout audit: {len(missing)} violation(s)", file=sys.stderr)
|
||||
return 1
|
||||
print(f"Distribution layout audit: clean ({len(REQUIRED_PATHS)} required path(s))")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user