0.1.0-2-beta.1.fix.2

This commit is contained in:
2026-09-17 12:55:03 +02:00
parent c2c27b7d90
commit a278eb7109
10 changed files with 165 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
// file: Android/game-reflex-poc/build.gradle // file: Android/game-reflex-poc/build.gradle
// version: 18 // version: 19
plugins { plugins {
id 'com.android.application' id 'com.android.application'
@@ -18,7 +18,7 @@ android {
minSdk 21 minSdk 21
targetSdk 36 targetSdk 36
versionCode 1 versionCode 1
versionName '0.1.0-2-beta.1.fix.1' versionName '0.1.0-2-beta.1.fix.2'
} }
compileOptions { compileOptions {

View File

@@ -1,5 +1,5 @@
// file: Android/game-snake-poc/build.gradle // file: Android/game-snake-poc/build.gradle
// version: 18 // version: 19
plugins { plugins {
id 'com.android.application' id 'com.android.application'
@@ -18,7 +18,7 @@ android {
minSdk 21 minSdk 21
targetSdk 36 targetSdk 36
versionCode 1 versionCode 1
versionName '0.1.0-2-beta.1.fix.1' versionName '0.1.0-2-beta.1.fix.2'
} }
compileOptions { compileOptions {

View File

@@ -19,7 +19,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.1.0-2-beta.1.fix.1" version = "0.1.0-2-beta.1.fix.2"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
repository = "https://git.sasedev.com/Sasedev/games" repository = "https://git.sasedev.com/Sasedev/games"

View File

@@ -1,7 +1,7 @@
{ {
"name": "game-reflex-poc-tauri", "name": "game-reflex-poc-tauri",
"private": true, "private": true,
"version": "0.1.0-2-beta.1.fix.1", "version": "0.1.0-2-beta.1.fix.2",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -1,7 +1,7 @@
{ {
"$schema": "https://schema.tauri.app/config/2", "$schema": "https://schema.tauri.app/config/2",
"productName": "Reflex POC Tauri", "productName": "Reflex POC Tauri",
"version": "0.1.0-2-beta.1.fix.1", "version": "0.1.0-2-beta.1.fix.2",
"identifier": "com.sasedev.games.reflex.tauri", "identifier": "com.sasedev.games.reflex.tauri",
"build": { "build": {
"beforeDevCommand": { "beforeDevCommand": {
@@ -13,7 +13,7 @@
"script": "python3 ../../../scripts/build_reflex_tauri_wasm.py && npm run build", "script": "python3 ../../../scripts/build_reflex_tauri_wasm.py && npm run build",
"cwd": "." "cwd": "."
}, },
"frontendDist": "../../../builds/sasedev-games/game-reflex-poc-tauri/dist" "frontendDist": "../../../../builds/sasedev-games/game-reflex-poc-tauri/dist"
}, },
"app": { "app": {
"windows": [ "windows": [

View File

@@ -1,5 +1,5 @@
// file: crates/apps/game-reflex-poc-tauri/vite.config.ts // file: crates/apps/game-reflex-poc-tauri/vite.config.ts
// version: 1 // version: 2
import { fileURLToPath } from "node:url"; import { fileURLToPath } from "node:url";
import { resolve } from "node:path"; import { resolve } from "node:path";
@@ -7,10 +7,13 @@ import { defineConfig, normalizePath } from "vite";
const appRoot = fileURLToPath(new URL(".", import.meta.url)); const appRoot = fileURLToPath(new URL(".", import.meta.url));
const frontendRoot = normalizePath(resolve(appRoot, "frontend")); const frontendRoot = normalizePath(resolve(appRoot, "frontend"));
const frontendDist = normalizePath(resolve(appRoot, "../../../builds/sasedev-games/game-reflex-poc-tauri/dist")); const externalBuildRoot = normalizePath(resolve(appRoot, "../../../../builds/sasedev-games/game-reflex-poc-tauri"));
const frontendDist = normalizePath(resolve(externalBuildRoot, "dist"));
const viteCacheDir = normalizePath(resolve(externalBuildRoot, "vite-cache"));
const devHost = process.env.TAURI_DEV_HOST; const devHost = process.env.TAURI_DEV_HOST;
export default defineConfig({ export default defineConfig({
cacheDir: viteCacheDir,
clearScreen: false, clearScreen: false,
root: frontendRoot, root: frontendRoot,
publicDir: false, publicDir: false,

View File

@@ -0,0 +1,111 @@
<!-- file: deltas/0.1.0/2-beta.1.fix.2.md -->
<!-- version: 1 -->
# Delta 0.1.0-2-beta.1.fix.2
## Base
Base déclarée : `0.1.0-2-beta.1.fix.1`.
Le packaging Tauri de `fix.1` passe, mais le chemin de sortie Vite pointe encore dans la racine du dépôt.
## Défaut
Depuis :
```text
crates/apps/game-reflex-poc-tauri
```
le chemin :
```text
../../../builds/sasedev-games/game-reflex-poc-tauri/dist
```
résout vers :
```text
sasedev-games/builds/sasedev-games/game-reflex-poc-tauri/dist
```
et fait apparaître un répertoire généré `builds/` dans le dépôt.
## Correctif
Vite utilise désormais :
```text
../../../../builds/sasedev-games/game-reflex-poc-tauri
```
avec :
```text
dist/
vite-cache/
```
`tauri.conf.json` utilise le même `dist/` externe.
Cette règle est cohérente avec `.cargo/config.toml`, qui place déjà Cargo sous :
```text
../builds/sasedev-games/target
```
## Audit
`scripts/audit_distribution_layout.py` rejette désormais explicitement :
```text
./builds
```
à la racine du dépôt.
## Nettoyage local unique
Si l'ancien répertoire généré existe encore :
```bash
rm -rf builds
```
Cette suppression vise uniquement l'ancien artefact de build créé sous la racine du dépôt.
## Validation
```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
```
Puis :
```bash
cd crates/apps/game-reflex-poc-tauri
cargo tauri build
cd ../../..
```
Attendu côté Vite : le chemin affiché doit viser le répertoire frère `../builds/sasedev-games/game-reflex-poc-tauri/dist`, jamais `sasedev-games/builds/...`.
## Vérification
```bash
test ! -e builds
test -d ../builds/sasedev-games/game-reflex-poc-tauri/dist
test -d ../builds/sasedev-games/target
```
## Transition
Si ces gates passent, reprendre la matrice beta restante sur `0.1.0-2-beta.1.fix.2`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/development/008-WASM_TAURI_POC.md --> <!-- file: docs/development/008-WASM_TAURI_POC.md -->
<!-- version: 4 --> <!-- version: 5 -->
# POC WebAssembly embarqué dans Tauri # POC WebAssembly embarqué dans Tauri
@@ -169,3 +169,25 @@ keydown Escape
``` ```
Une future politique de pause/confirmation pourra retourner `Continue` sans modifier le bridge Tauri. Une future politique de pause/confirmation pourra retourner `Continue` sans modifier le bridge Tauri.
## Répertoire de build externe
Comme Cargo via `.cargo/config.toml`, Tauri/Vite ne doivent créer aucun répertoire de build dans `sasedev-games`.
Depuis `crates/apps/game-reflex-poc-tauri`, le root de build Vite résout désormais :
```text
../../../../builds/sasedev-games/game-reflex-poc-tauri/
```
soit, depuis la racine du dépôt :
```text
../builds/sasedev-games/game-reflex-poc-tauri/
├── dist/
└── vite-cache/
```
`tauri.conf.json` référence le même `dist/` externe.
La racine du dépôt ne doit jamais contenir `builds/`.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/RULES_PROJECT.md --> <!-- file: docs/rules/RULES_PROJECT.md -->
<!-- version: 7 --> <!-- version: 8 -->
# Règles spécifiques games.sasedev # Règles spécifiques games.sasedev
@@ -70,3 +70,5 @@
- **GAME-PLATFORM-012** — Le plugin tracing Tauri ne remplace pas l'initialisation du subscriber Rust ; une app Tauri initialise le runtime de logging partagé avant son premier événement `tracing`. - **GAME-PLATFORM-012** — Le plugin tracing Tauri ne remplace pas l'initialisation du subscriber Rust ; une app Tauri initialise le runtime de logging partagé avant son premier événement `tracing`.
- **GAME-PLATFORM-013** — Les demandes de sortie Tauri sont évaluées par la politique `EngineGame::quit_requested` avant toute fermeture native. - **GAME-PLATFORM-013** — Les demandes de sortie Tauri sont évaluées par la politique `EngineGame::quit_requested` avant toute fermeture native.
- **GAME-BUILD-001** — Les artefacts générés Cargo, Tauri, Vite et caches frontend sont placés hors de la racine du dépôt, sous `../builds/sasedev-games/`; un répertoire racine `builds/` dans le dépôt est interdit.

View File

@@ -11,6 +11,11 @@ import pathlib
import sys import sys
FORBIDDEN_PATHS = (
"builds",
)
REQUIRED_PATHS = ( REQUIRED_PATHS = (
"crates/apps/game-reflex-poc-desktop/Cargo.toml", "crates/apps/game-reflex-poc-desktop/Cargo.toml",
"crates/apps/game-snake-poc-desktop/Cargo.toml", "crates/apps/game-snake-poc-desktop/Cargo.toml",
@@ -42,15 +47,24 @@ def main() -> int:
arguments = parser.parse_args() arguments = parser.parse_args()
root = pathlib.Path(arguments.root).resolve() root = pathlib.Path(arguments.root).resolve()
missing: list[str] = [] missing: list[str] = []
forbidden_present: list[str] = []
for relative in REQUIRED_PATHS: for relative in REQUIRED_PATHS:
if not (root / relative).exists(): if not (root / relative).exists():
missing.append(relative) missing.append(relative)
for relative in FORBIDDEN_PATHS:
if (root / relative).exists():
forbidden_present.append(relative)
if missing: if missing:
for relative in missing: for relative in missing:
print(f"DIST-LAYOUT-001: missing required path: {relative}", file=sys.stderr) print(f"DIST-LAYOUT-001: missing required path: {relative}", file=sys.stderr)
print(f"Distribution layout audit: {len(missing)} violation(s)", file=sys.stderr) print(f"Distribution layout audit: {len(missing)} violation(s)", file=sys.stderr)
return 1 return 1
print(f"Distribution layout audit: clean ({len(REQUIRED_PATHS)} required path(s))") if forbidden_present:
for relative in forbidden_present:
print(f"DIST-LAYOUT-002: generated path must stay outside repository: {relative}", file=sys.stderr)
print(f"Distribution layout audit: {len(forbidden_present)} violation(s)", file=sys.stderr)
return 1
print(f"Distribution layout audit: clean ({len(REQUIRED_PATHS)} required path(s), {len(FORBIDDEN_PATHS)} forbidden path(s) absent)")
return 0 return 0