Files
games/deltas/0.1.0/2-beta.1.fix.1.md

94 lines
2.2 KiB
Markdown

<!-- file: deltas/0.1.0/2-beta.1.fix.1.md -->
<!-- version: 1 -->
# Delta 0.1.0-2-beta.1.fix.1
## Base
Base déclarée : `0.1.0-2-beta.1`, non validée.
## Échec observé
Les gates Rust, la suite workspace complète, le build WASM, les builds Desktop natifs et les builds Android passent.
Le packaging Tauri échoue dans `beforeBuildCommand` pendant :
```text
tsc && vite build
```
Erreur :
```text
frontend/ts/game.ts:62:30 - error TS2345:
Argument of type 'CanvasRenderingContext2D | null'
is not assignable to parameter of type 'CanvasRenderingContext2D'.
```
## Cause
TypeScript ne conserve pas le narrowing de `context` dans la closure `pointerdown`.
Le contrôle :
```text
if (context === null) { ... }
```
est correct à l'exécution, mais le compilateur strict ne considère pas la variable capturée comme définitivement non-null dans la closure.
## Correctif
Après le guard, le contexte est stabilisé dans une variable explicitement non-null :
```text
const drawingContext: CanvasRenderingContext2D = context;
```
Toutes les closures et tous les appels `render(...)` utilisent ensuite `drawingContext`.
Aucune logique gameplay, WASM, Tauri, tracing ou input n'est modifiée.
## 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
```
La suite workspace complète n'a pas besoin d'être rejouée pour ce fix TypeScript isolé si les gates ci-dessus restent propres.
## Packaging Tauri
```bash
cd crates/apps/game-reflex-poc-tauri
cargo tauri build
cd ../../..
```
Attendu :
- `tsc` propre ;
- `vite build` propre ;
- build Rust Tauri release propre ;
- génération de l'artefact Tauri.
## Android
Les builds x86_64 et ARM64 de `2-beta.1` ont déjà été validés.
Aucune logique Android n'est modifiée par ce fix.
## Transition
Si `cargo tauri build` passe et les smokes beta restent propres, `2-beta.1.fix.1` pourra être validée.
Tout nouvel échec imputable au projet reste dans `2-beta.1.fix.N`.