153 lines
6.0 KiB
Markdown
153 lines
6.0 KiB
Markdown
<!-- file: deltas/0.3.1/0-pre.3.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta 0.3.1-0-pre.3
|
|
|
|
## Base
|
|
|
|
Base déclarée : `0.3.1-0-pre.2.fix.3`, validée par l'utilisateur le 2026-09-20.
|
|
|
|
## Objet
|
|
|
|
Cette tranche transforme le host Tauri Android minimal en POC Snake visuellement jouable : Canvas, boucle de simulation fixed-step, contrôles clavier/touch, assets canoniques et shell responsive.
|
|
|
|
Elle enregistre aussi la décision issue du smoke précédent : Tauri Android est conservé comme POC de référence, mais la voie Android de production reste SDL3 natif tant qu'un besoin fonctionnel explicite ne justifie pas la WebView.
|
|
|
|
## Frontend Tauri Snake
|
|
|
|
Le host ajoute des modules propriétaires séparés :
|
|
|
|
```text
|
|
frontend/ts/assets.ts validation des assets common/game
|
|
frontend/ts/game.ts projection Canvas + fixed-step WASM
|
|
frontend/ts/input.ts clavier + pointer/touch
|
|
frontend/ts/provenance.ts device/input observés pour le host Tauri
|
|
```
|
|
|
|
`main.ts` reste l'orchestrateur frontend et ne réimplémente aucune règle Snake. Le gameplay continue de résider dans `game-snake-poc` et le même `game-snake-poc-wasm` reste consommé par le navigateur direct et la WebView Tauri.
|
|
|
|
Le shell reste volontairement léger : CSS local, aucun Bootstrap/SimpleBar/ResizeObserver ajouté. Le Canvas conserve le ratio logique `3 / 5` du Snake et les boutons directionnels sont utilisables au tactile/pointer.
|
|
|
|
## Assets
|
|
|
|
`vite-plugin-static-copy` est ajouté au package Tauri pour exposer exactement les deux assets canoniques :
|
|
|
|
```text
|
|
assets/common/data/runtime.json -> common/data/runtime.json
|
|
assets/game-snake-poc/data/game.json -> game/data/game.json
|
|
```
|
|
|
|
Les assets restent hors des crates Rust et aucun duplicat runtime n'est créé sous `frontend/` ou `gen/android`.
|
|
|
|
## Provenance
|
|
|
|
Le backend Rust fournit toujours les dimensions statiques `Android / TauriWebView / Wasm`. Le frontend observe désormais la classe de device et les sources d'input pour configurer l'adapter partagé avec `phone/tablet/desktop/unknown` et `touch/keyboard-mouse/mixed/unknown`.
|
|
|
|
La stabilisation lifecycle/background/foreground appartient encore à `0-pre.4`.
|
|
|
|
## Vite dev
|
|
|
|
La configuration WebSocket garde `server.ws`, mécanisme Vite 8 courant. Sur l'émulateur sans `TAURI_DEV_HOST`, le client HMR utilise le même port `1436` que le serveur dev/forwarding Tauri ; avec un host réseau explicite, le port HMR séparé `1437` reste utilisé.
|
|
|
|
Cette correction vise le warning HMR observé au smoke précédent mais n'est pas un critère fonctionnel du gameplay.
|
|
|
|
## Positionnement Tauri après le POC minimal
|
|
|
|
La documentation durable et la roadmap sont réconciliées :
|
|
|
|
- Tauri Android reste un POC de référence ;
|
|
- SDL3 natif reste la cible Android productive par défaut ;
|
|
- les futurs jeux ne reçoivent pas automatiquement une app Tauri Android ;
|
|
- la saisie texte/WebView reste une hypothèse à comparer aux capacités SDL réelles ;
|
|
- Tauri Desktop devient une évaluation conditionnelle, notamment selon la viabilité d'une monétisation publicitaire WebView.
|
|
|
|
Aucune extraction Web/Tauri commune n'est créée dans cette tranche. Le statut de POC de référence réduit au contraire la valeur d'une abstraction qui n'aurait pas au moins deux consommateurs durablement retenus.
|
|
|
|
## Historique créé
|
|
|
|
Conformément à `DOC-HIST-002/003`, la tranche crée :
|
|
|
|
```text
|
|
history/0.3.1/0-pre.2.fix.3.md
|
|
```
|
|
|
|
qui enregistre uniquement les validations réellement fournies pour le jalon précédent.
|
|
|
|
## Fichiers principaux modifiés
|
|
|
|
- `Cargo.toml` ;
|
|
- `README.md` ;
|
|
- `ROADMAP.md` ;
|
|
- `docs/architecture/015-PLATFORM_POC_ARCHITECTURE.md` ;
|
|
- `docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md` ;
|
|
- `crates/apps/game-snake-poc-tauri/README.md` ;
|
|
- `crates/apps/game-snake-poc-tauri/USAGE.md` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/main.html` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/css/main.css` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/ts/main.ts` ;
|
|
- `crates/apps/game-snake-poc-tauri/package.json` ;
|
|
- `crates/apps/game-snake-poc-tauri/vite.config.ts` ;
|
|
- `scripts/audit_distribution_layout.py`.
|
|
|
|
## Fichiers ajoutés
|
|
|
|
- `crates/apps/game-snake-poc-tauri/frontend/ts/assets.ts` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/ts/game.ts` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/ts/input.ts` ;
|
|
- `crates/apps/game-snake-poc-tauri/frontend/ts/provenance.ts` ;
|
|
- `history/0.3.1/0-pre.2.fix.3.md` ;
|
|
- `deltas/0.3.1/0-pre.3.md`.
|
|
|
|
## Gate utilisateur
|
|
|
|
Conserver JDK 17 pour les commandes Tauri Android :
|
|
|
|
```bash
|
|
export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64
|
|
"$JAVA_HOME/bin/java" -version
|
|
```
|
|
|
|
Le package Tauri possède une nouvelle dépendance frontend ; mettre à jour ses dépendances sans lancer manuellement son build :
|
|
|
|
```bash
|
|
(cd crates/apps/game-snake-poc-tauri && npm install)
|
|
```
|
|
|
|
Puis exécuter :
|
|
|
|
```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
|
|
```
|
|
|
|
Le smoke frontend reste possédé par Tauri :
|
|
|
|
```bash
|
|
(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev)
|
|
```
|
|
|
|
Ne pas exécuter `npm run dev` ou `npm run build` manuellement.
|
|
|
|
## Critère d'acceptation
|
|
|
|
Sur l'AVD Android :
|
|
|
|
- le Canvas Snake est visible avec un ratio `3 / 5` ;
|
|
- le Snake avance automatiquement ;
|
|
- score et longueur sont visibles ;
|
|
- les quatre boutons directionnels répondent au pointer/tactile ;
|
|
- le clavier fonctionne lorsqu'il est disponible ;
|
|
- `Assets` affiche `snake / engine-v1` ;
|
|
- la provenance est `android / tauri-webview / wasm / <device> / <input>` et évolue après une entrée ;
|
|
- aucune règle gameplay n'est dupliquée dans TypeScript ;
|
|
- aucun fichier sous `gen/android` n'est modifié par le projet.
|
|
|
|
Le background/foreground, la reprise sans catch-up, la rotation consolidée et Back restent les objectifs explicites de `0-pre.4`.
|