0.3.0-2-beta.1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 67
|
# version: 68
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
@@ -20,7 +20,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.3.0-0-pre.5.fix.1"
|
version = "0.3.0-2-beta.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: 36 -->
|
<!-- version: 37 -->
|
||||||
|
|
||||||
# games.sasedev
|
# games.sasedev
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ Workspace expérimental puis productif pour des jeux multiplateformes principale
|
|||||||
|
|
||||||
Version stable de référence : `0.2.0`.
|
Version stable de référence : `0.2.0`.
|
||||||
|
|
||||||
Version de développement : `0.3.0-0-pre.5.fix.1`.
|
Version de développement : `0.3.0-2-beta.1`.
|
||||||
|
|
||||||
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,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "game-snake-poc-web",
|
"name": "game-snake-poc-web",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.3.0",
|
"version": "0.3.0-2-beta.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
64
deltas/0.3.0/2-beta.1.md
Normal file
64
deltas/0.3.0/2-beta.1.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<!-- file: deltas/0.3.0/2-beta.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta 0.3.0-2-beta.1
|
||||||
|
|
||||||
|
## Objectif
|
||||||
|
|
||||||
|
Entrer en beta avec un scope `0.3.0` feature-complete et exécuter une validation large du POC Snake Web direct et de son témoin Desktop SDL3, sans introduire de nouveau comportement.
|
||||||
|
|
||||||
|
## Baseline acceptée
|
||||||
|
|
||||||
|
`0.3.0-0-pre.5.fix.1` est validée : audits, check/Clippy, tests plateforme/WASM, build WASM, build Vite, assets/provenance/inputs dans le navigateur et smoke Desktop SDL3 passent. Aucun défaut structurel ne justifie `0-pre.6`, qui est donc omise.
|
||||||
|
|
||||||
|
## Changements
|
||||||
|
|
||||||
|
- passage de la version workspace à `0.3.0-2-beta.1` ;
|
||||||
|
- passage du package frontend Snake Web au jalon `0.3.0-2-beta.1` ;
|
||||||
|
- ajout de l'historique validé `0-pre.5.fix.1` ;
|
||||||
|
- réconciliation du plan `0.3.0` avec l'omission de `0-pre.6` ;
|
||||||
|
- documentation de la gate beta release Web/Desktop.
|
||||||
|
|
||||||
|
Aucun gameplay, bridge WASM, runtime SDL3, shell HTML/TypeScript ou contrat d'asset n'est modifié par cette tranche.
|
||||||
|
|
||||||
|
## Validation attendue
|
||||||
|
|
||||||
|
Depuis la racine :
|
||||||
|
|
||||||
|
```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 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
|
||||||
|
```
|
||||||
|
|
||||||
|
Build et smoke Desktop Snake release :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build -p game-snake-poc-desktop --release
|
||||||
|
../builds/sasedev-games/target/release/game-snake-poc-desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
Build WASM release et frontend production :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build -p game-snake-poc-wasm --release --target wasm32-unknown-unknown
|
||||||
|
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_snake_poc_wasm.wasm \
|
||||||
|
--target web \
|
||||||
|
--out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \
|
||||||
|
--out-name game_snake_poc_wasm
|
||||||
|
|
||||||
|
(cd Web/game-snake-poc && npm install && npm run build && npm run preview)
|
||||||
|
```
|
||||||
|
|
||||||
|
Ouvrir `http://127.0.0.1:4174/main.html` puis vérifier : jeu visible, clavier/pointer, ratio Canvas, SimpleBar, assets `snake / engine-v1`, provenance cohérente, resize et pause/reprise sans rattrapage massif après masquage d'onglet.
|
||||||
|
|
||||||
|
## Après validation
|
||||||
|
|
||||||
|
Si cette gate beta est propre, la tranche suivante est `0.3.0-2-beta.2` pour la consolidation documentaire et la transmission : plan, documentation durable, `CHANGELOG.md`, `ROADMAP.md`, history et prompt de la version/session suivante.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md -->
|
<!-- file: docs/plans/001-V0_3_0_WEB_SNAKE_POC_PLAN.md -->
|
||||||
<!-- version: 11 -->
|
<!-- version: 12 -->
|
||||||
|
|
||||||
# Plan v0.3.0 — baseline Snake et premier POC Web direct
|
# Plan v0.3.0 — baseline Snake et premier POC Web direct
|
||||||
|
|
||||||
@@ -91,13 +91,17 @@ Gate : audits statiques, `cargo check --workspace`, Clippy workspace strict, tes
|
|||||||
|
|
||||||
Suivi `0-pre.5.fix.1` : la validation de `0-pre.5` confirme les gates Rust/WASM et le build Vite production, mais le smoke `vite dev` reste bloqué sur le chargement des assets. Les targets `vite-plugin-static-copy` utilisent des sources absolues sans `rename.stripBase`, ce qui ne garantit pas les routes runtime canoniques. Le fix impose `stripBase: true` aux deux targets afin que dev et build exposent exactement `/common/data/runtime.json` et `/game/data/game.json`.
|
Suivi `0-pre.5.fix.1` : la validation de `0-pre.5` confirme les gates Rust/WASM et le build Vite production, mais le smoke `vite dev` reste bloqué sur le chargement des assets. Les targets `vite-plugin-static-copy` utilisent des sources absolues sans `rename.stripBase`, ce qui ne garantit pas les routes runtime canoniques. Le fix impose `stripBase: true` aux deux targets afin que dev et build exposent exactement `/common/data/runtime.json` et `/game/data/game.json`.
|
||||||
|
|
||||||
|
Validation `0-pre.5.fix.1` : les audits, `cargo check`, Clippy workspace strict, les tests plateforme/WASM, le build WASM, `wasm-bindgen`, le build Vite et le smoke navigateur passent. Les assets affichent `snake / engine-v1`, la provenance observée est `web / browser / wasm / desktop / keyboard-mouse`, les contrôles clavier/souris fonctionnent et le runner Desktop SDL3 démarre puis s'arrête proprement après 411 frames. Aucun défaut structurel supplémentaire n'est identifié.
|
||||||
|
|
||||||
### `0-pre.6` — correction/extraction seulement si prouvée
|
### `0-pre.6` — correction/extraction seulement si prouvée
|
||||||
|
|
||||||
Tranche conditionnelle. Elle n'existe que si les POC précédents révèlent une duplication réelle, une frontière mal placée ou un défaut nécessitant une correction structurante avant stabilisation. Sinon elle est omise.
|
Tranche conditionnelle. Elle n'existe que si les POC précédents révèlent une duplication réelle, une frontière mal placée ou un défaut nécessitant une correction structurante avant stabilisation. Sinon elle est omise.
|
||||||
|
|
||||||
|
Décision après `0-pre.5.fix.1` : aucun besoin d'extraction/correction structurante n'est observé ; `0-pre.6` est omise et la version entre directement en beta.
|
||||||
|
|
||||||
### `2-beta.1` — validation large
|
### `2-beta.1` — validation large
|
||||||
|
|
||||||
Scope feature-complete. Exécuter les gates workspace applicables, les tests ciblés et les validations Web/Desktop prévues. Aucun nouveau scope.
|
Scope feature-complete. La tranche ne crée aucun nouveau comportement : elle bascule la version workspace et le package Web au jalon `0.3.0-2-beta.1`, enregistre la validation de `0-pre.5.fix.1` et exécute la gate large de frontière de phase. Celle-ci comprend audits, formatage/check/Clippy, tests workspace complets, build + smoke Desktop Snake en release, build WASM Snake en release, `wasm-bindgen`, build Vite production et smoke du `dist` via `npm run preview`. Aucun nouveau scope.
|
||||||
|
|
||||||
### `2-beta.2` — consolidation documentaire et transmission
|
### `2-beta.2` — consolidation documentaire et transmission
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/001-VALIDATION_GATES.md -->
|
<!-- file: docs/validation/001-VALIDATION_GATES.md -->
|
||||||
<!-- version: 7 -->
|
<!-- version: 8 -->
|
||||||
|
|
||||||
# Gates de validation
|
# Gates de validation
|
||||||
|
|
||||||
@@ -74,3 +74,31 @@ npm run build
|
|||||||
Le smoke direct utilise ensuite `npm run dev` et `http://127.0.0.1:1434/main.html`. Pour le POC Snake feature-complete, vérifier aussi : assets `common` + `game` chargés avant le statut `Prêt`, provenance `Web/Wasm/Browser` visible et mise à jour par l'input, pause sans rattrapage lors d'un masquage d'onglet, reprise propre, resize sans tick artificiel, SimpleBar, clavier et contrôles pointer/tactiles.
|
Le smoke direct utilise ensuite `npm run dev` et `http://127.0.0.1:1434/main.html`. Pour le POC Snake feature-complete, vérifier aussi : assets `common` + `game` chargés avant le statut `Prêt`, provenance `Web/Wasm/Browser` visible et mise à jour par l'input, pause sans rattrapage lors d'un masquage d'onglet, reprise propre, resize sans tick artificiel, SimpleBar, clavier et contrôles pointer/tactiles.
|
||||||
|
|
||||||
Lorsque `0-pre.5` touche la frontière plateforme du bridge WASM, exécuter également `cargo test -p engine-v1-platform-api`, `cargo test -p game-snake-poc-wasm`, puis un smoke `cargo run -p game-snake-poc-desktop` pour confirmer la non-régression SDL3. Les frontends Tauri restent pilotés par leurs hooks Tauri et ne reprennent pas cette gate manuelle.
|
Lorsque `0-pre.5` touche la frontière plateforme du bridge WASM, exécuter également `cargo test -p engine-v1-platform-api`, `cargo test -p game-snake-poc-wasm`, puis un smoke `cargo run -p game-snake-poc-desktop` pour confirmer la non-régression SDL3. Les frontends Tauri restent pilotés par leurs hooks Tauri et ne reprennent pas cette gate manuelle.
|
||||||
|
|
||||||
|
## Gate beta du POC Snake Web
|
||||||
|
|
||||||
|
À l’entrée en `2-beta.1`, le scope `0.3.0` est feature-complete. La gate de frontière de phase ajoute aux audits/check/Clippy la suite Cargo workspace complète :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo test --workspace --all-targets --all-features
|
||||||
|
```
|
||||||
|
|
||||||
|
Le témoin Desktop Snake est construit et fumé en release :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build -p game-snake-poc-desktop --release
|
||||||
|
../builds/sasedev-games/target/release/game-snake-poc-desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
Le host Web beta utilise également un module WASM release avant le build Vite :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build -p game-snake-poc-wasm --release --target wasm32-unknown-unknown
|
||||||
|
wasm-bindgen ../builds/sasedev-games/target/wasm32-unknown-unknown/release/game_snake_poc_wasm.wasm \
|
||||||
|
--target web \
|
||||||
|
--out-dir ../builds/sasedev-games/game-snake-poc-web/wasm \
|
||||||
|
--out-name game_snake_poc_wasm
|
||||||
|
(cd Web/game-snake-poc && npm install && npm run build && npm run preview)
|
||||||
|
```
|
||||||
|
|
||||||
|
Le smoke production ouvre `http://127.0.0.1:4174/main.html` et vérifie les mêmes contrats fonctionnels que le smoke `vite dev` : Canvas, inputs, SimpleBar, assets, provenance, lifecycle et resize. Le smoke `vite dev` déjà validé reste utile après un correctif touchant le plugin de dev, mais n’est pas requis à chaque beta si aucun chemin dev n’a changé.
|
||||||
|
|||||||
59
history/0.3.0/0-pre.5.fix.1.md
Normal file
59
history/0.3.0/0-pre.5.fix.1.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<!-- file: history/0.3.0/0-pre.5.fix.1.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Historique 0.3.0-0-pre.5.fix.1
|
||||||
|
|
||||||
|
## Statut
|
||||||
|
|
||||||
|
Intégration plateforme du POC Snake Web validée par l'utilisateur le 2026-09-20. Aucun défaut structurel supplémentaire n'est identifié ; `0-pre.6` conditionnelle est omise et la version peut entrer en `2-beta.1`.
|
||||||
|
|
||||||
|
## Validation utilisateur
|
||||||
|
|
||||||
|
Les gates suivantes ont passé sur `0.3.0-0-pre.5.fix.1` :
|
||||||
|
|
||||||
|
```text
|
||||||
|
General Rust rule audit: clean
|
||||||
|
Rust export completeness audit: 0 candidate(s)
|
||||||
|
games.sasedev workspace audit: clean
|
||||||
|
Markdown table audit: clean (5 table(s), 191 file(s))
|
||||||
|
Distribution layout audit: clean (31 required path(s), 1 forbidden path(s) absent)
|
||||||
|
cargo fmt --all -- --check: clean
|
||||||
|
cargo check --workspace: clean
|
||||||
|
cargo clippy --workspace --all-targets --all-features -- -D warnings: clean
|
||||||
|
cargo test -p engine-v1-platform-api --all-targets --all-features: 3 passed, 0 failed
|
||||||
|
cargo test -p game-snake-poc-wasm --all-targets --all-features: 4 passed, 0 failed
|
||||||
|
cargo build -p game-snake-poc-wasm --target wasm32-unknown-unknown: clean
|
||||||
|
wasm-bindgen --target web: clean
|
||||||
|
cargo tree -p game-snake-poc-wasm --edges normal: frontière attendue
|
||||||
|
npm install: 64 packages audités, 0 vulnérabilité
|
||||||
|
npm run build: clean, 30 modules transformés, 2 assets copiés
|
||||||
|
npm run dev: Vite démarré sur 127.0.0.1:1434
|
||||||
|
```
|
||||||
|
|
||||||
|
Le warning npm non bloquant relatif au script d'installation de `@parcel/watcher@2.6.0` reste présent.
|
||||||
|
|
||||||
|
## Smoke Web accepté
|
||||||
|
|
||||||
|
Le navigateur confirme :
|
||||||
|
|
||||||
|
```text
|
||||||
|
Provenance: web / browser / wasm / desktop / keyboard-mouse
|
||||||
|
Assets: snake / engine-v1
|
||||||
|
controls: clavier et contrôles souris fonctionnels
|
||||||
|
```
|
||||||
|
|
||||||
|
Le chargement des assets est donc réparé en dev et le bridge expose la provenance attendue. Les tests lifecycle/resize plus larges restent repris dans la gate beta afin de consolider le comportement feature-complete.
|
||||||
|
|
||||||
|
## Non-régression Desktop SDL3
|
||||||
|
|
||||||
|
Le smoke `cargo run -p game-snake-poc-desktop` passe :
|
||||||
|
|
||||||
|
```text
|
||||||
|
desktop SDL3 runner started game="snake"
|
||||||
|
SDL3 runtime started title=Snake POC width=405 height=720
|
||||||
|
SDL3 runtime stopped frames=411
|
||||||
|
```
|
||||||
|
|
||||||
|
## Suite
|
||||||
|
|
||||||
|
La tranche conditionnelle `0-pre.6` est omise. `2-beta.1` ouvre une validation large sans nouveau scope fonctionnel.
|
||||||
Reference in New Issue
Block a user