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

2.2 KiB

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 :

tsc && vite build

Erreur :

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 :

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 :

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

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

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.