From 52adc93b257c1afadfce26e8829e6c37902a61aa Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Sun, 12 Apr 2026 00:10:10 +0000 Subject: [PATCH] fix: show running simulation correctly, stop old ones when starting new Frontend: - Load simulations now prioritizes running simulation over most recent - Clear signals before loading new simulation Backend: - When starting new simulation, stop any existing running simulation first - Previously would return existing running simulation (confusing UX) --- src/backend/app/api/simulate.py | 11 +++++------ .../src/routes/bot/[id]/simulate/+page.svelte | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/backend/app/api/simulate.py b/src/backend/app/api/simulate.py index d04bb45..ed7725d 100644 --- a/src/backend/app/api/simulate.py +++ b/src/backend/app/api/simulate.py @@ -131,11 +131,12 @@ async def start_simulation( .first() ) if existing_simulation: - # Return existing running simulation + # Stop the existing simulation first if existing_simulation.id in running_simulations: - engine = running_simulations[existing_simulation.id] - existing_simulation.signals = engine.get_signals() - return existing_simulation + running_simulations[existing_simulation.id].stop() + del running_simulations[existing_simulation.id] + existing_simulation.status = "stopped" + db.commit() settings = get_settings() simulation_id = str(uuid.uuid4()) @@ -163,9 +164,7 @@ async def start_simulation( config={ "token": config.token, "chain": config.chain, - "duration_seconds": config.duration_seconds, "check_interval": check_interval, - "auto_execute": config.auto_execute, }, signals=[], ) diff --git a/src/frontend/src/routes/bot/[id]/simulate/+page.svelte b/src/frontend/src/routes/bot/[id]/simulate/+page.svelte index 5535aa6..31e8b29 100644 --- a/src/frontend/src/routes/bot/[id]/simulate/+page.svelte +++ b/src/frontend/src/routes/bot/[id]/simulate/+page.svelte @@ -44,15 +44,17 @@ async function loadSimulations() { try { const simulations = await api.simulate.list(botId); - if (simulations.length > 0) { - const latest = simulations[0]; - setCurrentSimulation(latest); - if (latest.signals) { - addSignals(latest.signals); - } - if (latest.status === 'running') { - isRunning = true; + + // Find the most recent running simulation, or fall back to most recent + let current = simulations.find(s => s.status === 'running') || simulations[0]; + + if (current) { + setCurrentSimulation(current); + clearSignals(); + if (current.signals && current.signals.length > 0) { + addSignals(current.signals); } + isRunning = current.status === 'running'; } } catch (e) { console.error('Failed to load simulations:', e);