Add serve-web target and web launcher scripts in the ChromeOS archive (0.9.2)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Denis Defolie
2026-10-12 14:15:16 +02:00
parent 0ec31fefa5
commit f4c69e1397
9 changed files with 69 additions and 10 deletions
+1
View File
@@ -24,6 +24,7 @@ Le `Makefile` est le seul point d'entrée pour les opérations système. Tenir c
- `make export-linux` / `make export-windows` : exports dans `build/`
- `make screenshot SCENE=… OUT=… ARGS=…` : capture le rendu réel d'une scène dans une fenêtre (outil de développement, ouvre brièvement une fenêtre)
- `make export-android` / `make export-macos` / `make export-web` : APK Android (arm64 + x86_64, aussi pour ChromeOS), application macOS universelle (zip, signature ad hoc), version web
- `make serve-web` : exporte puis sert la version web en local (127.0.0.1) et ouvre le navigateur (`tools/serve_web.py`)
- `make package` : réexporte puis produit les archives distribuables (Linux, Windows, Android, macOS, ChromeOS ; licence + crédits + notice) et `SHA256SUMS` dans `dist/`
## Conventions de code
+4 -1
View File
@@ -8,7 +8,7 @@ GD_SOURCES := autoload scripts tests
.DEFAULT_GOAL := help
.PHONY: help setup import run lint format validate-data test check content-review generate-dictation-audio generate-sounds export-linux export-windows export-android export-macos export-web package screenshot
.PHONY: serve-web help setup import run lint format validate-data test check content-review generate-dictation-audio generate-sounds export-linux export-windows export-android export-macos export-web package screenshot
# Liste les commandes : toute cible suivie de « ## description » y figure.
help: ## Affiche cette aide
@@ -91,3 +91,6 @@ export-macos: import ## Exporte l'application macOS (zip) dans build/macos/
export-web: import ## Exporte la version Web (navigateur, ChromeOS) dans build/web/
mkdir -p build/web
$(GODOT_BIN) --headless --path . --export-release "Web" build/web/index.html
serve-web: export-web ## Exporte puis sert la version web en local et ouvre le navigateur
$(PYTHON) tools/serve_web.py build/web
+1
View File
@@ -30,6 +30,7 @@ make run # runs the game
| `make content-review` | regenerates `docs/review/content-review.md` (content validation document) |
| `make generate-dictation-audio` | generates the placeholder dictation audio |
| `make help` | lists the available commands |
| `make serve-web` | exports, then serves the web build locally and opens the browser |
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports into `build/` |
| `make package` | builds the distributable archives in `dist/` (single executable + license + credits) |
+1
View File
@@ -30,6 +30,7 @@ make run # lance le jeu
| `make content-review` | régénère `docs/review/content-review.md` (document de validation du contenu) |
| `make generate-dictation-audio` | génère l'audio provisoire des dictées |
| `make help` | liste les commandes disponibles |
| `make serve-web` | exporte puis sert la version web en local et ouvre le navigateur |
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports dans `build/` |
| `make package` | produit les archives distribuables dans `dist/` (exécutable unique + licence + crédits) |
+1
View File
@@ -82,3 +82,4 @@ Tout ce qui suit ne peut pas être vérifié sans écran (rendu, mise en page, a
- `make export-macos` : archive vérifiée (structure .app, signature ad hoc) ; **jamais lancée** (pas de Mac). Au premier lancement : clic droit > Ouvrir.
- `make export-web` : fichiers générés ; **jamais ouvert dans un navigateur**. Servir `build/web/` avec `python3 -m http.server`, ouvrir dans Chrome, vérifier son (le navigateur exige un premier clic), sauvegarde et plein écran.
- Touche Entrée : en dictée et en correction, Entrée valide ; une seconde pression sur Entrée pendant le retour ne doit pas compter une réponse de plus.
- Version web : `make serve-web` (ou `lancer-web.sh` / `lancer-web.bat` de l'archive ChromeOS) ; son confirmé à la main après un clic dans la page (0.9.1).
+4 -4
View File
@@ -71,8 +71,8 @@ gradle_build/use_gradle_build=false
package/unique_name="org.deunix.aventuriersdesmots"
package/name="Les Aventuriers des mots"
package/signed=true
version/code=901
version/name="0.9.1"
version/code=902
version/name="0.9.2"
architectures/armeabi-v7a=false
architectures/arm64-v8a=true
architectures/x86=false
@@ -107,8 +107,8 @@ script_export_mode=2
binary_format/architecture="universal"
application/bundle_identifier="org.deunix.aventuriersdesmots"
application/short_version="0.9.1"
application/version="0.9.1"
application/short_version="0.9.2"
application/version="0.9.2"
application/min_macos_version_x86_64="10.12"
application/min_macos_version_arm64="11.0"
codesign/codesign=1
+1 -1
View File
@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="Les Aventuriers des mots"
config/version="0.9.1"
config/version="0.9.2"
run/main_scene="res://scenes/boot/boot.tscn"
config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="res://icon.svg"
+14 -4
View File
@@ -84,13 +84,23 @@ stage "${CHROMEOS}" build/android/aventuriers_des_mots.apk \
"stockage privé de l'application, ou du navigateur pour la version web"
mkdir -p "dist/${CHROMEOS}/web"
cp build/web/* "dist/${CHROMEOS}/web/"
cp tools/serve_web.py "dist/${CHROMEOS}/lancer-web.py"
cat > "dist/${CHROMEOS}/lancer-web.sh" <<'LAUNCH'
#!/usr/bin/env bash
cd "$(dirname "$0")" && exec python3 lancer-web.py
LAUNCH
chmod +x "dist/${CHROMEOS}/lancer-web.sh"
printf '@echo off\r\ncd /d "%%~dp0"\r\npy lancer-web.py || python lancer-web.py\r\n' \
> "dist/${CHROMEOS}/lancer-web.bat"
cat > "dist/${CHROMEOS}/LISEZMOI-WEB.txt" <<WEB
Version web (navigateur, hors ligne une fois servie localement)
Un navigateur ne lit pas ces fichiers directement : ils doivent être servis
par un petit serveur HTTP. Depuis le dossier web/ :
python3 -m http.server 8080
puis ouvrir http://localhost:8080 dans Chrome.
Lancer : double-clic sur lancer-web.sh (Linux, macOS) ou lancer-web.bat
(Windows), ou en terminal : python3 lancer-web.py
Python 3 est nécessaire. Le navigateur s'ouvre sur le jeu ; cliquer une
fois dans la page pour activer le son. Ctrl+C dans le terminal arrête le
serveur.
La progression est conservée dans le stockage du navigateur : ne pas
effacer les données du site, et utiliser l'espace adulte pour exporter.
WEB
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env python3
"""Sert la version web du jeu en local et ouvre le navigateur.
Usage : serve_web.py [dossier] (par defaut : le dossier « web » a cote du script)
Aucune connexion Internet : le serveur n'ecoute que sur 127.0.0.1.
"""
import functools
import http.server
import sys
import webbrowser
from pathlib import Path
PORTS = range(8080, 8100)
def main() -> int:
root = Path(sys.argv[1]) if len(sys.argv) > 1 else Path(__file__).resolve().parent / "web"
if not (root / "index.html").is_file():
print(f"index.html introuvable dans {root}", file=sys.stderr)
return 1
handler = functools.partial(http.server.SimpleHTTPRequestHandler, directory=str(root))
for port in PORTS:
try:
server = http.server.ThreadingHTTPServer(("127.0.0.1", port), handler)
except OSError:
continue
url = f"http://localhost:{port}/index.html"
print(f"Les Aventuriers des mots : {url}")
print("Cliquer une fois dans la page pour activer le son. Ctrl+C pour arreter.")
webbrowser.open(url)
try:
server.serve_forever()
except KeyboardInterrupt:
pass
return 0
print("Aucun port libre entre 8080 et 8099.", file=sys.stderr)
return 1
if __name__ == "__main__":
sys.exit(main())