dashboard/app.py:
load_sim_config() retourne None (pas {}) quand le fichier est absent
— {} est falsy en Python, masquait le formulaire même quand la config
était chargeable mais vide. None est explicitement distinguable.
load_all_modes() charge toujours depuis sim_001.json (référence 5 modes)
— sim_002 n'a qu'un seul mode dans son bloc 'modes', le tableau comparatif
était vide pour S2.
{% if cfg is not none %} dans le template au lieu de {% if cfg %}
Message d'avertissement sous le bouton save : prise en compte au prochain jour
Message d'erreur précis si fichier introuvable (path + hint mount Docker)
/params/save: vérification if cfg is None
run.py:
Hot-reload config à chaque tick==0 (frontière de jour) :
cfg.load(config_path, session_id=SESSION_ID)
effective_mode mis à jour depuis la config rechargée
tick_sleep recalculé (TICK_SLEEP_SEC env var prime toujours)
→ Changer mode/drain/encounter via dashboard prend effet le jour suivant
sans redémarrer le process
Onglet SIMULATION:
- Switcher de session en haut (S1 / S2 / ...) avec indicateur status vert/rouge
- Countdown JS 30s avant auto-refresh (au lieu de meta http-equiv)
- Filtre cycle_tick des événements (trop verbeux)
Onglet PARAMÈTRES (/params?sid=N):
- Formulaire config: nom session, mode, tick_sleep, drain_speed, fatigue_hp,
encounter_rate, caps_multiplier, survie/rencontres activées
- POST /params/save → écrit sim_001.json / sim_002.json + UPDATE sessions SET mode
- POST /params/setstatus → active/pause/stop via DB (run.py sort au prochain tick)
- POST /params/resetday → remet current_day/current_tick en DB
- Tableau des modes avec drain/encounter/caps pour comparaison rapide
- Snippet de commande SSH pour relancer chaque session depuis terminal
Docker: monté /home/ubuntu/fallout-venice/src/config en rw dans le container
→ /params/save peut écrire les JSON directement