0.1.0-1-alpha.2-fix.2

This commit is contained in:
2026-09-17 00:25:37 +02:00
parent f8b93050d8
commit 37a00b3c2b
35 changed files with 620 additions and 181 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/000-README.md -->
<!-- version: 14 -->
<!-- version: 15 -->
# Documentation games.sasedev

View File

@@ -1,5 +1,5 @@
<!-- file: docs/architecture/001-WORKSPACE_ARCHITECTURE.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Architecture du workspace
@@ -21,13 +21,12 @@ games.sasedev/
│ └── apps/
│ ├── game-reflex-poc-desktop/
│ ├── game-snake-poc-desktop/
── game-reflex-poc-tauri/
── game-reflex-poc-tauri/
│ └── game-reflex-poc-wasm/
├── assets/
│ ├── common/
│ ├── game-reflex-poc/
│ └── game-snake-poc/
├── Tauri/
│ └── game-reflex-poc/
├── Android/
│ ├── common/
│ ├── game-reflex-poc/
@@ -80,3 +79,5 @@ La variante Tauri est distincte du runner SDL3 natif.
- un binaire natif Tauri qui héberge la WebView locale.
Le frontend statique sous `Tauri/game-reflex-poc/frontend/` pilote un Canvas et appelle l'adaptateur WASM. Les règles Reflex restent exclusivement dans `game-reflex-poc`.
La crate Tauri suit le modèle des apps Desk KSP : façade `lib.rs`, pont `tauri.rs`, modules propriétaires séparés et frontend Vite/TypeScript local à la crate.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/development/008-WASM_TAURI_POC.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# POC WebAssembly embarqué dans Tauri
@@ -111,3 +111,37 @@ crates/apps/game-reflex-poc-tauri/icons/icon.png
```
Il s'agit d'une icône minimale de développement ; l'identité graphique définitive viendra plus tard.
## Réorganisation fix.2
La crate Tauri et la crate WASM sont désormais séparées.
```text
crates/apps/game-reflex-poc-tauri/
├── src/lib.rs
├── src/tauri.rs
├── src/runtime.rs
├── src/main.rs
├── frontend/
├── package.json
├── tsconfig.json
├── vite.config.ts
└── tauri.conf.json
crates/apps/game-reflex-poc-wasm/
├── src/lib.rs
└── src/runtime.rs
```
`lib.rs` joue le rôle de façade. `tauri.rs` contient le pont Web/Rust et l'assemblage Tauri. Les fonctions métier/runtime sont portées par leurs modules puis appelées par les commandes Tauri.
Le frontend utilise Vite + TypeScript. Le build WASM reste séparé et produit les bindings `wasm-bindgen` dans `frontend/wasm/`.
Le logging est unifié avec `tracing` :
- `tracing` côté Rust ;
- `tauri-plugin-tracing` côté Tauri ;
- `@fltsci/tauri-plugin-tracing` côté TypeScript ;
- capability `tracing:default`.
Les événements frontend utiles sont donc remontés dans le même système de traces que le backend Rust.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/FILE_CONTRACTS.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Contrats des fichiers principaux
@@ -27,6 +27,8 @@
## Tauri
- `Tauri/<game>/frontend/` contient le frontend Web statique versionné d'une variante Tauri.
- `crates/apps/<game>-tauri/frontend/` contient le frontend Vite/TypeScript versionné.
- `crates/apps/<game>-tauri/src/lib.rs` est la façade Rust de l'app Tauri.
- `crates/apps/<game>-tauri/src/tauri.rs` assemble Tauri et porte le pont Web/Rust.
- `crates/apps/<game>-wasm/` contient l'adaptation WebAssembly distincte.
- Les bindings JavaScript et modules `.wasm` générés restent ignorés par Git.
- Le backend Rust Tauri reste sous `crates/apps/`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/RULES_COMMANDS.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Règles d'exécution des commandes
@@ -53,10 +53,12 @@
- **CMD-WEB-001** — Aucun gestionnaire de paquets JavaScript ni build Web n'est exécuté tant qu'un frontend Web réel n'a pas été introduit dans le dépôt.
- **CMD-WEB-002** — Lorsqu'une cible Web existe, ses commandes de build et test sont documentées avant d'être ajoutées aux gates.
- **CMD-WEB-003** — Le POC Tauri/WASM utilise `scripts/build_reflex_tauri_wasm.py`; aucun gestionnaire de paquets JavaScript ni serveur Web externe n'est requis pour cette variante.
- **CMD-WEB-003** — Le POC Tauri/WASM utilise `scripts/build_reflex_tauri_wasm.py` pour WASM et Vite/TypeScript pour le frontend local ; aucun site distant n'est requis.
- **CMD-WEB-004** — Les fichiers produits par `wasm-bindgen` sont générés localement et ne sont pas commités.
## Git et fichiers générés
- **CMD-GIT-001** — Les commandes Git destructives (`reset --hard`, nettoyage forcé, réécriture non demandée) ne sont jamais utilisées pour remettre artificiellement le workspace en état.
- **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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/RULES_PROJECT.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Règles spécifiques games.sasedev
@@ -49,7 +49,7 @@
- **GAME-PLATFORM-004** — Ads et Billing sont des capacités optionnelles ; le gameplay reste fonctionnel lorsqu'elles sont disponibles, désactivées ou non supportées.
- **GAME-PLATFORM-005** — Un backend de monétisation est spécifique à sa plateforme et à sa distribution ; une intégration Android n'est pas réutilisée implicitement sur Web ou Desktop.
- **GAME-PLATFORM-006** — Le runner Desktop natif SDL3 est la forme Desktop par défaut. Une variante Tauri peut coexister uniquement lorsqu'un besoin explicite le justifie et consomme la même crate lib de jeu.
- **GAME-PLATFORM-007** — Une variante Tauri conserve son backend Rust sous `crates/apps/`; son frontend Web statique réside sous `Tauri/<game>/` et ne duplique pas le gameplay Rust.
- **GAME-PLATFORM-007** — Une variante Tauri conserve son backend Rust sous `crates/apps/`; son frontend Vite/TypeScript réside dans la même crate sous `frontend/` et ne duplique pas le gameplay Rust.
- **GAME-PLATFORM-008** — Le gameplay compilé en WebAssembly est adapté par une frontière dédiée ; le code JavaScript orchestre la WebView, les événements et le rendu Canvas mais ne réimplémente pas les règles du jeu.
## POC
@@ -63,3 +63,7 @@
- **GAME-TRACE-002** — `tracing-subscriber` compose les subscribers applicatifs et de test ; une librairie métier ne configure pas silencieusement le subscriber global.
- **GAME-TRACE-003** — `tracing-appender` est utilisé lorsque lécriture non bloquante ou les fichiers de logs deviennent nécessaires ; le guard associé reste vivant pendant toute la durée utile.
- **GAME-TRACE-004** — La configuration de logging commune réside dans une crate transverse et ne doit pas être dupliquée par jeu.
- **GAME-PLATFORM-009** — Une adaptation WebAssembly réutilisable est une crate dédiée distincte de la crate Tauri.
- **GAME-PLATFORM-010** — Dans une app Tauri, `lib.rs` reste une façade/reexport ; `tauri.rs` assemble Tauri et expose les commandes qui délèguent aux modules propriétaires.
- **GAME-PLATFORM-011** — Les traces frontend Tauri passent par `@fltsci/tauri-plugin-tracing` vers `tauri-plugin-tracing`/`tracing`; les `console.*` applicatifs directs sont interdits hors fallback interne.