Files
games/deltas/0.3.1/0-pre.4.fix.1.md

4.6 KiB

Delta 0.3.1-0-pre.4.fix.1

Base

Base déclarée : 0.3.1-0-pre.4.

Objet

Corriger le chemin de développement Tauri Android sur appareil réel après la gate ARM64 et formaliser la limite observée lors du teardown WebView/Activity, sans introduire de fork local de Tauri/Wry ni modifier le projet Android généré.

Résultats de la gate 0-pre.4

La gate workspace et le smoke AVD x86_64 sont propres : audits, formatage, cargo check, Clippy strict et les cinq tests game-snake-poc-wasm passent. Le lifecycle journalise correctement runtime paused/resumed et visibility hidden/visible.

Le smoke supplémentaire sur appareil Android ARM64 réel a confirmé :

  • ABI Android arm64-v8a et cible Rust aarch64-linux-android ;
  • compilation du cdylib ARM64 ;
  • assemblage, streamed install et démarrage de MainActivity ;
  • chargement des assets ;
  • initialisation WASM ;
  • Canvas jouable et touch observé ;
  • provenance android / tauri-webview / wasm / phone / touch ;
  • pause lifecycle avant sortie.

Deux écarts ont été révélés.

Premièrement, le mode dev sur téléphone physique remplace automatiquement localhost par une adresse LAN. Le tunnel USB ADB reverse tcp:1436 tcp:1436 associé à cargo tauri android dev --host 127.0.0.1 rend le chargement HTTP reproductible sans dépendre du LAN.

Deuxièmement, le frontend utilisait encore un WebSocket HMR séparé sur le port 1437. Le HTML/WASM se chargeait, mais Vite journalisait failed to connect to websocket. Ce défaut appartient au projet et est corrigé par ce fix : HTTP et WebSocket Vite partagent désormais le port 1436, qui est le port tunnelé par ADB.

Enfin, le Back système sur le Galaxy S9+ de validation a provoqué pendant le teardown natif :

FORTIFY: pthread_mutex_lock called on a destroyed mutex

L'abort arrive après runtime paused / visibility hidden et avant pagehide / runtime disposed. La gate résout Tauri 2.11.5 avec Wry 0.55.1. Des versions Wry postérieures ont modifié le lifecycle Android et la synchronisation des request handlers, mais le projet ne force pas une version Wry incompatible derrière la pile Tauri stable ni ne patch gen/android. Ce crash reste une limite externe du POC à retester avec l'APK autonome de la beta.

Changements

  • version workspace : 0.3.1-0-pre.4.fix.1 ;
  • WebSocket Vite/HMR fixé sur le même host de développement et le même port 1436 que HTTP ;
  • suppression du port HMR séparé 1437 ;
  • procédure de smoke appareil réel documentée avec tunnel ADB USB et --host 127.0.0.1 ;
  • correspondance ABI arm64-v8a / aarch64-linux-android documentée ;
  • crash Back/teardown réel enregistré comme limite du POC et non comme capacité validée ;
  • audit de distribution renforcé pour refuser le retour d'un second port WebSocket non tunnelé.

Invariants

  • aucun fichier sous gen/android n'est modifié ou livré ;
  • aucun handler onBackButtonPress n'est ajouté pour masquer le crash de teardown ;
  • aucune surcharge manuelle de Wry/Tauri n'est introduite ;
  • aucun gameplay ne quitte Rust/WASM ;
  • SDL3 natif reste la direction Android de production ;
  • l'APK autonome de 2-beta.1 doit distinguer un défaut du mode dev d'un défaut général de teardown Tauri/Wry/WebView.

Gate utilisateur

Gate statique et Rust :

export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64

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 fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p game-snake-poc-wasm --all-targets --all-features

Smoke appareil réel, avec le <serial> fourni par adb devices -l :

adb -s <serial> reverse --remove-all
adb -s <serial> reverse tcp:1436 tcp:1436
adb -s <serial> reverse --list

(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev --host 127.0.0.1)

Vérifier : Canvas/inputs/assets/WASM/provenance/lifecycle et absence de l'erreur Vite failed to connect to websocket. Tester Back une fois et conserver le résultat ; si l'abort natif documenté reste reproductible, il n'est pas contourné dans ce fix et sera retesté sur l'APK autonome en beta.

Suite prévue

Aucune extraction 0-pre.5 n'est justifiée. Après validation de ce fix, passer directement à 0.3.1-2-beta.1 pour la gate large, le build WASM release, le packaging APK et les smokes package AVD + ARM64 réel.